[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93154":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":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":28,"readmeContent":29,"aiSummary":30,"trendingCount":16,"starSnapshotCount":16,"syncStatus":31,"lastSyncTime":32,"discoverSource":33},93154,"exxperts","EXXETA\u002Fexxperts","EXXETA","Persistent AI rooms with governed, approval-gated memory: local-first, on your machine.","",null,"TypeScript",151,11,5,1,0,47,47.94,"Other",false,"main",[23,24,25,26,27],"agents","ai","local-first","memory","typescript","2026-07-22 04:02:08","\u003Cdiv align=\"center\">\n  \u003Cpicture>\n    \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs\u002Fassets\u002Fexxperts-logo-negative.png\">\n    \u003Cimg src=\"docs\u002Fassets\u002Fexxperts-logo.png\" alt=\"exxperts\" width=\"360\" align=\"center\" \u002F>\n  \u003C\u002Fpicture>\n\u003C\u002Fdiv>\n\n\u003Ch3 align=\"center\">Your AI's memory. On your machine, under your control.\u003C\u002Fh3>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FEXXETA\u002Fexxperts\u002Factions\u002Fworkflows\u002Fci.yml\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002FEXXETA\u002Fexxperts\u002Factions\u002Fworkflows\u002Fci.yml\u002Fbadge.svg\" alt=\"CI\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"LICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-PolyForm%20Noncommercial-blue\" alt=\"License: PolyForm Noncommercial\" \u002F>\u003C\u002Fa>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fnode-%E2%89%A520.6-brightgreen\" alt=\"Node.js 20.6+\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-macOS%20%7C%20Windows%20%7C%20Linux-lightgrey\" alt=\"macOS, Windows, Linux\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  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\u003C\u002Fp>\n\n![The exxperts launcher: seven persistent rooms from Project: Atlas launch to Trip: Japan 2026 and Family admin, each with its own governed memory](docs\u002Fassets\u002Fexxperts-rooms.png)\n\n## Why exxperts\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.\n- **Local-first, verifiably.** Rooms, memories, knowledge base, artifacts, and token usage live as plain files under `~\u002F.exxperts`. 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.\n- **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.\n- **One product, two surfaces.** The web app and the CLI\u002FTUI share the same rooms, memory, and credential store; switch between them freely.\n\nIf you know [Open WebUI](https:\u002F\u002Fgithub.com\u002Fopen-webui\u002Fopen-webui) or [AnythingLLM](https:\u002F\u002Fgithub.com\u002FMintplex-Labs\u002Fanything-llm): those are excellent local chat\u002FRAG 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![A persistent room researching local AI serving: web searches and the official docs appear as source chips above distilled notes](docs\u002Fassets\u002Fexxperts-room.png)\n\n![The approval gate: a checkpoint proposal shows exactly what the room will remember, and nothing is saved until you approve it](docs\u002Fassets\u002Fexxperts-checkpoint.png)\n\n## One product, two surfaces\n\n| Surface | Launch | What you get |\n| --- | --- | --- |\n| **Web app** | `exxperts web` | Rooms with memory, KB, artifacts, web research, approvals, and the wallet. |\n| **CLI \u002F TUI** | `exxperts cli` | The same rooms in your terminal, run from the folder you want as the workspace. |\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fassets\u002Fexxperts-cli.png\" alt=\"The exxperts CLI room picker\" width=\"700\" \u002F>\n\u003C\u002Fp>\n\nThe web app is the full product: AI setup, memory review and approvals, the wallet, connectors, and skills all live there. The CLI\u002FTUI focuses on the rooms themselves. Bare `exxperts` opens a picker for the two surfaces (web app recommended). Product\u002Fapp state stays local under `~\u002F.exxperts\u002Fapp` (`%USERPROFILE%\\.exxperts` on Windows); embedded runtime provider\u002Fauth\u002Fmodel\u002Fsession state lives under `~\u002F.exxperts\u002Fagent`.\n\n## Product capabilities\n\n- Local web workspace with landing page, persistent rooms, approvals, and wallet.\n- Rooms-only CLI\u002FTUI sharing the same room runtime and governance.\n- User-created skills from the web UI.\n- Approval-gated memory, KB writes, and Markdown\u002FHTML artifacts.\n- Markdown\u002FObsidian KB tools and local web search.\n- MCP connectors on web and CLI through a single proxy tool. Bring your own servers; see [`docs\u002Fmcp.md`](docs\u002Fmcp.md).\n- Local token\u002Fcost wallet from `~\u002F.exxperts\u002Fapp\u002Fusage.jsonl`.\n\n![The Connectors page: a verified MCP directory with one-click OAuth logins, shared between the web app and the CLI](docs\u002Fassets\u002Fexxperts-connectors.png)\n\n## Quick start\n\nPrerequisites: [Node.js](https:\u002F\u002Fnodejs.org) 20.6+ and npm. **On Windows, apply the two Git settings from the [Windows quickstart](#windows-quickstart) before cloning.**\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FEXXETA\u002Fexxperts.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` also fetches headless Chromium (~150 MB, one-time; skip it with `EXXETA_SKIP_BROWSER_INSTALL=1 npm install`), and `install:global` builds the whole app before installing `@exxeta\u002Fexxperts-app` into your global npm prefix, so give it a few minutes.\n\nThen, from any shell:\n\n```bash\nexxperts web   # the web app: rooms, memory, wallet (current folder does not matter)\n\ncd \u002Fpath\u002Fto\u002Fyour\u002Fproject\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\u002Fprovider setup](#modelprovider-setup)). Something not working? `npm run doctor` from the repo root checks every layer and prints the fix.\n\nNew here? [`docs\u002Fquickstart.md`](docs\u002Fquickstart.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 [`docs\u002Fhow-exxperts-works.md`](docs\u002Fhow-exxperts-works.md).\n\n### Updating\n\nSame on every platform, from the repo folder:\n\n```bash\ngit pull\nnpm install              # in case dependencies changed\nnpm run install:global   # rebuilds and reinstalls the global commands\n```\n\nThe global `exxperts` commands then run the new version. If anything misbehaves after an update, or anytime, run `npm run doctor` from the repo folder. Developing from the clone instead of the global install? Update with `git pull && npm install && npm run build`.\n\n## Windows quickstart\n\nWindows is supported for both the web app and the CLI\u002FTUI. Requirements:\n\n1. **Git for Windows ≥ 2.40** (https:\u002F\u002Fgitforwindows.org). **Git Bash is required**: the agent's shell tool runs commands through `bash.exe`, which is discovered automatically in the standard Git for Windows install location (`C:\\Program Files\\Git\\bin\\bash.exe`) or on `PATH`.\n2. **Node.js 20.6+ (LTS recommended) and npm** (https:\u002F\u002Fnodejs.org).\n3. **Windows Terminal** recommended for the CLI\u002FTUI (legacy conhost is untested).\n\nOne-time Git settings before cloning (long paths matter because `node_modules` trees exceed the 260-character `MAX_PATH`):\n\n```powershell\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```powershell\ngit clone https:\u002F\u002Fgithub.com\u002FEXXETA\u002Fexxperts.git\ncd exxperts\nnpm install\nnpm run install:global\n```\n\nAnd run from any shell:\n\n```powershell\nexxperts web   # web app\nexxperts cli   # CLI\u002FTUI, 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` once from any shell. See [`docs\u002Fweb-search.md`](docs\u002Fweb-search.md).\n\nDeveloping from the clone without a global install? Use the shell-independent forms: `node bin\\exxperts-web.cjs`, `node bin\\exxperts-cli.cjs`, and `node scripts\\exxeta-web.mjs` (dev web app with server + Vite UI). The bash launchers in `scripts\u002F` also work from Git Bash.\n\n## What to install for full functionality\n\nEverything runs locally. Full functionality is four layers; only the first is required:\n\n1. **Core app**: Node.js 20.6+ and npm, then the quick-start steps above.\n2. **Headless Chromium (~150 MB, one-time)**: downloaded automatically during `npm install`; 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` (or skip it during install with `EXXETA_SKIP_BROWSER_INSTALL=1 npm install`).\n3. **Web search**: a container engine plus a one-time setup command. See [Web search (optional)](#web-search-optional).\n4. **Model authentication**: provider sign-in or API keys. See [Model\u002Fprovider 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` wraps `npm run build && npm pack && npm install -g \u003Ctarball>`; the manual steps and one-off runs via `npm exec` (no global install) are documented in [`docs\u002Fpackaging-local.md`](docs\u002Fpackaging-local.md). If macOS returns `EACCES`, use a user-level npm prefix instead of `sudo`; that is also covered there. If a newer npm warns that install scripts were blocked (`allow-scripts`), the app still works. The blocked steps are the Chromium download (recoverable anytime with `npx playwright install chromium`) and cosmetic MCP page branding.\n\n## Web search (optional)\n\nWeb 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:\u002F\u002Fwww.docker.com\u002Fproducts\u002Fdocker-desktop\u002F) or (lighter on macOS) [OrbStack](https:\u002F\u002Forbstack.dev), then from the repo directory run the one-time setup command and restart the app:\n\n```bash\n.\u002Fscripts\u002Fsearxng start        # macOS \u002F Linux \u002F Git Bash\nnode scripts\\searxng.mjs start # Windows (PowerShell or cmd)\n```\n\nSetup details, keeping it running across reboots, status\u002Fstop commands, and Windows notes: [`docs\u002Fweb-search.md`](docs\u002Fweb-search.md).\n\n## Model\u002Fprovider setup\n\nRooms need a signed-in model provider before they can respond. Pick whichever path fits.\n\nFor subscription providers (Claude, ChatGPT Plus\u002FPro), 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\u002FReview Memory model, then paste your token on the gateway's profile row. The terminal wizard still works if you prefer it:\n\n```bash\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```bash\n.\u002Fscripts\u002Fexxperts-web\n.\u002Fscripts\u002Fexxperts-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` also work when running from the clone:\n\n```bash\nOPENAI_API_KEY=...\nANTHROPIC_API_KEY=...\n```\n\nSubscription\u002FOAuth login also works from the terminal: run `exxperts cli`, then type `\u002Flogin`. It offers the same provider list as the web app, including API-key entry. The web app and CLI\u002FTUI 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## Develop from the repo\n\n```bash\nnpm install\nnpm run build\nnpm run doctor          # verify the setup\n.\u002Fscripts\u002Fexxperts-web  # dev web app from this clone\n.\u002Fscripts\u002Fexxperts-cli  # dev Exxperts CLI\u002FTUI from this clone\n```\n\nPackaging does not change normal development. Keep using the repo scripts while editing code; repack\u002Freinstall (`npm run install:global`) only to validate installed-product behaviour. On Windows, use the `node` equivalents from the [Windows quickstart](#windows-quickstart).\n\n## Current limitations\n\n- Distributed as an npm package built from the repo; no native installer yet.\n- No hosted multi-user\u002FSSO\u002FRBAC version yet; exxperts is a single-user, local product today.\n\n## More docs\n\n- [`docs\u002FREADME.md`](docs\u002FREADME.md): canonical documentation index with audience and status labels.\n- [`docs\u002Fquickstart.md`](docs\u002Fquickstart.md): install, connect, first room, first memory.\n- [`docs\u002Fhow-exxperts-works.md`](docs\u002Fhow-exxperts-works.md): what the product is and how the pieces fit.\n- [`docs\u002Fdeveloper.md`](docs\u002Fdeveloper.md): developer architecture and repo guide.\n- [`docs\u002Fweb-search.md`](docs\u002Fweb-search.md): web search setup and operations.\n- [`docs\u002Fmcp.md`](docs\u002Fmcp.md): MCP connectors, with transports, config locations, and commands.\n- [`docs\u002Fpackaging-local.md`](docs\u002Fpackaging-local.md): local npm package validation.\n- [`CHANGELOG.md`](CHANGELOG.md): public-facing changelog.\n\n## Team\n\nexxperts is designed and built by **Borja Odriozola Schick** ([@borcho23](https:\u002F\u002Fgithub.com\u002Fborcho23)) and **Fernando Pastor Alonso** ([@ferpastoralonso](https:\u002F\u002Fgithub.com\u002Fferpastoralonso)) at [Exxeta](https:\u002F\u002Fexxeta.com), from the memory-engine architecture at its core to the product around it.\n\nexxperts is built on [Pi](https:\u002F\u002Fgithub.com\u002Fbadlogic\u002Fpi-mono) by Mario Zechner.\n\nContact: borja.odriozola.schick@exxeta.ch · fernando.pastor@exxeta.ch\n\n## Contributing\n\nIssues and pull requests are welcome. Before reporting a problem, run `npm run doctor` from the repo root and include its output; it often names the fix. For an orientation to the codebase, start with [`docs\u002Fdeveloper.md`](docs\u002Fdeveloper.md).\n\n## License\n\nexxperts is source-available under the [PolyForm Noncommercial License 1.0.0](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\u002F` is derived from the open-source Pi project (v0.70.5, MIT); the upstream license is preserved in [`runtime\u002FLICENSE`](runtime\u002FLICENSE) and the fork is documented in [`runtime\u002FNOTICE.md`](runtime\u002FNOTICE.md).\n\nThird-party product names and logos in the connector directory are trademarks of their respective owners (glyphs from [Simple Icons](https:\u002F\u002Fsimpleicons.org), CC0), used for identification only and not covered by this repository's licence.\n","exxperts 是一个本地优先的 AI 智能体运行时，提供持久化、受控的记忆管理能力。它支持创建多个独立的 AI 房间（rooms），每个房间拥有经用户显式批准才能写入的结构化记忆，所有数据（包括记忆、知识库、工件和使用日志）均以明文文件形式存储于本地磁盘（如 ~\u002F.exxperts），不上传、无遥测。核心特性包括审批门控记忆、基于权限的工具调用（如本地网页搜索、MCP 连接器）、跨 CLI\u002FTUI 与 Web 界面共享状态。适用于需长期协作、可审计行为、强数据主权保障的个人知识管理、项目研究或专业工作流场景。",2,"2026-07-12 02:30:05","CREATED_QUERY"]