
Fraise
io.github.FraiseHQ由 GitHub 账号 FraiseHQ 发布v0.3.7更新于 Nov 5, 2026
Memory database for AI agents: remember and recall over a running Fraise daemon, in FQL.
概览
Fraise 是面向 AI 智能体的本地记忆数据库,其 MCP 桥接让助手用 FQL 记住事实并召回。
- 可以做什么
- 记住一条事实,并按主题和实体归档到运行中的 Fraise 守护进程
- 按文本、主题或实体召回已存事实,按相关度与时间新旧排序
- 在多个以 @N 区分的独立记忆图中操作
- 也可通过 HTTP 接口或 Python SDK 调用同样的两个动词
- 适用场景
- 适合需要跨会话保留持久事实(早先的决定、偏好、项目背景)的智能体,并希望在步骤中途快速本地召回,而不是依赖托管记忆服务。
- 运行要求
- 注册桥接前需先运行 Fraise 守护进程(默认本地 9876 端口);桥接本身是本地 stdio 进程,可通过 Homebrew、Docker、Linux 软件包、Go 或发布二进制安装。未声明任何 API 密钥或环境变量。
安装
在 SourceWeft 中
- 打开 控制台中的 Fraise,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
Fraise
Docs · Discord · Query language · Issues
[Stars]
[Forks]
[Release]
[PyPI]
[License: MIT]
[CI]
[Python SDK]
[Coverage]
[OpenSSF Scorecard]
[Go Reference]
[Discord]
Fraise is a memory database for AI agents. One they query directly, in a language built for tokens, not humans.
Two verbs. One binary. No infrastructure to run.
Install
Linux packages, Docker, go install and signed release binaries are all in Get Started below.
Read Durability before you deploy. Persistence is issue #171 and the next major piece of work.
How it compares
Measured on LoCoMo — 10 multi-session conversations, 1,986 questions — with every system ingesting the same conversations, using the same extraction model and the same embedding model, and answering the same questions. k=10, full data, latest run per system as of 2026-10-11.
Fraise comes within 0.003 of the best recall, 31× faster than the one system that reaches it. Near enough the same evidence, in a fraction of the time. The token column is the price of that recall: the extractor (fraise-sdk 0.2.0) reads each message beside what the graph already holds, and that context is where the recall came from.
These come from agent-memory-benchmarks, an open harness — precision, recall and F1 across k ∈ {1, 3, 5, 10}, per category, every run tagged and reproducible from the tag. The full tables are in its RESULTS.md.
Why Fraise
- A query language agents can actually write. FQL has two verbs —
rememberandrecall— and one way to say each thing. Fewer degrees of freedom means fewer ways for a model to get it wrong, and fewer tokens spent saying it. - Hybrid retrieval. Facts are indexed for full-text, graph, and (optionally) vector search. One query, ranked across all three.
- Temporal by default. Recent memories outrank older ones, so recall is recency-aware without asking for it.
- The fastest system measured. 0.185 s p50 on LoCoMo, ahead of every other system and 31× faster than the one with matching recall. Remember and recall mid-step, while the user waits.
- No infrastructure. A single binary. No database to provision, no service to stand up beside it.
- Open source, MIT.
Status
v0.3.3. The core loop works end to end and the install paths are verified on clean machines. The benchmark row above was produced from this release. 0.4.0 (late October) changes the scorer and adds explain and describe; 0.5.0 (November) is persistence and forget.
Good for building agent memory today. Not yet for long term production use.
How it works
Fraise stores knowledge as a temporal memory graph built from three kinds of node:
- facts — the things you remember, one statement each
- entities — who or what a fact mentions
- topics — what a fact is about
Edges connect facts to the entities they mention and the topics they're about, so a query can start from either side. A recall finds seed facts by text and, optionally, by vector similarity; a recall that names only topics or entities starts from the facts filed under them. With depth:1 or depth:2, a named topic or entity whose facts matched better than its size predicts passes that evidence on to the rest of its facts. Results are ranked by relevance and recency, and the best top come back.
Ranking is not a black box: a fact's score folds its own match strength with what it receives through anchors carrying more mass than their size would predict, each measured against the facts the recall could return. The background rate that "more" is measured against is estimated per query, from the part of the graph the query touched, so there is no relevance constant to tune. Hybrid retrieval has the full model.
A single Fraise instance holds several independent memory graphs (8 by default), addressed with @N — one per user, per session, per agent, however you like.
Get Started
Fraise is a single binary — no database to provision, nothing to configure. Every route below leaves you with a server listening on port 9876, at localhost:9876.
With Homebrew
The service survives crashes and restarts on login (keep_alive), logs to $(brew --prefix)/var/log/fraise.log, and reads its config from $(brew --prefix)/etc/fraise/fraise.config.toml — installed with every setting commented at its default, and never overwritten on upgrade.
With Docker
Published tags: one per release, latest for the newest stable, edge for the tip of main, and an immutable full-commit-SHA tag for every merge that touches the server.
Images are built with SLSA provenance, verifiable without pulling:
With Go
The binary installs as server, after its package path — rename it to fraise if that reads better.
Nothing further is needed to trust this: the Go toolchain checks every module download against the public checksum transparency log, and your own machine compiles the result.
Linux packages
.deb and .rpm packages ship with every release, with a systemd user unit:
Logs go to the journal (journalctl --user -u fraise -f), and the unit reads ~/.config/fraise/fraise.config.toml when present — a shipped default with every setting commented lives at /etc/fraise/fraise.config.toml to copy from. For agents that outlive your login session, let the user manager keep running: loginctl enable-linger $USER. A system-level (shared server) variant of the unit is described in Running as a managed service.
From a release binary
Windows builds ship as .zip under the same naming scheme.
Verify a release
Releases carry a cosign signature over checksums.txt, using the same VERSION and BASE as above:
Run from source
Your first memory
Use it from an agent
MCP
fraise mcp is a stdio MCP server — a thin bridge to a running daemon, so any MCP client can remember and recall. It exposes two tools, recall and remember, and needs no flags when the daemon is on its default address.
Start the daemon first (brew services start fraise, or systemctl --user start fraise on Linux), then register the bridge with whichever coding agent you use.
Claude Code
That registers it for the current project; add --scope user to make it available in every project instead.
Codex
Or write it into ~/.codex/config.toml directly:
OpenCode
Add it to opencode.json in your project root:
Any other client
The bridge describes itself over MCP: each tool arrives with a description and a full JSON schema for its arguments and results — the FQL shapes, a worked example, what a score means — so a client knows what recall and remember do and how to call them without being told. What a tool description cannot carry is the policy: the habit of reaching for memory unprompted, and the judgement about what is worth keeping. That belongs in the file your agent already reads — CLAUDE.md for Claude Code, AGENTS.md for Codex and OpenCode — and two habits are enough: recall before answering anything that leans on earlier decisions or preferences, and remember only facts that will still matter in a later session, one self-contained fact per call with the topics and entities that will make it findable.
SDKs
Python (sdk/python) — the only SDK today:
The Python SDK is dependency-light and supports vector search when you supply an embedder. See its README for embeddings and the full API.
TypeScript — not available yet (#179). Until it lands, TypeScript callers use fraise mcp or talk to the HTTP endpoint directly; it is two verbs over one route, so a client is a short wrapper around fetch. See the HTTP API.
Claude Agent SDK
The Python SDK ships memory tools for the Claude Agent SDK, exposed as an in-process MCP server so the agent decides what to store and recall:
A complete, Docker-runnable agent lives in examples/claude-agent-sdk.
OpenAI Agents SDK
memory_tools(client) returns bound recall and remember tools:
A complete, Docker-runnable agent lives in examples/openai-agents.
References
Contributing
Contributions are welcome — see CONTRIBUTING.md for how to build, test, and submit changes.
Code of Conduct
This project follows the Contributor Covenant.
Community
Questions, ideas, or building something with Fraise? Join the Discord. Bugs and feature requests belong in issues so they don't get lost.
License
MIT — see LICENSE.
来源:README.md,提交 6f7cda9
工具
0版本历史
4- v0.3.7最新Nov 5, 2026
- v0.3.6Nov 1, 2026
- v0.3.5Oct 26, 2026
- v0.3.4Oct 18, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分