Skip to content

johnkf5-ops/cecil-protocol

Cecil v2.1

A personal assistant that remembers.

Cecil is a memory layer for AI assistants. You talk to it, it remembers — not just what you said, but what you care about, what you committed to doing, and where you contradicted yourself. Over time it builds a structured model of your world: the people you mention, the projects you're working on, the beliefs you hold, and the things you said you'd do but haven't yet.

It uses all of that to give better answers, surface things you forgot about, and catch when you're saying one thing now but said something different last week.

Cecil runs as a standalone chat app, a Discord bot, a REST API, or an MCP server for Claude Code. One codebase, any platform.

What it looks like

You:    I'm thinking about shutting down the photography business
        and going all-in on the AI project.

Cecil:  That's a big shift. Three weeks ago you said the photography
        business was your "non-negotiable foundation" — your words.
        You also told me last month you wanted to hire a second
        shooter by June. Is that still on the table, or has
        something changed?

Cecil remembers what you said, when you said it, and whether it lines up with what you're saying now. It doesn't just retrieve — it reflects.

Quick Start

npm install
docker compose up -d    # starts Qdrant
cp .env.example .env    # set your LLM endpoint
npm run dev             # web UI at http://localhost:3000

Start talking. Cecil starts remembering.

Who this is for

Building a bot or agent? Use Cecil as the memory backend. One import gives your Discord bot, Slack bot, Telegram bot, or custom agent persistent memory with world model tracking.

Using Claude Code or Claude Desktop? Run npm run mcp and Cecil becomes a tool server. Ask it to recall, store, reflect, or list your open loops from inside Claude.

Want a personal assistant with memory? Run the web UI or Discord bot. Talk to it over days and weeks. It learns who you are without any setup.

Building something custom? Hit the REST API from any language. 11 endpoints cover chat, memory, world model, reflection, and maintenance.

Get started

I'm building a bot or agent

import { cecil } from "./cecil/client";

await cecil.init();

// One call: chat + memory update
const result = await cecil.turn([
  { role: "user", content: "Hey, remind me what I said about the project?" }
]);
console.log(result.response);

The full client API:

cecil.chat(messages)              // Chat with memory context
cecil.turn(messages)              // Chat + observe in one call
cecil.observe(messages, sessionId) // Run observer pipeline
cecil.recall(query)               // Search memory
cecil.store(content, options)     // Store a memory directly
cecil.reflect(sections?)          // Run reflection agent
cecil.maintenance(options?)       // Run memory hygiene
cecil.worldModel.entities(kind?)  // List tracked entities
cecil.worldModel.beliefs(status?) // List beliefs
cecil.worldModel.beliefsAsOf(date) // Beliefs valid at a point in time
cecil.worldModel.openLoops()      // List open loops
cecil.worldModel.contradictions() // List contradictions

I use Claude Code or Claude Desktop

npm run mcp

Add Cecil to your MCP config. This exposes recall, store, reflect, entities, contradictions, openLoops, and observe as tools.

I want the chat UI

npm run dev

Open http://localhost:3000 and start talking.

I want the Discord bot

npm run discord

Copy discord/personality/SOUL.md.example to discord/personality/SOUL.md and customize the personality.

I want to call the REST API

Run npm run dev and hit the endpoints:

Endpoint Method Description
/api/chat POST Send messages, get response
/api/observe POST Run observer on conversation
/api/reflect POST Run reflection agent
/api/memory GET Query/inspect memories
/api/entities GET List world model entities
/api/contradictions GET List contradictions
/api/open-loops GET List open loops
/api/maintenance POST Run maintenance pipeline
/api/onboard POST Optional onboarding (creates seed identity)
/api/ingest-podcasts POST Ingest podcast transcripts
/api/status GET Health check

How it works

Cecil has four core systems:

  1. Storage — Qdrant vector database (local) for semantic search + SQLite for structured state, provenance, and lifecycle history. Every memory is auto-tagged with a domain (technology, business, personal, creative, health, education, finance, entertainment, or general).
  2. Observe — After each session, the observer embeds conversations at three granularities (full session, individual messages, Q+A exchange pairs), extracts entities, beliefs, open loops, and contradictions into a structured world model. Every few sessions, a deeper synthesis pass detects patterns, updates the narrative, and computes drift.
  3. Recall — Ranked retrieval combining TF-IDF lexical scoring, semantic search, domain matching, evidence tiers, quality weighting, and recency boosting. Domain-matched results surface higher. Every recalled memory is tagged with its source and confidence level.
  4. Maintain — Deduplicates memory (exact + semantic), retires low-quality entries, detects stale commitments, refreshes the world model. Corrections are immediate — old fact retired, new fact embedded at highest priority.

What Cecil tracks

Cecil builds a world model from every conversation:

  • Entities — people, projects, organizations, places, topics
  • Beliefs — opinions, values, preferences you express (with temporal validity — Cecil knows when a belief was active and when it was revised)
  • Open loops — things you said you'd do but haven't followed up on
  • Contradictions — conflicting statements across conversations
  • Patterns — recurring themes detected by the observer

Cecil uses this to surface relevant context, catch inconsistencies, and remind you about things you forgot.

CLI tools

npm run dev                        # Web UI
npm run discord                    # Discord bot
npm run reflect                    # Reflection report
npm run reflect -- --contradictions # Just contradictions
npm run maintenance -- --dry-run   # Memory hygiene preview
npm run maintenance                # Run dedup, quality sweep, stale detection
npm run maintenance -- --semantic-dedup  # Run only semantic dedup
npm run mcp                        # MCP tool server
npm run world-model                # World model summary
npm run world-model -- --rebuild   # Rebuild world model from memories
npm run memory:inspect             # Browse memory
npm run memory:audit               # Memory health check

Requirements

  • Node.js 22+
  • Docker (for Qdrant)
  • Any OpenAI-compatible LLM endpoint (local or remote)

Documentation

  • Architecture — System design, data flow, storage layers
  • Features — Detailed feature breakdown
  • Security — Data handling, what's stored where, privacy
  • Testing — How to verify Cecil works
  • Conventions — Code style and contribution guidelines

License

Apache 2.0 — see LICENSE.