AI chat with 90+ tools, running locally on your machine.
Seren is an AI assistant that connects to multiple AI models (Claude, GPT, and more) through the Seren Gateway. It includes access to MCP (Model Context Protocol) tools for email, calendar, databases, web search, and dozens of other integrations.
One install command downloads the Seren Local runtime. Run serendesktop and the app opens in your default browser at http://localhost:19420. Everything runs on your machine — Seren hosts nothing except the Gateway API.
- AI chat with multiple models
- 90+ MCP tools via the Seren Gateway
- File explorer — browse, read, and edit local files
- AI coding agents — spawn Claude Code or Codex to work on your projects
- OpenClaw messaging — connect WhatsApp, Telegram, Discord, Slack, and Signal
- Crypto wallet — sign x402 payments with USDC on Base
- Persistent storage — conversations stored in a local SQLite database
- Publisher marketplace (Firecrawl, Perplexity, databases, and more)
curl -fsSL https://serendb.com/install.sh | shirm https://serendb.com/install.ps1 | iex- Downloads Node.js to
~/.seren-local/node/(if you don't have Node 20+) - Installs
@serendb/serendesktopvia npm into~/.seren-local/ - Adds
~/.seren-local/binto your PATH
serendesktopThe runtime starts on localhost:19420 and opens your browser automatically.
Remove the Seren directory:
rm -rf ~/.seren-localOn Windows:
Remove-Item -Recurse -Force "$env:USERPROFILE\.seren-local"- Node.js 20+
- pnpm
git clone https://github.com/serenorg/seren-local.git
cd seren-local
pnpm installpnpm dev # Start the SPA dev server on port 3000To develop the local runtime:
cd runtime
pnpm install
pnpm dev # Start runtime with hot reload on port 19420pnpm build:embed # Build SPA and copy to runtime/public/This builds the SPA and copies it into runtime/public/ so the runtime can serve it directly.
pnpm test # SPA unit tests
cd runtime && pnpm test # Runtime unit testspnpm build # Build SPA for production
cd runtime && pnpm build # Build runtimeThis project uses Biome (not ESLint/Prettier):
pnpm check # Check all
pnpm check:fix # Auto-fixseren-local/
src/ # Browser SPA (SolidJS + TypeScript)
components/ # UI components
services/ # API and service layer
stores/ # SolidJS reactive stores
lib/ # Core libraries (bridge, config, providers)
runtime/ # Local Node.js runtime
src/handlers/ # RPC handlers (fs, acp, openclaw, wallet, chat)
src/server.ts # HTTP + WebSocket server + embedded SPA serving
public/ # Built SPA (generated by build:embed)
tests/ # Runtime tests
scripts/ # Install scripts (macOS, Linux, Windows)
If you are an AI agent working on this codebase:
- The SPA is built with SolidJS (not React). Use SolidJS patterns:
createSignal,createStore,Show,For. - All API calls go through
src/services/. Never call fetch in components. - The bridge layer (
src/lib/bridge.ts) routes calls to either IndexedDB (offline) or the local runtime (when connected). - The runtime communicates via JSON-RPC over WebSocket on port 19420.
- The runtime serves the embedded SPA from
runtime/public/on the same port. - Use Biome for formatting and linting, not ESLint or Prettier.
- Never import from
@tauri-apps/*— this is a pure browser app.