EXXETA/exxperts: local-first AI agents with approval-gated memory
Local-first AI agents with governed, approval-gated memory. Any model provider; MCP tools and web search built in. Nothing remembered without your say-so, nothing leaves your machine.
At a glance
- What is it?
- exxperts is a TypeScript agent runtime that keeps every memory as a plain file on your disk and writes nothing without an approval step. The design is coherent; the documentation on rollback and memory size limits is not there yet.
- Who is it for?
- Adopt exxperts if you want agent memory you can inspect as files, trace back to a conversation, and switch providers without losing. Skip it if you need a hosted multi-user service or an API-stable agent framework, since the package is marked private and the runtime is consumed through the CLI and web app rather than a documented library surface.
- Can I use it commercially?
- Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 1 day ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 17, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem exxperts solves: agent memory that writes itself
Most agent products accumulate state you cannot see. A chat thread grows a summary, a vector store fills up, and the next session starts from facts nobody reviewed. exxperts takes the opposite position and makes the write path the product. The README states the rule plainly: nothing enters memory without you.
The unit of work is a room, not a conversation. According to the README, a room is "the durable place where you set up your exxpert's tools, folders, connections, and skills." Rooms are persistent, each with its own governed memory, and the launcher screenshot in the README shows seven of them spanning topics like agent frameworks and a trip plan. That framing matters more than it first appears. A chat thread is disposable; a room is a container you return to, which is the only context in which long-term memory is worth curating.
The audience is narrower than "anyone using AI." This is for someone who already runs an agent daily, has been burned by a memory system they could not audit, and is willing to spend a few seconds approving what gets kept. If you want an agent that just remembers things for you, the approval gate is friction, not a feature, and the README does not offer a mode that turns it off.
How a room grows: work, remember, memorize
The README describes a three-stage cycle with a human checkpoint between each stage.
Work is the session itself. Inside a room the agent searches the web, reads pages, writes documents, decks and web pages, and runs background tasks. Which tools a room may use is a per-room decision.
Remember happens at the end of a session. The room proposes what is worth keeping, and the README says you steer it, edit it, or reject it. The approval-gate screenshot shows a proposal listing exactly what the room intends to remember before anything is written. This is the mechanism that separates exxperts from a summarization pipeline: the model drafts, the human commits.
Memorize is the consolidation step. After several sessions the room folds its notes into long-term memory, and the README states you review that update before it is written. So there are two distinct gates, one per session and one per consolidation, and both are blocking.
Two properties follow from that design. First, provenance is structural rather than bolted on: the README says every memory links back to the conversation it came from, and the memory page screenshot shows a provenance receipt on a saved fact that opens the originating conversation. Second, the growth chart is described as clickable time travel, letting you pick a day and read what the AI knew then. That is only possible because memories are timestamped records rather than overwritten embeddings.
The README also claims the full context behind any answer is inspectable. That is the strongest claim in the document and the one worth testing first, because it is what turns an agent from something you trust into something you can check.
Installing exxperts and running your first room
There are two paths. The desktop app is the one the README recommends for non-terminal users: a signed macOS .dmg for Apple Silicon and a Windows .exe installer, both linked from the releases page, plus portable zips for Windows and macOS. Download, open, connect a provider.
The terminal path is one command. On macOS or Linux:
curl -fsSL https://raw.githubusercontent.com/EXXETA/exxperts/main/install.sh | bashOn Windows, in PowerShell:
irm https://raw.githubusercontent.com/EXXETA/exxperts/main/install.ps1 | iexThe README states that prebuilt archives bundle the runtime and are checksum-verified for macOS Apple Silicon, Windows x64 and Linux x64. Anything else builds from source, which needs Git and Node.js 20.6 or later.
After install, start the web interface:
exxperts webThe README says your browser opens already signed in. Web search works out of the box through DuckDuckGo with no setup, and the README points to docs/web-search.md for its limits. Re-running the same command updates the installation.
Provider setup happens in the app under AI setup, or through a CLI /login flow. The repository's .env.example is explicit that API keys are for development and advanced use, and that most people connect a provider from the web app instead. The same file lists ANTHROPIC_API_KEY and OPENAI_API_KEY as the two key slots, and sets the web server default:
PORT=8787That is the port the web server listens on unless you override it. The .env.example also documents an optional knowledge-base hook, EXXETA_KB_VAULTS, which accepts either semicolon-separated name=path pairs or a JSON object, for pointing a room at Markdown or Obsidian vaults. And it notes that SearXNG is recommended for local CLI and web research, started with ./scripts/searxng start, after which you set EXXETA_SEARCH_PROVIDER=searxng and EXXETA_SEARCH_BASE_URL=http://127.0.0.1:8888. Those two keys are commented out in the example file, so they are opt-in.
Where the governed-memory model gets in the way
The approval gate is the whole thesis, and it is also the main cost. Every session ends with a review, and every consolidation ends with another one. For a room you use hourly, that is a recurring interruption the README does not claim to eliminate.
There is a second, subtler failure mode. Because nothing is written without approval, a rejected or skipped proposal is simply gone. The README documents editing and rejecting a proposal but says nothing about rollback, undo, or recovering a memory that was consolidated and later found to be wrong. It does mention that memory can be inspected, maintained and reset, and that wrong facts do not fossilize, so a reset path exists at some level of granularity. Whether that means resetting a single fact or an entire room is not stated, and that distinction decides how expensive a mistake is.
The same silence applies to scale. Nothing in the README or the .env.example describes a cap on how many memories a room can hold, what happens to retrieval quality as the store grows, or how consolidation behaves once a room has months of history. A local-first design pushes that problem onto your disk and your review time rather than a vendor's infrastructure. That is a reasonable trade, but it is a trade, and the documentation does not yet quantify it.
Finally, exxperts is the wrong tool if you need a shared memory across a team, a hosted service with an SLA, or an agent framework you import into your own application. The root package.json is marked private and the workspace layout is an application, not a published library.
exxperts compared with a plain MCP client
The closest comparison is not another agent product but the MCP client you are probably already using. A general MCP client gives the model tools and a conversation, and persistence is whatever the host application decides to keep. exxperts shares the MCP tool surface, but it adds a memory layer with an explicit write gate and per-fact provenance on top of it.
The difference in approach is where state lives and who authorizes it. In a typical MCP client, context is reconstructed each session from whatever the host retained, and you have no per-fact record of what was kept. In exxperts, memory is a first-class object with an approval step, a source conversation, and a timestamp you can revisit. The README's claim that everything a room is lives as plain files on your machine is the concrete expression of that: you can read the store without the application.
The trade is flexibility for auditability. A plain MCP client will let you wire up almost any tool combination quickly and will not ask you to approve anything. exxperts asks you to approve, and in exchange you get a record. If your work does not depend on the agent remembering you across sessions, the gate is pure overhead and a plain client is the better fit.
Licence, releases and what an upgrade costs you
exxperts is Apache-2.0, stated in the README badge, in the LICENSE file at the repository root, and in the license field of package.json. Apache-2.0 permits commercial use and modification and includes a patent grant. The repository also carries a NOTICE file, which Apache-2.0 requires redistributors to preserve. That is a description of the licence text, not legal advice; if you plan to redistribute a modified build, read the LICENSE and NOTICE yourself.
On maintenance: the last push was on 2026-09-11, and the most recent release, v0.11.2, was tagged the same day. The two releases before it, v0.11.1 and v0.11.0, landed on 2026-09-09 and 2026-08-31. That is a fast cadence across a minor version boundary, and the README states that re-running the install command updates the installation.
The upgrade cost is the open question. Three 0.11.x releases in under two weeks means the memory format is still moving, and the README does not document a migration path for existing room data. Since memory is stored as plain files, an incompatible change is recoverable if you back the directory up, but the README does not say where that directory is or what to copy. Until that is documented, treat a version bump as something to schedule rather than something to run unattended.
What to check before you trust the approval gate
The README makes four checkable claims: memory is opt-in, every fact has a receipt, the model's context is inspectable, and everything stays on your machine. The first three are verifiable in an afternoon. Create a room, run one session, reject the proposal, and confirm nothing persists. Then approve one, open the memory page, and follow the provenance link back to the conversation. Then ask a question and inspect the context behind the answer.
The fourth claim deserves more care because it has an exception the README itself names. It states there is no cloud account and no telemetry, and that nothing leaves your machine unless you send it. It then describes an optional remote mode, off by default, that serves your own paired devices over your private tunnel. That is a coherent design, but it means the boundary is your tunnel configuration, not the application. If your threat model includes your own network, verify what the remote mode exposes before enabling it.
The provider question is the last one. The README lists Claude, ChatGPT, Gemini, Mistral, or any OpenAI-compatible endpoint including local models, and says switching keeps everything the AI has learned. That claim rests on memory being provider-independent, which the file-based storage supports. Test it by switching providers mid-room and checking that the memory page still shows the same facts with the same provenance.
Editorial conclusion
Adopt exxperts if you want agent memory you can inspect as files, trace back to a conversation, and switch providers without losing. Skip it if you need a hosted multi-user service or an API-stable agent framework, since the package is marked private and the runtime is consumed through the CLI and web app rather than a documented library surface. Before committing, verify two things yourself: that the approval gate behaves as described when you reject a proposal, and what happens to a room's memory files after an upgrade between 0.11.x releases.
Frequently asked questions
What is exxperts and who is it for?
exxperts is a local-first AI agent runtime where memory is approval-gated: the agent proposes what to keep and nothing is written until you approve it. It targets people who run an agent regularly and want to audit what it remembers.
How do I install exxperts?
The README gives a one-command install for macOS and Linux, curl -fsSL https://raw.githubusercontent.com/EXXETA/exxperts/main/install.sh | bash, and a PowerShell equivalent for Windows. You can also download a signed desktop app for macOS Apple Silicon or Windows x64 from the releases page.
Which AI providers does exxperts support?
The README lists Claude, ChatGPT, Gemini, Mistral, or any OpenAI-compatible endpoint, including local models. Provider setup happens in the app under AI setup, or through a CLI /login flow, and the README says switching providers keeps everything the AI has learned.
Does exxperts send my data to the cloud?
The README states there is no cloud account and no telemetry, and that memory, conversations, credentials and attached files are plain files on your disk. It also documents an optional remote mode, off by default, that only serves your own paired devices over your private tunnel.
Can I undo a memory that exxperts saved?
The README says memory can be inspected, maintained and reset, and that wrong facts do not fossilize, but it does not document rollback or undo for an individual consolidated memory. Whether a reset applies to one fact or a whole room is not stated.
Community notes