{"slug": "ai-s-memory-on-your-machine-under-your-control", "title": "AI's memory. On your machine, under your control", "summary": "EXXETA released exxperts, a local-first agentic runtime that gives users persistent AI rooms with approval-gated memory, knowledge bases, and artifacts, all stored as plain files on the user's disk. The tool runs locally without telemetry and offers both a web app and a CLI/TUI interface, positioning itself as a governed alternative to chat-based AI frontends.", "body_md": "exxperts gives you persistent AI rooms with governed, approval-gated memory: agents that remember you and your work across sessions, with every memory write approved by you. Everything runs and stays local: rooms, memory, knowledge base, artifacts, and usage data are files on your disk.\n\n**Memory you govern.** Rooms remember decisions, preferences, and context across sessions, but every memory write goes through an approval gate you control. No silent profile-building.**Local-first, verifiably.** Rooms, memories, knowledge base, artifacts, and token usage live as plain files under`~/.exxperts`\n\n. You can read, back up, or delete all of it. There is no telemetry: the only network traffic is what you use, meaning calls to your model provider, web research if you enable it, and any MCP connectors you add.**An agentic runtime, not a chat wrapper.** Rooms use curated tools (knowledge base, artifacts, local web research, MCP connectors) under a permission model scoped to each surface. Rooms never get an unrestricted shell.**One product, two surfaces.** The web app and the CLI/TUI share the same rooms, memory, and credential store; switch between them freely.\n\nIf you know [Open WebUI](https://github.com/open-webui/open-webui) or [AnythingLLM](https://github.com/Mintplex-Labs/anything-llm): those are excellent local chat/RAG frontends. exxperts is a different shape: a local agentic runtime focused on persistent, governed memory and auditable agent behaviour, not chat over your documents.\n\n| Surface | Launch | What you get |\n|---|---|---|\nWeb app |\n`exxperts web` |\nRooms with memory, KB, artifacts, web research, approvals, and the wallet. |\nCLI / TUI |\n`exxperts cli` |\nThe same rooms in your terminal, run from the folder you want as the workspace. |\n\nThe web app is the full product: AI setup, memory review and approvals, the wallet, connectors, and skills all live there. The CLI/TUI focuses on the rooms themselves. Bare `exxperts`\n\nopens a picker for the two surfaces (web app recommended). Product/app state stays local under `~/.exxperts/app`\n\n(`%USERPROFILE%\\.exxperts`\n\non Windows); embedded runtime provider/auth/model/session state lives under `~/.exxperts/agent`\n\n.\n\n- Local web workspace with landing page, persistent rooms, approvals, and wallet.\n- Rooms-only CLI/TUI sharing the same room runtime and governance.\n- User-created skills from the web UI.\n- Approval-gated memory, KB writes, and Markdown/HTML artifacts.\n- Markdown/Obsidian KB tools and local web search.\n- MCP connectors on web and CLI through a single proxy tool. Bring your own servers; see\n.`docs/mcp.md`\n\n- Local token/cost wallet from\n`~/.exxperts/app/usage.jsonl`\n\n.\n\nPrerequisites: [Node.js](https://nodejs.org) 20.6+ and npm. **On Windows, apply the two Git settings from the Windows quickstart before cloning.**\n\n```\ngit clone https://github.com/EXXETA/exxperts.git\ncd exxperts\nnpm install\nnpm run install:global   # builds, packs, and installs the exxperts commands (all platforms)\n```\n\nTwo things to expect: `npm install`\n\nalso fetches headless Chromium (~150 MB, one-time; skip it with `EXXETA_SKIP_BROWSER_INSTALL=1 npm install`\n\n), and `install:global`\n\nbuilds the whole app before installing `@exxeta/exxperts-app`\n\ninto your global npm prefix, so give it a few minutes.\n\nThen, from any shell:\n\n```\nexxperts web   # the web app: rooms, memory, wallet (current folder does not matter)\n\ncd /path/to/your/project\nexxperts cli   # the same rooms in your terminal, with this folder as the workspace\n```\n\nFirst run: open **AI setup** in the web app and sign in to your provider (Claude and ChatGPT subscriptions sign in with one click; API keys and OpenAI-compatible gateways also work; see [Model/provider setup](#modelprovider-setup)). Something not working? `npm run doctor`\n\nfrom the repo root checks every layer and prints the fix.\n\nNew here? [ docs/quickstart.md](/EXXETA/exxperts/blob/main/docs/quickstart.md) walks the whole path in about five minutes: install, connect your AI, first room, first memory. For an orientation on what the product is and how the pieces fit, read\n\n[.](/EXXETA/exxperts/blob/main/docs/how-exxperts-works.md)\n\n`docs/how-exxperts-works.md`\n\nSame on every platform, from the repo folder:\n\n```\ngit pull\nnpm install              # in case dependencies changed\nnpm run install:global   # rebuilds and reinstalls the global commands\n```\n\nThe global `exxperts`\n\ncommands then run the new version. If anything misbehaves after an update, or anytime, run `npm run doctor`\n\nfrom the repo folder. Developing from the clone instead of the global install? Update with `git pull && npm install && npm run build`\n\n.\n\nWindows is supported for both the web app and the CLI/TUI. Requirements:\n\n**Git for Windows ≥ 2.40**([https://gitforwindows.org](https://gitforwindows.org)).** Git Bash is required**: the agent's shell tool runs commands through`bash.exe`\n\n, which is discovered automatically in the standard Git for Windows install location (`C:\\Program Files\\Git\\bin\\bash.exe`\n\n) or on`PATH`\n\n.**Node.js 20.6+ (LTS recommended) and npm**([https://nodejs.org](https://nodejs.org)).** Windows Terminal**recommended for the CLI/TUI (legacy conhost is untested).\n\nOne-time Git settings before cloning (long paths matter because `node_modules`\n\ntrees exceed the 260-character `MAX_PATH`\n\n):\n\n```\ngit config --global core.longpaths true\ngit config --global core.autocrlf false   # the repo's .gitattributes manages line endings\n```\n\nThen install from PowerShell or Git Bash, with the same commands as everywhere else:\n\n```\ngit clone https://github.com/EXXETA/exxperts.git\ncd exxperts\nnpm install\nnpm run install:global\n```\n\nAnd run from any shell:\n\n```\nexxperts web   # web app\nexxperts cli   # CLI/TUI, run from the folder you want as workspace\n```\n\nWeb search works on Windows too: install Docker Desktop, then run `node scripts\\searxng.mjs start`\n\nonce from any shell. See [ docs/web-search.md](/EXXETA/exxperts/blob/main/docs/web-search.md).\n\nDeveloping from the clone without a global install? Use the shell-independent forms: `node bin\\exxperts-web.cjs`\n\n, `node bin\\exxperts-cli.cjs`\n\n, and `node scripts\\exxeta-web.mjs`\n\n(dev web app with server + Vite UI). The bash launchers in `scripts/`\n\nalso work from Git Bash.\n\nEverything runs locally. Full functionality is four layers; only the first is required:\n\n**Core app**: Node.js 20.6+ and npm, then the quick-start steps above.** Headless Chromium (~150 MB, one-time)**: downloaded automatically during`npm install`\n\n; lets rooms visually review the HTML decks they author and read JavaScript-rendered pages. If the download couldn't run, enable it later with`npx playwright install chromium`\n\n(or skip it during install with`EXXETA_SKIP_BROWSER_INSTALL=1 npm install`\n\n).**Web search**: a container engine plus a one-time setup command. See[Web search (optional)](#web-search-optional).** Model authentication**: provider sign-in or API keys. See[Model/provider setup](#modelprovider-setup).\n\n**Verify any setup with npm run doctor** from the repo root: it checks all of the above, plus MCP config and that outbound web fetches decode cleanly (corporate TLS-inspection proxies can corrupt responses), and prints the fix for anything missing.\n\n`install:global`\n\nwraps `npm run build && npm pack && npm install -g <tarball>`\n\n; the manual steps and one-off runs via `npm exec`\n\n(no global install) are documented in [ docs/packaging-local.md](/EXXETA/exxperts/blob/main/docs/packaging-local.md). If macOS returns\n\n`EACCES`\n\n, use a user-level npm prefix instead of `sudo`\n\n; that is also covered there. If a newer npm warns that install scripts were blocked (`allow-scripts`\n\n), the app still works. The blocked steps are the Chromium download (recoverable anytime with `npx playwright install chromium`\n\n) and cosmetic MCP page branding.Web search ships **disabled** and runs fully locally through a SearXNG container: no API key, no third-party search SaaS. Note: your search **queries** still go to public search engines, so avoid searching confidential client or internal content.\n\nTo enable: install [Docker Desktop](https://www.docker.com/products/docker-desktop/) or (lighter on macOS) [OrbStack](https://orbstack.dev), then from the repo directory run the one-time setup command and restart the app:\n\n```\n./scripts/searxng start        # macOS / Linux / Git Bash\nnode scripts\\searxng.mjs start # Windows (PowerShell or cmd)\n```\n\nSetup details, keeping it running across reboots, status/stop commands, and Windows notes: [ docs/web-search.md](/EXXETA/exxperts/blob/main/docs/web-search.md).\n\nRooms need a signed-in model provider before they can respond. Pick whichever path fits.\n\nFor subscription providers (Claude, ChatGPT Plus/Pro), launch the web app, open **AI setup**, and use the **Sign in →** button on the provider's profile card. The provider login opens in the browser, and credentials stay in the local credential store.\n\nFor an OpenAI-compatible gateway (a company LiteLLM or vLLM proxy, for example), everything happens in the web app: open **AI setup** → **Add another provider** → **Set up gateway**, enter the base URL and the model ids your gateway routes, pick the Learn/Review Memory model, then paste your token on the gateway's profile row. The terminal wizard still works if you prefer it:\n\n```\nexxperts web\nexxperts setup openai-compatible\n```\n\nWhen running from a repo clone, use the matching dev setup command instead of any globally installed command:\n\n```\n./scripts/exxperts-web\n./scripts/exxperts-cli setup openai-compatible\n```\n\nAny other provider the runtime knows (Google Gemini, Groq, Mistral, DeepSeek, OpenRouter, xAI, and ~25 more) can be added from the web app: open **AI setup** and use **Add another provider**, then sign in with a subscription where the provider offers one, or paste an API key. After signing in, approve the models that provider may use: the models available in rooms, plus the one that runs Learn and Review Memory (a default is suggested). Approval creates the provider's AI profile; without it, the provider is signed in but not usable in rooms.\n\nProvider API keys in your shell or repo `.env`\n\nalso work when running from the clone:\n\n```\nOPENAI_API_KEY=...\nANTHROPIC_API_KEY=...\n```\n\nSubscription/OAuth login also works from the terminal: run `exxperts cli`\n\n, then type `/login`\n\n. It offers the same provider list as the web app, including API-key entry. The web app and CLI/TUI share the same local runtime credential store, so either path signs in both. Approving models for a newly added provider happens in the web app's **AI setup**.\n\n```\nnpm install\nnpm run build\nnpm run doctor          # verify the setup\n./scripts/exxperts-web  # dev web app from this clone\n./scripts/exxperts-cli  # dev Exxperts CLI/TUI from this clone\n```\n\nPackaging does not change normal development. Keep using the repo scripts while editing code; repack/reinstall (`npm run install:global`\n\n) only to validate installed-product behaviour. On Windows, use the `node`\n\nequivalents from the [Windows quickstart](#windows-quickstart).\n\n- Distributed as an npm package built from the repo; no native installer yet.\n- No hosted multi-user/SSO/RBAC version yet; exxperts is a single-user, local product today.\n\n: canonical documentation index with audience and status labels.`docs/README.md`\n\n: install, connect, first room, first memory.`docs/quickstart.md`\n\n: what the product is and how the pieces fit.`docs/how-exxperts-works.md`\n\n: developer architecture and repo guide.`docs/developer.md`\n\n: web search setup and operations.`docs/web-search.md`\n\n: MCP connectors, with transports, config locations, and commands.`docs/mcp.md`\n\n: local npm package validation.`docs/packaging-local.md`\n\n: public-facing changelog.`CHANGELOG.md`\n\nexxperts is designed and built by **Borja Odriozola Schick** ([@borcho23](https://github.com/borcho23)) and **Fernando Pastor Alonso** ([@ferpastoralonso](https://github.com/ferpastoralonso)) at [Exxeta](https://exxeta.com), from the memory-engine architecture at its core to the product around it.\n\nexxperts is built on [Pi](https://github.com/badlogic/pi-mono) by Mario Zechner.\n\nContact: [borja.odriozola.schick@exxeta.ch](mailto:borja.odriozola.schick@exxeta.ch) · [fernando.pastor@exxeta.ch](mailto:fernando.pastor@exxeta.ch)\n\nIssues and pull requests are welcome. Before reporting a problem, run `npm run doctor`\n\nfrom the repo root and include its output; it often names the fix. For an orientation to the codebase, start with [ docs/developer.md](/EXXETA/exxperts/blob/main/docs/developer.md).\n\nexxperts is source-available under the [PolyForm Noncommercial License 1.0.0](/EXXETA/exxperts/blob/main/LICENSE): free to use, modify, and redistribute for any noncommercial purpose. Commercial use requires a separate license; contact Exxeta.\n\nThe bundled runtime under `runtime/`\n\nis derived from the open-source Pi project (v0.70.5, MIT); the upstream license is preserved in [ runtime/LICENSE](/EXXETA/exxperts/blob/main/runtime/LICENSE) and the fork is documented in\n\n[.](/EXXETA/exxperts/blob/main/runtime/NOTICE.md)\n\n`runtime/NOTICE.md`\n\nThird-party product names and logos in the connector directory are trademarks of their respective owners (glyphs from [Simple Icons](https://simpleicons.org), CC0), used for identification only and not covered by this repository's licence.", "url": "https://wpnews.pro/news/ai-s-memory-on-your-machine-under-your-control", "canonical_source": "https://github.com/EXXETA/exxperts", "published_at": "2026-07-12 19:44:13+00:00", "updated_at": "2026-07-12 20:05:33.264293+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "ai-infrastructure", "ai-ethics", "developer-tools"], "entities": ["EXXETA", "exxperts", "Open WebUI", "AnythingLLM", "Node.js", "Claude", "ChatGPT"], "alternates": {"html": "https://wpnews.pro/news/ai-s-memory-on-your-machine-under-your-control", "markdown": "https://wpnews.pro/news/ai-s-memory-on-your-machine-under-your-control.md", "text": "https://wpnews.pro/news/ai-s-memory-on-your-machine-under-your-control.txt", "jsonld": "https://wpnews.pro/news/ai-s-memory-on-your-machine-under-your-control.jsonld"}}