An open source AI desktop client built with Tauri, SolidJS, and Monaco Editor. Chat with AI models, run coding agents, manage databases, and connect to messaging platforms — all from one app.
- Multi-model support — Claude, GPT-4, Gemini via Seren Gateway or direct API keys
- Smart model routing — Satisfaction-driven model selection using Thompson sampling
- Auto-reroute on failure — Falls back to satisfaction-ranked model on 408/timeout errors
- Task classification — Routes prompts to the optimal worker (chat, agent, or publisher)
- Free tier included — Start chatting with Gemini 2.0 Flash (Free), no payment required
- Multi-tab conversations — Work on multiple chats simultaneously
- Streaming responses — Real-time token-by-token output
- Thinking display — Toggle chain-of-thought reasoning visibility
- Query cost tracking — Shows Gateway cost alongside response duration
- Image attachments — Attach images to chat messages
- Voice input — Speech-to-text via Seren Whisper publisher with auto-submit option
- Slash commands —
/command autocomplete with/login,/clear,/new,/copy - Satisfaction signals — Thumbs up/down feedback that trains the model router
- Semantic code context — AI retrieves relevant code from your indexed codebase
- Smart balance warnings — Prompts to top up or switch to free model when low on credits
- Conversation persistence — Chat history saved locally
- Multi-agent support — Run Claude Code and Codex agents side by side
- Multiple concurrent sessions — Tabbed interface with agent type picker
- Inline diff review — Monaco diff editor with accept/reject for file edits
- Tool execution — Agents read files, execute commands, and make edits
- Permission system — User approval for sensitive operations with risk levels
- Sandbox modes — ReadOnly, WorkspaceWrite, or FullAccess execution tiers
- GPG signing support — Sandbox allows gpg-agent access for signed commits
- Prompt queue — Sequential message queuing during active agent prompts
- Cancel with cleanup — Force-stop agents, clear tool spinners, flush queued messages
- Auth error detection — Auto-launches
claude loginwhen authentication is needed - Automatic failover — Instantly switches to chat mode when agent hits rate limits or context limits
- Agent tasks — Background task monitoring panel for agent operations
- CLI auto-installer — Automatic installation of Claude Code and Codex CLI tools
- Thinking animation — Bouncing dot indicator with rotating status words
- Embedded runtimes — Bundled Node.js, npm, and ACP binaries (no PATH conflicts)
- Threaded conversations — Sidebar with persistent chat and agent threads
- Folder grouping — Threads grouped by project directory
- Running indicators — Pulsing green dot for active agents across folder groups
- Thread persistence — Active threads persist across folder switches
- AgentSkills.io standard — Standards-compliant skill format with SKILL.md metadata
- Three-tier hierarchy — Global defaults, project defaults, and thread-level overrides
- Skill discovery — Browse available skills from
https://github.com/serenorg/seren-skills - One-click installation — Install skills directly from the catalog
- Slash command invocation — Activate skills with
/skill-namein chat or agent threads - Thread-level management — Enable/disable skills per conversation
- Project-scoped skills — Skills can be project-specific via
.seren/skills.json - Built-in skills — Polymarket Bot, Skill Creator, Getting Started, Playwright, Apollo
- Skill source — Built-in skills are provided by the public repo at
https://github.com/serenorg/seren-skills.
- Persistent semantic memory — Stores conversation context across sessions
- Automatic recall — AI retrieves relevant memories during conversations
- Project-scoped — Memories organized by project for better context
- Hybrid retrieval — Vector search + full-text search + graph relationships
- Cloud sync — Syncs to memory.serendb.com for cross-device access
- Privacy controls — Enable/disable in settings, stored encrypted locally
- Memory types — Conversation, code patterns, error fixes, user preferences
- Multi-platform agents — Connect AI to Discord, Slack, Telegram, and more
- Per-channel trust levels — Auto-respond, mention-only, or approval-required
- Agent mode per channel — Choose which AI model handles each channel
- Message approval workflow — Review and approve agent responses before sending
- Channel connection wizard — Guided setup for new messaging channels
- Process lifecycle management — Start, stop, restart with crash recovery
- Monaco Editor — Full VS Code editing experience
- Syntax highlighting — 100+ languages supported
- Multi-file tabs — Open and edit multiple files
- Cmd+K inline editing — AI-powered code modification with streaming diff preview
- Context menu actions — Right-click to add code to chat, explain, or improve
- Markdown preview — Live preview for
.mdfiles - Image viewer — View images inline
- PDF viewer — Read PDF documents
- AI-powered embeddings — Index your entire codebase with SerenEmbed
- Instant vector search — Local sqlite-vec storage for zero-latency retrieval
- Automatic context injection — AI gets relevant code context during conversations
- Language-aware chunking — Smart code splitting for Rust, TypeScript/JavaScript, Python
- File watcher integration — Automatic re-indexing on save
- Hash-based change detection — Only re-index modified files
- Tree navigation — Browse local directories
- File operations — Create, rename, delete files and folders
- Context menu — Right-click actions
- Dotfile support — Show/hide hidden files
- Project management — Create and delete SerenDB projects
- Branch navigation — Browse project branches
- Connection strings — Copy database connection strings
- Organization support — Multi-org project creation
- 90+ built-in tools — Gateway MCP via mcp.serendb.com
- Tool execution — Run tools with approval workflow
- Resource browsing — Access MCP server resources
- Multi-server support — Connect to multiple MCP servers
- OAuth flows — MCP server and publisher OAuth authentication
- x402 payments — Automatic micropayments for premium tools
- Browse APIs — Discover AI-accessible services
- Publisher details — View pricing, capabilities, usage
- Quick connect — One-click publisher activation with OAuth
- Connection status — Visual indicators for authenticated publishers
- SerenBucks — View balance and transaction history
- Daily claim — Free daily SerenBucks credits
- Stripe deposits — Add funds via credit card
- Auto top-up — Configure automatic balance refresh
- Crypto payments — x402 USDC payments on Base network
- In-app updates — Check for and install updates without leaving the app
- Download progress — Progress bar with quips during update download
- Cross-platform — Signed updates for macOS, Windows, and Linux
- Cloudflare R2 — Fast, reliable update distribution with zero egress fees
- Automatic signature verification — Cryptographically signed updates
- Encrypted storage — Tokens stored via Tauri secure storage
- Sandboxed execution — macOS seatbelt profiles for agent commands
- Targeted deny lists — Private keys blocked, GPG agent access preserved
- Secure IPC — Tauri's secure inter-process communication
- HTTPS only — All API calls over TLS
# Clone the repository
git clone https://github.com/serenorg/seren-desktop.git
cd seren-desktop
# Install dependencies
pnpm install
# Run in development mode
pnpm tauri dev# Unit tests (Vitest)
pnpm test
# Lint and format (Biome)
pnpm check
# Rust tests
cargo test --manifest-path src-tauri/Cargo.toml# Build for production
pnpm tauri buildBuilds are available for:
- macOS —
.dmg(Apple Silicon & Intel) - Windows —
.msi/.exe - Linux —
.deb/.AppImage
Seren Desktop is the open source client. It connects to Seren's proprietary Gateway API for:
- Authentication & Billing — SerenBucks payment system
- AI Model Access — Claude, GPT, Gemini, and other models
- Publisher Marketplace — Firecrawl, Perplexity, databases
- MCP Server Hosting — Email, calendar, CRM actions
- SerenDB — Serverless PostgreSQL databases
Think of it like VS Code (open source) connecting to the Extension Marketplace (proprietary).
┌──────────────────────────────────────────────────────────┐
│ Seren Desktop (Open Source) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ AI Chat │ │ Editor │ │ Database │ │ OpenClaw │ │
│ │ + Voice │ │ Monaco │ │ SerenDB │ │ Discord │ │
│ │ + Images │ │ + Cmd+K │ │ │ │ Slack │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ ACP │ │ MCP │ │ Wallet │ │ Catalog │ │
│ │ Claude │ │ 90+ Tools│ │ Payments │ │ Browser │ │
│ │ Codex │ │ + OAuth │ │ + Crypto │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │Orchestr. │ │ Indexing │ │ Sandbox │ │ Skills │ │
│ │ Router │ │sqlite-vec│ │ Terminal │ │AgntSkills│ │
│ │ Classify │ │ │ │ │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ │
│ │ Memory │ │ Tasks │ │
│ │Cross-sess│ │ Agent Ops│ Backend: Rust/Tauri │
│ │ Vector │ │ │ Frontend: SolidJS/TypeScript │
│ └──────────┘ └──────────┘ Embedded: Node.js + npm + ACP│
└─────────────────────────┬────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ Seren Gateway (Proprietary) │
│ • api.serendb.com │
│ • Authentication & billing (SerenBucks) │
│ • AI model routing (Claude, GPT, Gemini) │
│ • Publisher ecosystem (100+ services) │
│ • MCP server hosting (mcp.serendb.com) │
│ • SerenDB serverless PostgreSQL │
│ • SerenEmbed API (embeddings) │
│ • SerenWhisper API (speech-to-text) │
│ • SerenMemory API (memory.serendb.com) │
│ • Skills repo (github.com/serenorg/seren-skills) │
└──────────────────────────────────────────────────────────┘
seren-desktop/
├── src/ # SolidJS frontend
│ ├── components/
│ │ ├── acp/ # Permission dialog, diff proposals
│ │ ├── auth/ # SignIn
│ │ ├── chat/ # Chat, agents, voice input, thinking display
│ │ ├── common/ # Header, status bar, about dialog
│ │ ├── editor/ # Monaco, file tabs, inline edit, viewers
│ │ ├── gateway/ # Gateway tool approval
│ │ ├── layout/ # AppShell, thread sidebar, titlebar, tab bar
│ │ ├── mcp/ # MCP tools, resources, OAuth, x402 approval
│ │ ├── settings/ # Providers, MCP servers, OpenClaw config
│ │ ├── shell/ # Shell command approval
│ │ ├── sidebar/ # File explorer, database panel, indexing, skills
│ │ ├── tasks/ # Agent tasks panel, task items, status badges
│ │ └── wallet/ # Deposits, transactions, daily claim
│ ├── services/ # API clients (chat, ACP, MCP, wallet, memory, skills, tasks)
│ ├── stores/ # SolidJS stores (state management)
│ └── lib/ # Utilities (indexing, audio, commands, rendering)
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── acp.rs # Agent Client Protocol
│ │ ├── auth.rs # Authentication and token management
│ │ ├── orchestrator/ # Task classifier, model router, workers
│ │ ├── openclaw.rs # OpenClaw messaging integration
│ │ ├── skills.rs # Skills system management
│ │ ├── terminal.rs # Terminal process management
│ │ ├── sandbox.rs # macOS sandbox profiles (GPG-aware)
│ │ ├── shell.rs # Shell command execution
│ │ ├── mcp.rs # MCP server management
│ │ ├── embedded_runtime.rs # Bundled Node.js/npm/ACP runtime
│ │ ├── oauth.rs # OAuth callback server
│ │ ├── files.rs # File system operations
│ │ ├── sync.rs # Data synchronization
│ │ ├── commands/ # Tauri commands (chat, indexing, memory, skills, web, CLI installer)
│ │ ├── services/ # Vector store, chunker, indexer, database
│ │ └── wallet/ # x402 payments, Ethereum signing
│ └── embedded-runtime/ # Bundled runtimes and OpenClaw
├── skills/ # Bundled skills (Polymarket, Apollo, etc.)
├── tests/ # E2E tests (Playwright)
├── build/ # Platform-specific build scripts
└── .github/workflows/ # CI and release automation
| Layer | Technology |
|---|---|
| Frontend | SolidJS 1.8+, TypeScript 5+, Vite |
| Backend | Rust, Tauri 2.0 |
| Editor | Monaco Editor 0.52+ |
| Vector Store | sqlite-vec (semantic search) |
| Memory | seren-memory-sdk (persistent context) |
| Skills | AgentSkills.io standard |
| State | SolidJS stores |
| Styling | Plain CSS |
| Storage | tauri-plugin-store (encrypted) |
| Crypto | alloy-rs (Ethereum signing) |
| ACP | agent-client-protocol |
| MCP | rmcp (Model Context Protocol) |
| Linting | Biome 2.3+ |
| Testing | Vitest (unit), Playwright (e2e) |
Create .env.local for local development:
VITE_SEREN_API_URL=https://api.serendb.comYou can use Seren's gateway (default) or configure direct API access:
- Open Settings (gear icon)
- Navigate to Providers
- Enter API keys for Anthropic, OpenAI, or Google
We welcome contributions! Please read CONTRIBUTING.md first.
Report bugs and request features in our GitHub Issues.
-
Fork the repository
-
Create a feature branch in a worktree:
git worktree add ../.worktrees/feature-name -b feature/feature-name
-
Make changes and test:
pnpm test -
Commit with conventional commits:
git commit -m "feat: add feature" -
Push and open a PR
Look for issues labeled good first issue.
MIT License - see LICENSE