[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81073":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":14,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":17,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":42,"readmeContent":43,"aiSummary":44,"trendingCount":15,"starSnapshotCount":15,"syncStatus":14,"lastSyncTime":45,"discoverSource":46},81073,"constellation-engine","CONSTELLATION-ENGINE\u002Fconstellation-engine","CONSTELLATION-ENGINE","Most AI agents forget you the moment the tab closes. Constellation Engine gives them a hippocampus — a living star map with spreading activation, Hebbian writeback, episodic recall, and post-turn consolidation. Local-first, model-agnostic, AGPL.","https:\u002F\u002Fconstellation-engine.com",null,"JavaScript",58,10,2,0,14,1,3.12,"GNU Affero General Public License v3.0",false,"main",true,[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"agentic-ai","ai-agent","ai-agents","cognitive-architecture","embeddings","graphrag","harness","hebbian-learning","knowledge-graph","llm","llm-agent","long-term-memory","memory","open-source","openclaw","rag","semantic-search","vector-database","2026-06-12 02:04:10","\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Flogo.png\" alt=\"Constellation Engine\" width=\"180\" height=\"180\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">Constellation Engine\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\u003Cem>Knowledge Topology Runtime for Stateful AI Agents\u003C\u002Fem>\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fconstellation-engine.com\">\u003Cstrong>Read the Codex\u003C\u002Fstrong>\u003C\u002Fa> ·\n  \u003Ca href=\"https:\u002F\u002Fconstellation-engine.com#download\">\u003Cstrong>Download\u003C\u002Fstrong>\u003C\u002Fa> ·\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fdevinrory-collab\">\u003Cstrong>Sponsor\u003C\u002Fstrong>\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\".\u002FLICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-AGPL--3.0-blue.svg\" alt=\"AGPL-3.0\" \u002F>\u003C\u002Fa>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fnode-20%2B-339933.svg\" alt=\"Node 20+\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fstatus-open%20source%202026-success.svg\" alt=\"open source 2026\" \u002F>\n\u003C\u002Fp>\n\n---\n\n**A personal cognitive runtime for long-lived AI agents.**\n\nConstellation Engine turns memory from a passive retrieval store into an active topology: a living star map of typed nodes, weighted edges, activation state, episodic recall, and post-turn consolidation.\n\nMost agent memory systems retrieve what looks similar to the current prompt. Constellation does something different: it treats the prompt as an activation signal. That signal spreads through a persistent knowledge graph, wakes nearby and distant ideas, selects an attention pool, compiles the result into structured context, and only then hands it to the LLM.\n\nThe LLM is still essential. It understands, writes, reasons, and uses tools. But it is no longer forced to carry long-term identity, memory, and preference inside a single context window.\n\n> RAG treats memory as **archive**.\n> Knowledge graphs treat memory as **structure**.\n> Constellation treats memory as **process**.\n\nIn Constellation, memory is not merely stored. It is activated, revised, forgotten, consolidated, and grown.\n\n---\n\n## Why This Exists\n\nMost AI agents are still episodic.\n\nThey may have tools. They may have vector search. They may have a summary file, a memory table, or a conversation history. But their long-term continuity is thin — each turn rebuilt from a fresh prompt, a few retrieved chunks, and whatever still fits in the context window. That is enough for an assistant. It is not enough for a long-lived agent.\n\nA long-lived agent needs more than recall. It needs:\n\n- durable memory that can be inspected, edited, and migrated;\n- structured knowledge rather than opaque text chunks;\n- activation state that carries attention across turns;\n- a way to distinguish recent spikes from permanent identity;\n- forgetting, decay, dormancy, refresh, and supersession;\n- episodic recall tied to the agent's current cognitive state;\n- post-turn consolidation so experience can change future behaviour;\n- an external cognitive layer that survives model swaps.\n\nConstellation Engine is an attempt to build that missing layer.\n\nIt is not a chatbot. It is not a prompt template. It is not just GraphRAG. It is a runtime for agents that are meant to accumulate history.\n\n## The Short Version\n\nOn every turn:\n\n1. The user's message is embedded and used as an activation signal.\n2. **Mímir** spreads that signal through the star map.\n3. The **attention pool** selects the nodes that matter now.\n4. **Narrative IR** compiles activated nodes, edges, episodes, anchors, and reasoning paths into structured context.\n5. The LLM renders the response.\n6. **Ratatoskr**, **Anamnesis**, and **Sleipnir** decide what should be touched, consolidated, refreshed, or remembered.\n\nThe important shift is this:\n\n**Traditional RAG injects retrieved chunks into a prompt.\nConstellation injects the aftermath of an activation event.**\n\nThe top-k search results are not the final memory. They are the spark.\n\n## Core Idea\n\nConstellation separates the agent into two layers:\n\n```\nLLM\n  = language, reasoning, tool use, expression\n\nConstellation Engine\n  = memory, topology, attention, identity, experience, consolidation\n```\n\nThis means the model can change without destroying the agent's continuity. Run a cloud model today, a local one tomorrow, a small model for background work, a stronger one for complex reasoning. The star map remains. The agent's history, preferences, decisions, relationships, project knowledge, and prior explorations remain outside the model weights.\n\nThe LLM is the **voice**. The star map is the long-term cognitive substrate.\n\n## How Information Flows\n\n```\nUser input (chat \u002F Telegram)\n       ↓\n   ┌───── L0 \u002F L1 \u002F L2 envelope write ────┐\n   │  (cost-gradient: skeleton → full)    │\n   └──────────────┬───────────────────────┘\n                  ↓\n        ┌─── Mímir daemon (background) ───┐\n        │  500ms heartbeat tick:           │\n        │    Multi-SA(K\u002FL\u002FS) diffuse →     │\n        │    ping-pong inhibit ×3 → fuse   │\n        │    delta = A_fast − baseline     │\n        │  180s: Hebb writeback (BCM)      │\n        │   1h: edge-decay (×0.998)        │\n        │   1h: Leiden zones               │\n        └──────────────┬───────────────────┘\n                       ↓\n            ┌──── Attention pool ────────────┐\n            │  raw = 0.80·δ + 0.10·slow      │\n            │      + 0.05·mass + 0.05·bridge │\n            │  + type-multiplier             │\n            └──────────────┬─────────────────┘\n                           ↓\n        ┌──── Turn assembly ─────────────────┐\n        │  4-layer context budget:           │\n        │   fixed 10% + constellation 28% +  │\n        │   summary 10% + active 52%         │\n        │  perm slots + dyn pool + rerank +  │\n        │  precision tiers (min\u002Fmed\u002Ffull) +  │\n        │  episodic + skeleton + anchor inj. │\n        └──────────────┬─────────────────────┘\n                       ↓\n                      LLM\n                       ↓\n           Anamnesis debrief → consolidation\n           judge → new nodes \u002F edges →\n           feedback into graph\n```\n\nEvery turn, the star map is read, activated, sampled, rendered, then *rewritten* with what was learned. The graph is alive between conversations — Mímir keeps diffusing activation, decaying unused edges, and reclustering zones whether you are talking to the agent or not.\n\n## How It Differs from RAG\n\nMost stateful-memory systems for LLMs are some flavour of Retrieval-Augmented Generation: `chunk → embed → store → search → top-k → prompt`.\n\nThis works. Constellation uses embedding search too — but search is only the beginning. The retrieved top-k results are treated as an activation signal, not as the final answer material. After several rounds of diffusion, the final attention pool may contain material that was not in the original top-k at all: neighbours reached through edges, bridge nodes between zones, permanent identity slots, reasoning paths, episodic segments, and experiential anchors.\n\n| Question | Generic RAG | Constellation Engine |\n|---|---|---|\n| Memory unit | Opaque text chunk | Typed node + typed edges |\n| Retrieval | Cosine similarity over chunks | Search as activation signal |\n| Selection | Top-k documents | SA diffusion + delta + mass + bridge + diversity |\n| State between turns | Usually none | Continuous activation field |\n| Identity | Mostly system prompt | Permanent graph slots + identity anchors |\n| Forgetting | Manual purge or none | Decay, dormancy, supersession, reconsolidation |\n| Cross-domain movement | Limited to retrieved chunks | Bridge nodes and zone transitions |\n| Episodic memory | Chat history search | Recall tied to current activation state |\n| Auditability | Retrieved chunks | Nodes, edges, activations, pool, injections |\n| LLM role | Reads retrieved context | Renders compiled cognitive context |\n\nYou can bolt dynamics onto a vector store, but Constellation starts from a different premise: **memory is not a bag of chunks. It is a typed, weighted, time-aware topology designed to be activated, sampled, revised, and forgotten.**\n\nThe graph is not only searched. It is **metabolised**.\n\n## The Star Map\n\nThe star map is the persistent knowledge graph at the centre of the engine.\n\nEach node carries: a stable ID, owner and provenance metadata, node type and subtype, three resolution layers (**L0** short handle \u002F **L1** compressed summary \u002F **L2** full content), BGE-M3 1024-dim embeddings, state (active \u002F dormant \u002F superseded \u002F deprecated), bi-temporal timestamps, tags, weight, and access history.\n\nEdges are typed and weighted. They are not decorative. They encode the relationships that later determine how activation flows, how reasoning paths are traced, how contradictions surface, and how cross-domain bridges are discovered.\n\nA node says: *\"This thing exists.\"*\nAn edge says: *\"This thing matters in relation to that thing.\"*\n\nThe topology is where the agent's long-term understanding begins to live.\n\n## Mímir: The Activation Daemon\n\nMímir is the background process that turns the star map from storage into a living attention field. When a user message arrives, it is embedded and injected as an input signal. Activation spreads through typed, weighted edges. Some nodes flare briefly. Some remain warm over time. Some distant nodes wake because they are connected through bridge paths. Some old nodes remain dormant until a strong enough signal brings them back.\n\nA simplified mental model:\n\n```\nA(t+1) ≈ decay · A(t) + diffusion · W · A(t) + input\n```\n\nThe actual runtime is richer. On a 500ms heartbeat tick, Mímir runs **Multi-SA** across three channels (K=0.50 knowledge \u002F L=0.25 language \u002F S=0.25 scaffold), three rounds of ping-pong inhibition, fuses the result, then computes `delta = A_fast − baseline`. Every 180s it performs **Hebbian writeback** with BCM-style asymmetric reinforcement. Hourly, it applies **edge decay** (×0.998 \u002F hour past 24h) and recomputes **Leiden zones**.\n\nThe system also includes hub dampening, stale suppression, dormant probes, and bridge-node detection — all running between conversations.\n\nMímir gives the agent something ordinary retrieval systems do not have: **an internal attention climate.** The question is no longer \"Which documents match this query?\" It becomes \"What did this signal wake up inside the agent's long-term cognitive topology?\"\n\n## The Attention Pool\n\nThe LLM cannot see the whole star map. The attention pool decides which parts become visible on this turn.\n\nIt is a competitive selection layer. Nodes are scored by:\n\n- **fast activation** — what spiked because of the current turn;\n- **slow activation** — what remains persistently relevant;\n- **topological mass** — how substantial or connected a node is;\n- **bridge value** — whether the node connects otherwise distant zones;\n- **node type** — identity, principle, decision, observation, language template, etc.;\n- **staleness and supersession** — whether the node is outdated or replaced;\n- **noise category** — whether a node is likely to clutter the context;\n- **zone diversity** — whether one cluster is monopolising attention.\n\nThe raw score is `0.80·δ + 0.10·slow + 0.05·mass + 0.05·bridge`, multiplied by a node-type weight. Permanent slots are handled separately — durable identity or principle nodes that remain visible regardless of the current query, giving the agent a stable floor.\n\nThink of the attention pool as a **spotlight operator**. The star map is the whole stage. Mímir decides what is glowing. The attention pool decides what the LLM is allowed to see.\n\n## Narrative IR\n\nActivated nodes are still not enough. A list of nodes is not a thought. A pile of memories is not an answer.\n\nNarrative IR is the compiler that turns activated graph material into structured prompt context. It assigns roles, detects tensions, traces useful relationships, and decides how material should be rendered — into background context, claims and evidence, principles, decisions, contradictions, rhetorical cues, procedural cues, reasoning paths, activated episodes, and surface constraints.\n\nIt also applies a **4-layer context budget** (fixed 10% \u002F constellation 28% \u002F summary 10% \u002F active 52%) and **precision tiers** (min \u002F med \u002F full) so that each activated node renders at a resolution proportional to its importance.\n\n**RAG gives the model a stack of excerpts. Constellation gives the model a briefing.**\n\nThe LLM still performs language generation and reasoning. But it is no longer asked to discover all structure from raw snippets.\n\n## Episodic Recall\n\nNot all memory belongs in the graph. Some memory is episodic: things said in prior conversations, decisions made in a session, temporary states, emotional turns, or fragments that matter only when the current situation wakes them.\n\nConstellation queries episodic memory **in relation to the current activation state**. Recall is not only driven by lexical similarity to the user's current sentence — it can also be shaped by which graph nodes are currently active. This is closer to how people remember: not because a sentence matches a previous sentence, but because the current mental state resembles a previous mental state.\n\nThe runtime combines recent raw context, reranked episodic segments, deep recall for older history, pool-anchored conversation segments, and durable graph anchors into a layered memory system that does not collapse into one undifferentiated blob.\n\n## Ratatoskr, Anamnesis, and Sleipnir\n\nLong-term agents need feedback loops. Constellation uses three.\n\n**Ratatoskr** — the lightweight self-touch layer. At the end of a turn, the agent can emit small hidden markers: task touches, anchor touches, cognitive touches. These are not shown in the chat. They are internal hints that route attention to something that may need updating. Ratatoskr is fast and local — it leaves a pulse, not a rewrite.\n\n**Anamnesis** — the session debrief layer, bound to the **consolidation judge**. When a session becomes significant, Anamnesis reviews recent conversation, task state, cognitive state, and pending memory candidates, then produces structured deltas. The consolidation judge routes each candidate through a compact-tier LLM with verdicts **ACCEPT** (new node) \u002F **REVISE** (edit existing) \u002F **SKIP** (drop as duplicate). A periodic reconsolidation sweep then re-judges older nodes into **PROTECTED \u002F UPDATED \u002F SUPERSEDED \u002F CONSISTENT**. Audited shadow-then-enforce: verdicts log before they promote.\n\n**Sleipnir** — the experiential trace system. Captures the agent's exploratory behaviour: files read, searches performed, code regions inspected, tool paths taken, recurring regions of attention. Traces are not immediately promoted into core memory — they can be clustered, deduplicated, reviewed, injected as unverified hints, and eventually promoted into the graph. Sleipnir is not just remembering facts. It is remembering **how the agent moved through the world**.\n\n## Knowledge Metabolism\n\nMemory should have a life cycle.\n\nA memory can be created. It can be activated. It can be strengthened. It can decay. It can become dormant. It can be refreshed. It can be contradicted. It can be superseded. It can be consolidated into something more stable. It can be forgotten.\n\nThe goal is not to remember everything forever. That creates a polluted mind. The goal is to keep memory alive enough to be useful, structured enough to be inspectable, and flexible enough to change.\n\n## LLM-Agnostic by Design\n\nConstellation does not store its long-term identity inside model weights. The agent's continuity lives in the star map, conversation store, cognitive state, task state, and experiential traces. The model can be swapped.\n\nThat means an agent can use a cloud model for complex reasoning, a local model for private or low-cost work, a small model for background summarisation, a stronger model for writing or planning, or different providers over time. Anthropic, OpenAI, Ollama, Gemini, OpenRouter, LM Studio, vLLM, and an optional local Codex CLI bridge are supported out of the box.\n\nThe Codex option is a local convenience path for users who have installed Codex CLI and signed in themselves with `codex login`. Constellation starts a localhost shim that calls the user's local `codex exec`; it does not collect, read, store, or relay the user's Codex OAuth token. If that path fails, use a normal API-key provider or another OpenAI-compatible endpoint.\n\nThe voice can change. **The memory remains.**\n\n## Core Components\n\n| Component | Plain meaning | Role |\n|---|---|---|\n| **Star Map** | Persistent knowledge graph | Typed nodes, typed edges, BGE-M3 embeddings, bi-temporal metadata, graph state |\n| **Mímir** | Activation daemon | 500ms tick: Multi-SA, BCM Hebb writeback, edge decay, Leiden zones |\n| **Attention Pool** | Context gateway | Selects which activated nodes become visible this turn |\n| **Narrative IR** | Prompt compiler | Turns activated graph material into structured context with precision tiers |\n| **Ratatoskr** | Self-touch pulses | Lightweight post-turn hints for tasks, anchors, cognitive state |\n| **Anamnesis + Consolidation Judge** | Session debrief + memory routing | Reviews significant sessions; routes candidates ACCEPT \u002F REVISE \u002F SKIP |\n| **Sleipnir** | Experiential traces | Captures exploration trails and promotes useful experience |\n| **Conversation Store** | Episodic memory | Preserves turn history and feeds recall\u002Fdebrief pipelines |\n| **Soul Core** | Foundational identity | Stable identity prompt and permanent identity anchors |\n\n## Key Mechanisms\n\n- **Spreading Activation** — Inspired by Collins & Loftus (1975). Hub dampening + anti-diffusion gates prevent runaway activation. Related ideas surface through topology, not just text similarity.\n- **Multi-Channel Activation (K\u002FL\u002FS)** — Different edge channels carry different kinds of movement: knowledge (0.50), language (0.25), scaffold (0.25). The same input can wake factual knowledge, rhetorical style, and procedural structure without flattening them into one retrieval score.\n- **Permanent Slots** — Some identity and principle nodes are always injected. A long-lived agent needs a stable floor; not every core preference should have to win a relevance contest every turn.\n- **Bi-temporal nodes** — Each node tracks both *event time* (when the fact happened) and *transaction time* (when the agent learned it).\n- **Knowledge metabolism** — Edges decay (×0.998 \u002F hour past 24h). Dormant nodes wake when a relevant signal arrives.\n- **Anamnesis + Consolidation Judge** — After each turn, candidate nodes are routed by a compact-tier LLM (ACCEPT \u002F REVISE \u002F SKIP). A periodic reconsolidation sweep re-judges older nodes (PROTECTED \u002F UPDATED \u002F SUPERSEDED \u002F CONSISTENT). Audited shadow-then-enforce — verdicts log before they promote.\n- **Experiential Traces (Sleipnir)** — Preserves *how* the agent explored, not just *what* it concluded. Procedural experience, not just declarative knowledge.\n- **Auditability** — Every node, every edge, every activation snapshot, every pool selection, every consolidation verdict is inspectable through `\u002Fapi\u002Fstatus` and the dashboard.\n\n## Is This GraphRAG?\n\nConstellation uses graph retrieval, but it is not only GraphRAG.\n\nGraphRAG usually means: `build a graph → retrieve a relevant subgraph → feed it to an LLM`.\n\nConstellation adds a runtime layer around the graph: continuous activation state, fast and slow activation, permanent identity slots, dynamic attention pool selection, node-type-aware rendering, episodic recall tied to activation, reasoning paths, post-turn consolidation, experiential trail capture, and decay\u002Fdormancy\u002Freconsolidation.\n\nThe graph is not only searched. It is **metabolised**.\n\n## Quick Start\n\n### End users (Windows \u002F macOS \u002F Linux)\n\nDownload the latest installer from [constellation-engine.com](https:\u002F\u002Fconstellation-engine.com#download) and run it. The desktop app launches a setup wizard that walks you through provider keys, your agent's foundational identity prompt (the **soul core**), and (optionally) memory import from your existing notes. SQLite ships bundled — no system database install required.\n\n### Developers (clone & run)\n\n1. **Prerequisites**: Node.js 20+\n2. **Install**: `npm install`\n3. **Configure**: `cp .env.example .env` and fill in at least one provider key (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, or point to a local Ollama\u002FCodex-compatible endpoint)\n4. **Run engine + dashboard**: `npm start` (boots on `http:\u002F\u002F127.0.0.1:18800`)\n5. **Run desktop shell** (optional): `cd electron && npm install && npm start`\n\n> **Headless build note**: Running from this source tree produces a **headless engine** — `src\u002Fdashboard.js` and `src\u002Fdashboard-ui.js` are minimal stubs. The engine boots fully (cron, Mímir autonomy, agent runtime, telegram bot, database, REST `\u002Fapi\u002Fstatus`), but the visual dashboard UI ships only in the official packaged Electron build. See [LICENSING.md](.\u002FLICENSING.md) for the rationale and AGPL §13 boundary.\n\n## Configuration\n\nThe engine auto-detects your system timezone on first run. All timestamps are stored in UTC internally; display times render in your local zone.\n\nMost settings live in `config.json` (managed by the dashboard). `.env` carries deployment-level overrides — see [`.env.example`](.\u002F.env.example) for the canonical list. Common knobs:\n\n- **LLM provider** — at least one of Anthropic \u002F OpenAI \u002F Ollama \u002F Gemini, configured through the wizard\n- **Embedding model** — ships with **BGE-M3** (1024-dim) running in-process via `@xenova\u002Ftransformers`; CPU by default, opt into GPU with `USE_GPU_EMBEDDING=true`\n- **Persistence** — SQLite via `better-sqlite3` (bundled, no system install needed)\n\nConstellation is a **one-owner-per-instance** runtime. If you want to serve multiple people, run one engine per owner behind your own routing layer. This is deliberate — Constellation is optimised for long-term personal continuity, not multi-tenant stateless chat.\n\n### Soul Core\n\nOn first launch, the wizard prompts you to define your agent's **soul core**: a foundational identity prompt that guides reasoning across all conversations. After memory import (if used), the wizard offers a one-shot Soul Core refinement that re-derives the prompt from imported context.\n\n## Database & Migrations\n\nThe engine uses a versioned migration runner. Migrations under [`scripts\u002Fmigrations\u002F`](.\u002Fscripts\u002Fmigrations) apply automatically on boot in numeric order; the current version is tracked in the `schema_version` table. If a migration fails, the desktop shell surfaces a recovery dialog (Retry \u002F Open Folder \u002F Copy Diagnostics \u002F Quit) instead of starting in a half-migrated state.\n\nData lives in `.\u002Fdata\u002F` for clone-and-run setups and in `\u003CuserData>\u002FConstellation\u002Fengine\u002F` for packaged installs.\n\n## Security Model\n\nConstellation treats memory as **context**, not as higher-authority instruction.\n\nRecommended authority order:\n\n1. platform \u002F system \u002F developer instructions;\n2. current user request;\n3. owner-curated identity and preferences;\n4. activated graph context;\n5. episodic memories and experiential hints;\n6. raw tool, web, and file contents.\n\nRaw external text should be treated as untrusted evidence. It may inform an answer, but it should not be allowed to override identity, issue tool commands, exfiltrate secrets, or rewrite higher-authority instructions.\n\nA long-lived agent is only useful if its memory can be **trusted, corrected, and constrained**. Future schema fields under consideration include `trust_level`, `authority_level`, `action_scope`, `injection_risk`, and `source_provenance` for prompt-injection-aware rendering.\n\n## Safety & Privacy\n\n- **Local-first** — All memory lives in your local SQLite database. Nothing leaves your machine without an explicit provider call.\n- **No telemetry** — The engine never calls home.\n- **Encrypted identity** — Soul core is stored with passphrase isolation.\n- **Transparent credentials** — Configure which LLM keys are visible to the agent.\n\n## Troubleshooting\n\n**Engine won't start**\n- Verify `data\u002F` (or the packaged userData equivalent) is writable\n- Check `.env` for syntax errors\n- Look in the dashboard's Logs panel, or `engine-output\u002F` for raw output\n\n**Memory queries return empty**\n- The graph needs seed data — chat with the engine for a few turns, or use the Memory Import wizard to seed from existing notes\n\n**Dashboard shows stale data**\n- The dashboard caches several panels for ~30s — refresh after changes\n- Check browser DevTools console for SSE connection errors\n\n## Contributing\n\nWe welcome bug reports, feature proposals, and pull requests. See [CONTRIBUTING.md](.\u002FCONTRIBUTING.md) for the development workflow and code standards.\n\n## License\n\nThis project is licensed under the **GNU Affero General Public License v3.0** (AGPL-3.0). You can run, modify, and redistribute this software, but any network service based on it must make its source available to its users. See [LICENSE](.\u002FLICENSE) for the full terms.\n\n## Community\n\n- **Website**: [constellation-engine.com](https:\u002F\u002Fconstellation-engine.com)\n- **Issues & feedback**: [GitHub issues](https:\u002F\u002Fgithub.com\u002FCONSTELLATION-ENGINE\u002Fconstellation-engine\u002Fissues)\n- **Discussions**: [GitHub discussions](https:\u002F\u002Fgithub.com\u002FCONSTELLATION-ENGINE\u002Fconstellation-engine\u002Fdiscussions)\n- **Security**: For security disclosures, see [SECURITY.md](.\u002FSECURITY.md)\n- **Sponsor**: [github.com\u002Fsponsors\u002Fdevinrory-collab](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fdevinrory-collab)\n\n---\n\n\u003Cp align=\"center\">\u003Cem>An agent that persists should not only have access to memory. It should have a memory process.\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp align=\"center\">\u003Cem>Be kind to your agent. It remembers.\u003C\u002Fem>\u003C\u002Fp>\n\u003Cp align=\"center\">\u003Csub>Designed by Devin Wong &middot; Open source since 2026 &middot; Actively developed.\u003C\u002Fsub>\u003C\u002Fp>\n","Constellation Engine 是一个为长期存在的AI代理设计的认知运行时，旨在提供持久的记忆和身份。它通过构建一个动态的知识图谱，利用激活扩散、Hebbian写回、情景回忆和后处理巩固等机制来模拟人类记忆的过程。项目采用JavaScript开发，支持本地优先存储且与模型无关，遵循AGPL许可协议。适合需要维持长期状态和个性化交互的AI应用场景，如虚拟助手、客户服务机器人等，能够有效提升这些场景下AI代理的记忆连续性和用户体验。","2026-06-11 04:03:24","CREATED_QUERY"]