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
- 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
- Image attachments — Attach images to chat messages
- Voice input — Speech-to-text via Seren Whisper publisher with auto-submit option
- Slash commands —
/command autocomplete in chat input - 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
- Cancel with deadline — Force-stop agents that don't respond to cancel within 5 seconds
- Auth error detection — Auto-launches
claude loginwhen authentication is needed - Thinking animation — Bouncing dot indicator with rotating status words
- 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
- Encrypted storage — Tokens stored via Tauri secure storage
- Sandboxed execution — macOS seatbelt profiles for agent commands
- 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 │ │ │ │
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
│ ┌──────────┐ ┌──────────┐ │
│ │ Indexing │ │ Sandbox │ │
│ │sqlite-vec│ │ Terminal │ │
│ └──────────┘ └──────────┘ │
│ │
│ Backend: Rust/Tauri │ Frontend: SolidJS/TypeScript │
│ Embedded: Node.js + Git (bundled per platform) │
└─────────────────────────┬────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────┐
│ Seren Gateway (Proprietary) │
│ • api.serendb.com │
│ • Authentication & billing (SerenBucks) │
│ • AI model routing (Claude, GPT, Gemini) │
│ • Publisher ecosystem (50+ services) │
│ • MCP server hosting │
│ • SerenDB serverless PostgreSQL │
│ • SerenEmbed API (embeddings) │
│ • SerenWhisper API (speech-to-text) │
└──────────────────────────────────────────────────────────┘
seren-desktop/
├── src/ # SolidJS frontend
│ ├── components/
│ │ ├── acp/ # Permission dialog, diff proposals
│ │ ├── auth/ # SignIn
│ │ ├── catalog/ # Publisher catalog, connection status
│ │ ├── chat/ # Chat, agents, voice input, thinking display
│ │ ├── common/ # Header, sidebar, status bar, about dialog
│ │ ├── editor/ # Monaco, file tabs, inline edit, viewers
│ │ ├── mcp/ # MCP tools, resources, OAuth, x402 approval
│ │ ├── settings/ # Providers, MCP servers, OpenClaw config
│ │ ├── sidebar/ # File explorer, database panel, indexing
│ │ └── wallet/ # Deposits, transactions, daily claim
│ ├── services/ # API clients (chat, ACP, MCP, wallet, OAuth, ...)
│ ├── stores/ # SolidJS stores (state management)
│ └── lib/ # Utilities (indexing, audio, commands, rendering)
├── src-tauri/ # Rust backend
│ ├── src/
│ │ ├── acp.rs # Agent Client Protocol
│ │ ├── openclaw.rs # OpenClaw messaging integration
│ │ ├── terminal.rs # Terminal process management
│ │ ├── sandbox.rs # macOS sandbox profiles
│ │ ├── mcp.rs # MCP server management
│ │ ├── embedded_runtime.rs # Bundled Node.js/Git runtime
│ │ ├── oauth.rs # OAuth callback server
│ │ ├── sync.rs # Sync functionality
│ │ ├── commands/ # Tauri commands (chat, indexing, web)
│ │ ├── services/ # Vector store, chunker, indexer
│ │ └── wallet/ # x402 payments, Ethereum signing
│ └── embedded-runtime/ # Bundled runtimes and OpenClaw
├── 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) |
| State | SolidJS stores |
| Styling | Plain CSS |
| Storage | tauri-plugin-store (encrypted) |
| Crypto | alloy-rs (Ethereum signing) |
| ACP | agent-client-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.
-
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