INITE Brain
概览
作者提供的说明(英文原文)
Long-term memory for AI agents: a bitemporal knowledge graph with cited answers.
PopNx MCP 的三大支柱
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
- 用户评价i暂无评价评价功能将在后续阶段与账户功能一起开放
- 我们的基础检查i3 项中通过 3 项依据公开信息检查;尚未扫描代码
- 使用情况i非常新★ –
它能帮你做什么
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
- 连接方式: 在云端运行
- 传输方式: Streamable HTTP
- 分类: 搜索与 AI 记忆
安装
选择你使用的 AI 应用,然后复制设置。
安装之前
- 基础检查:3 项中通过 3 项
- 在作者的服务器上运行:你向它提出的内容会经过他们的服务器。
- 可以做 30 件事(工具) about_brain, how_to_connect, search_knowledge, search_multi_hop …
- 注册中心没有列出需要填写的密钥。
你需要
- 在云端运行无需安装任何东西,通过互联网连接
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
适用于网页版、桌面版和手机版 Claude:
- 打开 Settings → Connectors
- 点击 Add custom connector
- 粘贴下面的地址,然后点击 Add
- 如果要求登录,请登录作者的服务
https://brain.inite.ai/mcp在终端中运行这条命令
claude mcp add --transport http inite-brain-service https://brain.inite.ai/mcp或者自己复制设置
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"inite-brain-service": {
"url": "https://brain.inite.ai/mcp"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
或者自己复制设置
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"inite-brain-service": {
"type": "http",
"url": "https://brain.inite.ai/mcp"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
ChatGPT 只能连接互联网上的服务器:
- 打开网页版 ChatGPT → Settings → Connectors (Apps)
- 点击 Create 或 Add(部分套餐需要先在 Advanced 中开启 Developer mode)
- 粘贴下面的地址,起个名字,然后保存
- 如果要求登录,请登录作者的服务
https://brain.inite.ai/mcp菜单名称可能因套餐和版本不同而略有差异。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它能做什么
工具名称和描述与服务器在 2026年11月6日 报告的完全一致。这些内容由作者撰写,不是我们写的;我们以纯文本形式显示。
about_brainWhat this server is and what it can do, before you connect. Reads nothing and stores nothing.
how_to_connectThe two ways to authenticate, and what each is for. Reads nothing and stores nothing.
search_knowledgeSemantic search over the company knowledge graph: the facts the query is about, the links between their entities and what was left out. Apply asOf for historical "what was true on X" queries. Embedding model on this tenant: set per workspace.
search_multi_hopPlanner-LLM decomposes the query into ≤ maxHops anchored sub-queries; later hops are anchored to the running entity set. Built for questions that combine evidence across turns / sessions, or that require reasoning over multiple entities ("tenants who complained in April AND upgra
graph_retrieveResolves the named entities by canonical name, walks their 1-hop neighbourhood over knowledge_edge, and returns facts across seeds ∪ neighbours, optionally filtered by predicate hints. Works from entities named up front and returns what the graph holds around them ("who runs engi
synthesizeRuns hybrid search then feeds the retrieved facts to a generator LLM that produces a citation-bearing answer (each claim ends with [factId]); a verifier LLM then judges whether every claim is supported. Three guardrail modes: strict (default) returns null on partial / unsupported
memory_diffReturns everything brain learned, unlearned, or replaced between two ISO 8601 cursors [from, to). createdFacts = new active facts; retractedFacts = facts marked retracted in-window with no successor; changedFacts = facts that were superseded by another (carries before+after); new
get_entity_profileOne entity: canonical name, type and what brain holds about it now; detail "full" adds externalRefs, the ids of its records in the originating vertical.
get_entity_timelineChronological audit of all facts brain has learned about this entity, including retracted ones. Useful for "what did we know when" investigations.
summarize_entityReturns a short one-line briefing about the entity — name, type, the most-confident active facts, external refs — suitable for dropping into an LLM context window. Caches in-process (per companyId / entityId / asOf / styleHint) so a hot entity touched across many turns doesn't re
get_competing_factsReturns facts in COMPETING status — those the conflict resolver couldn't auto-supersede because two same-predicate bitemporal facts overlap in valid-time and are too cosine-close within margin. Grouped by (entityId, predicate); 2-fact groups are pairs the resolver left for adjudi
detect_contradictionDry-run preflight against fn::resolve_fact. Answers "if I were to record this fact right now, what would the resolver decide?" without writing to the database. wouldOutcome ∈ {INSERTED, SUPERSEDED, COMPETING, REJECTED}; reasoning explains which rule fired (semantics class, score
get_factRead a single fact as stored — predicate (aspect), object (statement), confidence, validity window, source attribution (vertical / recorder / conversationId), and lifecycle state. Retracted facts still resolve (retracted: true) — "why did I stop remembering this" is part of the t
get_fact_provenanceReturn the grounding provenance behind one fact: the verbatim conversation turns it was derived from (episodes, chronological, with char-span quotes when the deriver stamped them). When the server runs with the recursive-closure flag the response additionally carries derivedFacts
find_related_entitiesGet entities connected to the given one via the knowledge graph.
match_procedureCosine-matches procedural memory (curated 'how to' patterns the operator recorded) against a free-text context query. Returns top-K procedures sorted by similarity DESC then priority ASC. Surfaces the behaviour rules that apply to a context — e.g. "user asks about pricing" → "men
list_proceduresPaginated listing of procedural memory for admin/review UIs. Sorted by priority ASC, createdAt DESC. Set includeRetired=true to see soft-deleted rows.
search_communitiesCosine-matches the query against topic-community summaries — the coarse retrieval scope. A community is a cluster of related entities (label propagation over the entity graph) with one rolled-up summary. Suited to broad questions ("what do we know about X domain"): it returns an
list_communitiesPaginated listing of topic communities, largest first. Each row carries a label, a rolled-up summary, and the member count. Gives the knowledge map at a glance.
find_entity_communitiesReturns the topic communities a given entity is a member of. Places an entity in its broader context — which clusters / themes it participates in — and leads from one entity to the wider neighbourhood the cluster summarises.
whyReturn the design decisions, rationale, invariants and gotchas recorded against a code anchor — the non-derivable engineering "why" a parser cannot recover from source. The anchor is a SCIP-style symbol string ("pkg/namespace/symbol") or a file path ("repo/path/file.ts"). Pass as
recall_decisionsFind recorded design decisions / rationale / invariants / gotchas by NL topic ("why do we resolve facts through one gateway?"), across ALL code anchors — a semantic search over code-memory, rather than one known anchor. Returns matches with their code anchor + kind, ranked by rel
get_source_reputationReturn everything brain knows ABOUT a source (not its facts): the operator-declared identity (type, authLevel — authority in conflict resolution), the learned per-domain agreement rates (domain = predicate; null domain = the global blended rate; rates need >=8 samples before the
workspace_statusThe tenant this credential writes to (companyId, its display name, whether it is a personal workspace), what is already in its memory (entities, active facts, facts recorded in the last 7 days), how many Domain Packs are installed, for a user-bound connection who the user is in t
record_factRecords one fact about an entity directly; the memory settles it against the facts it holds (INSERTED / SUPERSEDED / COMPETING). Most facts arrive through ingestion.
link_entitiesInsert an edge between two entities. `kind` is the edge type — `identity_of` merges the `from` entity into `to` (cross-vertical identity reconciliation), other typed edges (`paid_for`, `mentioned_in`, `worked_with`, …) are surfaced in related-entity reads and contribute to PPR /
retract_factMark a fact as no longer believed. Cascades to facts derived from this one. Does not delete; the row remains for audit.
record_procedureRecord a 'how to' pattern that is surfaced when a similar context appears later. trigger = the context phrase the rule should match against (e.g. "user asks about pricing"); action = the behaviour to apply (e.g. "mention they're on platinum tier; they get 20% off"). priority orde
retire_procedureMark a procedural memory row as retired (sets retiredAt). A retired procedure is no longer matched or listed by default. For a rule that no longer applies — distinct from a hard delete because the row stays for audit.
record_decisionCapture the non-derivable engineering "why" about a code location: a design decision, its rationale, an invariant that must hold, or a gotcha. Anchored to a SCIP-style symbol or file path (NOT line numbers — survives edits). Stored as a bitemporal typed fact: re-recording a `deci
基础检查i
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日
- ✓ 通过
作者与仓库一致
注册名称已通过 GitHub 账户 inite-ai 验证,该账户拥有此仓库
- … 尚未检查
仍在维护
我们还没有从 GitHub 读取这个仓库
- … 尚未检查
有许可证
我们还没有从 GitHub 读取这个仓库
- ✓ 通过
端点有响应
在 589 毫秒内响应(HTTP 200)
- – 不适用
使用 OAuth 登录
无需登录
- ✓ 通过
工具描述中没有隐藏指令
已读取 30 个工具描述,未发现针对 AI 的隐藏指令
与“搜索与 AI 记忆”中的其他服务器比较i
- 星标数多于此分类中其他 5716 个服务器的 0%
- 发布到注册中心的时间比此分类中其他 5716 个服务器的 87% 更新
- 基础检查结果等于或优于此分类中其他 5716 个服务器的 100%
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
常见问题
INITE Brain 安全吗?
它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
它需要哪些密钥或代码?
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在我的电脑上运行还是在云端?
它在作者的云端运行。通过互联网连接,无需安装,但你发送的内容会经过作者的服务器。
它还在维护吗?
GitHub 仓库最后更新于–,最新版本(2.7.0)于5天前进入注册中心。
哪些应用可以使用它?
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
有什么可以替代它?
同一分类中有:Context7, Codebase Memory, Exa
替代选择
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Codebase Memory
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Exa
Connect AI agents to Exa for web search, content fetching, and multi-step research.
作者的 README
打开 README
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
INITE Brain
Open-source memory for AI agents: a bitemporal knowledge graph with provenance, over MCP and REST.
Website · Quick start · Architecture · Domain Packs · Getting started · Docs · Agent guide
Quick start
Needs Docker with Compose v2, openssl, and an OpenAI API key (the default model configuration). Runs the released image (linux/amd64 and linux/arm64) with SurrealDB; no clone, no build.
: "${OPENAI_API_KEY:?export OPENAI_API_KEY first}"
mkdir inite-brain && cd inite-brain curl -fsSLO https://raw.githubusercontent.com/inite-ai/inite-brain-service/main/docker-compose.quickstart.yml BRAIN_KEY="brain_$(openssl rand -hex 24)" KEY_HASH="$(printf %s "$BRAIN_KEY" | openssl dgst -sha256 -r | cut -d' ' -f1)" cat > .env <<EOF BRAIN_VERSION=2.4 OPENAI_API_KEY=$OPENAI_API_KEY BRAIN_API_KEYS='[{"keyHash":"sha256:$KEY_HASH","companyId":"co_demo","scopes":["brain:read","brain:write"]}]' SURREALDB_PASSWORD=$(openssl rand -hex 24) SURREALDB_SCOPED_PASS=$(openssl rand -hex 24) FORGET_HMAC_KEY=$(openssl rand -hex 32) EOF docker compose -f docker-compose.quickstart.yml up -d --wait export BRAIN_URL=http://localhost:3030 BRAIN_KEY curl "$BRAIN_URL/health" echo "API key (shown once, only its hash is stored): $BRAIN_KEY"
Then remember something and ask about it, or point an MCP client at http://localhost:3030/mcp with Authorization: Bearer $BRAIN_KEY. BRAIN_VERSION takes X.Y (newest patch of that release) or vX.Y.Z; :latest is overwritten by the main-branch deploy. The first start downloads the local ONNX models into a volume, so the first write can take a few minutes; later ones do not. Hosted service, running from source, and production: Getting started.
Why not Mem0, Zep or Letta?
- Mem0 is quicker to adopt: an add/search API, a managed platform and many framework integrations. Brain asks for more up front (a tenant, scoped keys,
userIdon personal memory) and in exchange keeps both valid time and knowledge time on every fact. A conflicting write supersedes the earlier fact or is parked asCOMPETING; it does not silently overwrite. - Zep (Graphiti) is the closest design: Graphiti is also a temporal knowledge graph, and you can embed it as a Python library over a graph database. Choose it if you want memory inside your own process. Brain is a service: a separate database per tenant, API keys scoped to read, write and admin, PII controls, and GDPR
forget_entitywith tombstones. - Letta is an agent runtime in which the agent edits its own memory. Use it when you want the agent loop and its memory in one server. Brain is memory only: the agent stays in Claude Code, Cursor, Codex or your own code and reaches Brain over MCP (Streamable HTTP, or the stdio shim
@inite/brain-mcp). - Answers can abstain.
synthesizeends each claim with the id of the fact it rests on, a verifier checks the support, and strict mode returns no answer rather than an unsupported one. Each fact keeps a pointer to the conversation or document it came from. - No borrowed benchmark numbers. We do not set our memory-accuracy results against other systems' self-reported scores, which mostly use lenient judges. How we measure: docs/eval-protocol.md.
Part of the INITE Triad: Brain verifies the tokens INITE Auth issues, as INITE Billing does; the contract between them is the Triad contract. Run all three with one compose file: inite-ai/inite-triad.
What Brain is
Brain gives an agent memory between conversations: what was said, what changed, which entities are involved, and what supports an answer. A bitemporal graph stores structured facts and relationships; source episodes preserve context; scenes and beliefs capture events and evolving state. Domain Packs adapt that memory to a product's vocabulary and lifecycles without forking the engine.
Run Brain on your infrastructure or connect to the hosted service at brain.inite.ai. The web app provides memory search and exploration; REST and MCP provide the integration surface.
Why Brain
- Memory with its context. Retrieve structured facts, source passages and, when enabled, scenes and beliefs. Follow provenance back to the supporting conversation, document or evidence fragment.
- Changes stay inspectable. Facts carry valid time and knowledge time. Updates can supersede earlier facts; unresolved disagreements remain
COMPETING. Retraction preserves history; administrative forgetting deletes associated records and leaves tombstones. - A model of your domain. Packs define typed predicates, extraction guidance, scene schemas, state transitions, verification and retention hints, and optional media capabilities and MCP tools.
- Scope is explicit. Each tenant has a separate database. Personal memory uses
userId; omitting it selects tenant-global memory. Key scopes, ABAC policies and PII controls further constrain access. - Answers can be checked. Hybrid search, graph retrieval and multi-hop gather evidence. Synthesis cites it and runs verification; strict guardrails can abstain when support is insufficient.
Architecture
Brain separates source material, derived memory and the read path. This is a conceptual view; individual ingestion routes and retrieval profiles activate different parts of it.
flowchart LR
input["REST / MCP conversations · documents · facts"] raw[("Source records documents · episodes · evidence")] derive["Indexers and scene builders candidates · entity resolution · conflicts"] memory[("Connected memory on SurrealDB facts + graph · scenes · beliefs")] retrieve["Retrieval semantic + lexical · graph · multi-hop"] answer["Synthesis + verification answer with citations or abstention"] packs["Domain Packs vocabulary · memoryModel · tools"] media["Evidence registration / upload scan hook · trusted processors"] input --> raw input --> derive media --> raw raw --> derive derive --> memory memory --> retrieve raw --> retrieve retrieve --> answer packs -. "domain configuration" .-> derive packs -. "capabilities and consent" .-> media
| Memory layer | What it preserves |
|---|---|
| Facts and entities | Typed claims, canonical entities, relationships, confidence, source attribution and temporal history. |
| Episodes | Source turns and conversation context that derived memory can point back to or be rebuilt from. |
| Scenes | Bounded events with gists, entities, state changes and source links. Optional gist embeddings and a scene retrieval lane make them searchable alongside other evidence. |
| Beliefs | Derived state with revision history and supporting scenes. Pack-projected state deltas can feed belief promotion. |
| Evidence | Assets, located fragments, processing runs and derived representations, with links to the memories they support. |
Rebuildable memory. Derived worlds can be rebuilt from retained episodes in a staging version. Readers stay pinned to the previous world until promotion. Scene maintenance can process dirty conversations on a schedule, with budgets, leases and metrics; it can compose scenes and promote supported beliefs.
Configurable retrieval. Retrieval profiles select mechanisms for the corpus and question. Semantic and lexical search, graph expansion, reranking, raw passages, scene retrieval and belief retrieval are distinct capabilities. A known entity can enter through graph_retrieve; a question spanning relationships can use search_multi_hop.
Separate serving and background work. The NestJS service uses a SurrealDB-backed job queue, leases and worker-thread offloads. Run the image as one process or split PROCESS_ROLE=api|worker; see the operations guide.
The code includes capabilities that are opt-in, not a promise that every installation runs every layer. Scene construction, scene serving, belief promotion, evidence upload/processing and pack projections have separate gates. Check the architecture, operations and flag definitions for scenes, evidence and pack projections when enabling them.
Domain Packs
A pack is a versioned JSON manifest installed per tenant. It tells the engine how to interpret a domain's material. Pack-derived observations remain candidates for the core pipeline to validate and resolve.
| A pack can declare | Purpose |
|---|---|
predicates | Typed vocabulary, value constraints, conflict semantics, decay and PII classes. |
| extractionProfile, `evalFi
只显示了开头部分;其余内容请在仓库中阅读