Server · #82 trending MCP repo
Moltis
moltis-org/moltis
A secure persistent personal agent server in Rust. One binary, sandboxed execution, multi-provider LLMs, voice, memory, Telegram, WhatsApp, Discord, Teams, and MCP tools. Secure by design, runs on your hardware.
- Stars
- 2.9k
- This week
- —
- Forks
- 363
- Open issues
- 121
- Skills inside
- 106
Inside this repo
48 of 106 skills
.claude/skills/gpui-mockupapple-notesManage Apple Notes via the memo CLI on macOS (create, view, search, edit).crates/skills/src/assets/apple/apple-notesapple-remindersManage Apple Reminders via remindctl CLI (list, add, complete, delete).crates/skills/src/assets/apple/apple-remindersfindmyTrack Apple devices and AirTags via FindMy.app on macOS using AppleScript and screen capture.crates/skills/src/assets/apple/findmyimessageSend and receive iMessages/SMS via the imsg CLI on macOS.crates/skills/src/assets/apple/imessageopenai-whisper-apiTranscribe audio via OpenAI Audio Transcriptions API (Whisper).crates/skills/src/assets/audio/openai-whisper-apiopenai-whisperLocal speech-to-text with the Whisper CLI (no API key).crates/skills/src/assets/audio/openai-whispersagElevenLabs text-to-speech with mac-style say UX.crates/skills/src/assets/audio/sagsherpa-onnx-ttsLocal text-to-speech via sherpa-onnx (offline, no cloud)crates/skills/src/assets/audio/sherpa-onnx-ttsclaude-codeDelegate coding tasks to Claude Code (Anthropic's CLI agent). Use for building features, refactoring, PR reviews, and iterative coding. Requires the claude CLI installed.crates/skills/src/assets/autonomous-ai-agents/claude-codecodexDelegate coding tasks to OpenAI Codex CLI agent. Use for building features, refactoring, PR reviews, and batch issue fixing. Requires the codex CLI and a git repository.crates/skills/src/assets/autonomous-ai-agents/codexopencodeDelegate coding tasks to OpenCode CLI agent for feature implementation, refactoring, PR review, and long-running autonomous sessions. Requires the opencode CLI installed and authenticated.crates/skills/src/assets/autonomous-ai-agents/opencodearchitecture-diagramGenerate dark-themed SVG diagrams of software systems and cloud infrastructure as standalone HTML files with inline SVG graphics. Semantic component colors (cyan=frontend, emerald=backend, violet=database, amber=cloud/AWS, rose=security, orange=message bus), JetBrains Mono font, grid background. Bescrates/skills/src/assets/creative/architecture-diagramascii-artGenerate ASCII art using pyfiglet (571 fonts), cowsay, boxes, toilet, image-to-ascii, remote APIs (asciified, ascii.co.uk), and LLM fallback. No API keys required.crates/skills/src/assets/creative/ascii-artascii-videoProduction pipeline for ASCII art video — any format. Converts video/audio/images/generative input into colored ASCII character video output (MP4, GIF, image sequence). Covers: video-to-ASCII conversion, audio-reactive music visualizers, generative ASCII art animations, hybrid video+audio reactive, crates/skills/src/assets/creative/ascii-videobaoyu-infographicGenerate professional infographics with 21 layout types and 21 visual styles. Analyzes content, recommends layout×style combinations, and generates publication-ready infographics. Use when user asks to create "infographic", "visual summary", "信息图", "可视化", or "高密度信息大图".crates/skills/src/assets/creative/baoyu-infographicexcalidrawCreate hand-drawn style diagrams using Excalidraw JSON format. Generate .excalidraw files for architecture diagrams, flowcharts, sequence diagrams, concept maps, and more. Files can be opened at excalidraw.com or uploaded for shareable links.crates/skills/src/assets/creative/excalidrawideationGenerate project ideas through creative constraints. Use when the user says 'I want to build something', 'give me a project idea', 'I'm bored', 'what should I make', 'inspire me', or any variant of 'I have tools but no direction'. Works for code, art, hardware, writing, tools, and anything that can crates/skills/src/assets/creative/ideationmanim-videoProduction pipeline for mathematical and technical animations using Manim Community Edition. Creates 3Blue1Brown-style explainer videos, algorithm visualizations, equation derivations, architecture diagrams, and data stories. Use when users request: animated explanations, math animations, concept vicrates/skills/src/assets/creative/manim-videop5jsProduction pipeline for interactive and generative visual art using p5.js. Creates browser-based sketches, generative art, data visualizations, interactive experiences, 3D scenes, audio-reactive visuals, and motion graphics — exported as HTML, PNG, GIF, MP4, or SVG. Covers: 2D/3D rendering, noise ancrates/skills/src/assets/creative/p5jspixel-artConvert images into retro pixel art with hardware-accurate palettes (NES, Game Boy, PICO-8, C64, etc.), and animate them into short videos. Presets cover arcade, SNES, and 10+ era-correct looks. Use `clarify` to let the user pick a style before generating.crates/skills/src/assets/creative/pixel-artpopular-web-designs54 production-quality design systems extracted from real websites. Load a template to generate HTML/CSS that matches the visual identity of sites like Stripe, Linear, Vercel, Notion, Airbnb, and more. Each template includes colors, typography, components, layout rules, and ready-to-use CSS values.crates/skills/src/assets/creative/popular-web-designssongwriting-and-ai-musicSongwriting craft, AI music generation prompts (Suno focus), parody/adaptation techniques, phonetic tricks, and lessons learned. These are tools and ideas, not rules. Break any of them when the art calls for it.crates/skills/src/assets/creative/songwriting-and-ai-musicjupyter-live-kernelUse a live Jupyter kernel for stateful, iterative Python execution via hamelnb. Load this skill when the task involves exploration, iteration, or inspecting intermediate results — data science, ML experimentation, API exploration, or building up complex code step-by-step. Uses terminal to run CLI cocrates/skills/src/assets/data-science/jupyter-live-kernelmcp-serversAdd, remove, configure, and troubleshoot MCP (Model Context Protocol) servers. Use when the user wants to connect external tools, manage MCP server lifecycle, or debug MCP connectivity issues.crates/skills/src/assets/devops/mcp-serverswebhook-subscriptionsCreate and manage webhook subscriptions for event-driven agent activation. Use when the user wants external services (GitHub, GitLab, Stripe, Linear, PagerDuty, Sentry, or any generic source) to trigger agent runs by POSTing events to a URL.crates/skills/src/assets/devops/webhook-subscriptionsdogfoodSystematic exploratory QA testing of web applications — find bugs, capture evidence, and generate structured reportscrates/skills/src/assets/dogfoodhimalayaHimalaya v2 CLI for reading and managing email through IMAP, JMAP, Gmail, Microsoft Graph, Maildir, M2dir, and SMTP send operations.crates/skills/src/assets/email/himalayaminecraft-modpack-serverSet up a modded Minecraft server from a CurseForge/Modrinth server pack zip. Covers NeoForge/Forge install, Java version, JVM tuning, firewall, LAN config, backups, and launch scripts.crates/skills/src/assets/gaming/minecraft-modpack-serverpokemon-playerPlay Pokemon games autonomously via headless emulation. Starts a game server, reads structured game state from RAM, makes strategic decisions, and sends button inputs — all from the terminal.crates/skills/src/assets/gaming/pokemon-playercodebase-inspectionInspect and analyze codebases using pygount for LOC counting, language breakdown, and code-vs-comment ratios. Use when asked to check lines of code, repo size, language composition, or codebase stats.crates/skills/src/assets/github/codebase-inspectiongithub-authSet up GitHub authentication for the agent using git (universally available) or the gh CLI. Covers HTTPS tokens, SSH keys, credential helpers, and gh auth — with a detection flow to pick the right method automatically.crates/skills/src/assets/github/github-authgithub-code-reviewReview code changes by analyzing git diffs, leaving inline comments on PRs, and performing thorough pre-push review. Works with gh CLI or falls back to git + GitHub REST API via curl.crates/skills/src/assets/github/github-code-reviewgithub-issuesCreate, manage, triage, and close GitHub issues. Search existing issues, add labels, assign people, and link to PRs. Works with gh CLI or falls back to git + GitHub REST API via curl.crates/skills/src/assets/github/github-issuesgithub-pr-workflowFull pull request lifecycle — create branches, commit changes, open PRs, monitor CI status, auto-fix failures, and merge. Works with gh CLI or falls back to git + GitHub REST API via curl.crates/skills/src/assets/github/github-pr-workflowgithub-repo-managementClone, create, fork, configure, and manage GitHub repositories. Manage remotes, secrets, releases, and workflows. Works with gh CLI or falls back to git + GitHub REST API via curl.crates/skills/src/assets/github/github-repo-managementgif-searchSearch and download GIFs from Tenor using curl. No dependencies beyond curl and jq. Useful for finding reaction GIFs, creating visual content, and sending GIFs in chat.crates/skills/src/assets/media/gif-searchgifgrepSearch GIF providers with CLI/TUI, download results, and extract stills/sheets.crates/skills/src/assets/media/gifgrepheartmulaSet up and run HeartMuLa, the open-source music generation model family (Suno-like). Generates full songs from lyrics + tags with multilingual support.crates/skills/src/assets/media/heartmulasongseeGenerate spectrograms and audio feature visualizations (mel, chroma, MFCC, tempogram, etc.) from audio files via CLI. Useful for audio analysis, music production debugging, and visual documentation.crates/skills/src/assets/media/songseespotify-playerTerminal Spotify playback/search via spogo (preferred) or spotify_player.crates/skills/src/assets/media/spotify-playervideo-framesExtract frames or short clips from videos using ffmpeg.crates/skills/src/assets/media/video-framesyoutube-contentFetch YouTube video transcripts and transform them into structured content (chapters, summaries, threads, blog posts). Use when the user shares a YouTube URL or video link, asks to summarize a video, requests a transcript, or wants to extract and reformat content from any YouTube video.crates/skills/src/assets/media/youtube-contentbluebubblesUse when you need to send or manage iMessages via BlueBubbles (recommended iMessage integration). Calls go through the generic message tool with channel="bluebubbles".crates/skills/src/assets/messaging/bluebubblesdiscordDiscord ops via the message tool (channel=discord).crates/skills/src/assets/messaging/discorddiscrawlArchive and search Discord guild messages, threads, and members via the discrawl CLI. Supports bot API sync, local cache import, full-text and semantic search, and Git-backed NDJSON snapshots.crates/skills/src/assets/messaging/discrawlimsgiMessage/SMS CLI for listing chats, history, and sending messages via Messages.app.crates/skills/src/assets/messaging/imsgslacrawlArchive and search Slack workspace messages, threads, and channels via the slacrawl CLI. Supports API sync, Slack export ZIP import, local desktop cache import, and full-text search.crates/skills/src/assets/messaging/slacrawlDocumentation
README
Moltis — A secure persistent personal agent server in Rust
One binary — sandboxed, secure, yours.
Installation • Comparison • Architecture • Security • Features • How It Works • Contributing
Moltis recently hit the front page of Hacker News. Please open an issue for any friction at all. I'm focused on making Moltis excellent.
Secure by design — Your keys never leave your machine. Every command runs in a sandboxed container, never on your host.
Your hardware — Runs on a Mac Mini, a Raspberry Pi, or any server you own. One Rust binary, no Node.js, no npm, no runtime.
Full-featured — Voice, memory, cross-session recall, automatic edit checkpoints, scheduling, Telegram, Signal, Discord, browser automation, MCP servers, SSH or node-backed remote exec, managed deploy keys with host pinning in the web UI, a live Settings → Tools inventory, Cursor-compatible project context, and context-file threat scanning — all built-in. No plugin marketplace to get supply-chain attacked through.
Auditable — The agent runner and model interface fit in ~7.5K lines, with providers in ~19K more. The Rust workspace is ~270K lines across 59 modular crates you can audit independently, with 470+ Rust files containing tests. Unsafe code is isolated to FFI and precompiled runtime boundaries, not the core agent loop.
Installation
# One-liner install script (macOS / Linux)
curl -fsSL https://www.moltis.org/install.sh | sh
# macOS / Linux via Homebrew
brew install moltis-org/tap/moltis
# Docker (multi-arch: amd64/arm64)
docker pull ghcr.io/moltis-org/moltis:latest
# Or build from source
cargo install moltis --git https://github.com/moltis-org/moltis
Comparison
| OpenClaw | Hermes Agent | Moltis | |
|---|---|---|---|
| Primary stack | TypeScript + Swift/Kotlin companion apps | Python + TypeScript TUI/web surfaces | Rust |
| Runtime | Node.js + npm/pnpm/bun | Python + uv/pip, optional Node UI pieces | Single Rust binary |
| Local checkout size* | ~1.1M app LoC | ~152K app LoC | ~270K Rust LoC |
| Architecture | Broad gateway, channel, node, and app ecosystem | CLI/gateway agent with learning loop and research tooling | Persistent personal agent server with modular crates |
| Crates/modules | npm packages, extensions, apps | Python packages, plugins, tools, TUI | 59 Rust workspace crates |
| Sandbox/backends | App-level permissions, browser/node tools | Local, Docker, SSH, Daytona, Singularity, Modal | Docker/Podman + Apple Container + WASM |
| Auth/access | Pairing and local gateway controls | CLI and messaging gateway setup | Password + Passkey + API keys + Vault |
| Voice I/O | Voice wake and talk modes | Voice memo transcription | Built-in STT + TTS providers |
| MCP | Plugin/integration support | MCP integration | stdio + HTTP/SSE |
| Skills | Bundled, managed, and workspace skills | Self-improving skills and Skills Hub support | Bundled/workspace skills + autonomous improvement + OpenClaw import |
| Memory/RAG | Plugin-backed memory and context engine | Agent-curated memory, session search, user modeling | SQLite + FTS + vector memory |
* LoC measured with tokei, excluding node_modules, generated build output, dist, and target.
Architecture — Crate Map
Current Rust workspace: ~270K LoC across 59 crates. The table below groups the main crates by role so the architecture stays scannable.
Core runtime:
| Crate | LoC | Role |
|---|---|---|
moltis-gateway |
37.4K | HTTP/WS server, RPC, auth, startup wiring |
moltis-tools |
37.0K | Tool execution, sandboxing, WASM tools |
moltis-providers |
18.9K | LLM provider implementations |
moltis-agents |
14.5K | Agent loop, streaming, prompt assembly |
moltis-chat |
14.2K | Chat engine, agent orchestration |
moltis-config |
10.3K | Configuration, validation |
moltis-httpd |
9.9K | HTTP server primitives and middleware |
moltis (CLI) |
4.7K | Entry point, CLI commands |
moltis-sessions |
3.5K | Session persistence |
moltis-common |
1.5K | Shared utilities |
moltis-service-traits |
1.2K | Shared service interfaces |
moltis-protocol |
0.7K | Wire protocol types |
Feature and integration crates:
| Category | Crates | Combined LoC |
|---|---|---|
| Channels | moltis-telegram, moltis-whatsapp, moltis-signal, moltis-discord, moltis-msteams, moltis-matrix, moltis-slack, moltis-nostr, moltis-channels |
34.0K |
| Web and APIs | moltis-web, moltis-graphql, moltis-webhooks |
10.8K |
| Extensibility | moltis-mcp, moltis-mcp-agent-bridge, moltis-skills, moltis-plugins |
11.5K |
| Memory and context | moltis-memory, moltis-qmd, moltis-code-index, moltis-projects |
11.7K |
| Voice and browser | moltis-voice, moltis-browser |
9.2K |
| Auth and security | moltis-auth, moltis-oauth, moltis-vault, moltis-secret-store, moltis-network-filter, moltis-tls |
8.5K |
| Scheduling and automation | moltis-cron, moltis-caldav, moltis-auto-reply |
4.7K |
| Setup and import | moltis-provider-setup, moltis-openclaw-import, moltis-onboarding |
11.7K |
| Native and node hosts | moltis-swift-bridge, moltis-node-host, moltis-courier |
5.7K |
| WASM tools | moltis-wasm-precompile, moltis-wasm-calc, moltis-wasm-web-fetch, moltis-wasm-web-search |
1.4K |
| Supporting crates | moltis-media, moltis-metrics, moltis-tailscale, moltis-routing, moltis-canvas, moltis-schema-export, benchmarks |
2.1K |
Use --no-default-features --features lightweight for constrained devices (Raspberry Pi, etc.).
Security
- Small unsafe surface — core agent/gateway code stays safe Rust; unsafe is isolated to Swift FFI, local model wrappers, and precompiled WASM boundaries
- Sandboxed execution — Docker + Apple Container, per-session isolation
- Secret handling —
secrecy::Secret, zeroed on drop, redacted from tool output - Authentication — password + passkey (WebAuthn), rate-limited, per-IP throttle
- SSRF protection — DNS-resolved, blocks loopback/private/link-local
- Origin validation — rejects cross-origin WebSocket upgrades
- Hook gating —
BeforeToolCallhooks can inspect/block any tool invocation - Supply chain integrity — artifact attestations, Sigstore keyless signing, GPG signing (YubiKey), SHA-256/SHA-512 checksums
See Security Architecture for details.
Verify releases with gh attestation verify <artifact> -R moltis-org/moltis or see Release Verification.
Features
- Reasoning Defaults - Configurable default thinking effort for model-less and new main sessions, with explicit per-session Off or level overrides
- AI Gateway — Multi-provider LLM support (OpenAI Codex, GitHub Copilot, Local), streaming responses, agent loop with sub-agent delegation, session modes, parallel tool execution
- Communication — Web UI with command-palette agent prompts and Markdown copy/export, Telegram, Signal, Microsoft Teams, Discord, Slack with native live tool cards, Nostr DMs + NIP-29 group chat (incl. Block's Buzz channels), API access, voice I/O (8 TTS + 7 STT providers), mobile PWA with push notifications
- Desktop App — Native Rust/gpui client that attaches to a running daemon locally, over HTTPS, or through an SSH tunnel; keychain-stored scoped API keys, certificate pinning, streaming native markdown, approvals with system notifications
- Memory & Recall — Per-agent memory workspaces, embeddings-powered long-term memory, hybrid vector + full-text search, session persistence with auto-compaction, cross-session recall, Cursor-compatible project context, context-file safety scanning
- Managed Files - Authenticated nested file management in Settings, with an agent-advertised host path and independent read-only-by-default mounts for Docker, Podman, and Apple Container sandboxes
- Safer Agent Editing — Automatic checkpoints before built-in skill and memory mutations, restore tooling, session branching
- Extensibility — MCP servers (stdio + HTTP/SSE), skill system, 15 lifecycle hook events with circuit breaker, destructive command guard
- Agent Client Protocol — drives external ACP agents (
codex-acp,claude-agent-acp, Cursor), and serves Moltis to ACP clients over stdio viamoltis acp - First Run — Opens onboarding in your browser with the setup code pre-filled, serves certificate-free
http://localhost, offers once to trust a name-constrained local CA for LAN HTTPS, and pins the web UI URL below the terminal logs (with anssh -Lhint over SSH) - Security — Encryption-at-rest vault (XChaCha20-Poly1305 + Argon2id), password + passkey + API key auth, sandbox isolation, SSRF/CSWSH protection
- Operations — Cron scheduling, durable local CalDAV, Gmail, Himalaya email, and reusable Slack/Discord/Matrix/Teams message datasets, provider-specific read-only agent tools, fast full-text search, JSONL/Markdown projections, agent instrumentation (Langfuse for LLM traces, OTLP for Grafana/Datadog), Prometheus metrics, cloud deploy (Fly.io, DigitalOcean), Tailscale integration, managed SSH deploy keys, host-pinned remote targets, live tool inventory in Settings, and CLI/web remote-exec doctor flows
How It Works
Moltis is a local-first persistent agent server — a single Rust binary that sits between you and multiple LLM providers, keeps durable session state, and can meet you across channels without handing your data to a cloud relay.
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Web UI │ │ Telegram │ │ Discord │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
└────────┬───────┴────────┬───────┘
│ WebSocket │
▼ ▼
┌─────────────────────────────────┐
│ Gateway Server │
│ (Axum · HTTP · WS · Auth) │
├─────────────────────────────────┤
│ Chat Service │
│ ┌───────────┐ ┌─────────────┐ │
│ │ Agent │ │ Tool │ │
│ │ Runner │◄┤ Registry │ │
│ └─────┬─────┘ └─────────────┘ │
│ │ │
│ ┌─────▼─────────────────────┐ │
│ │ Provider Registry │ │
│ │ Multiple providers │ │
│ │ (Codex · Copilot · Local)│ │
│ └───────────────────────────┘ │
├─────────────────────────────────┤
│ Sessions │ Memory │ Hooks │
│ (JSONL) │ (SQLite)│ (events) │
└─────────────────────────────────┘
│
┌───────▼───────┐
│ Sandbox │
│ Docker/Apple │
│ Container │
└───────────────┘
See Quickstart for gateway startup, message flow, sessions, and memory details.
Getting Started
Build & Run
Requires just (command runner) and Node.js (for Tailwind CSS).
git clone https://github.com/moltis-org/moltis.git
cd moltis
just build-css # Build Tailwind CSS for the web UI
just build-release # Build in release mode
cargo run --release --bin moltis
For a full release build including WASM sandbox tools:
just build-release-with-wasm # Builds WASM artifacts + release binary
cargo run --release --bin moltis
Open https://moltis.localhost:3000. On first run, a setup code is printed to
the terminal — enter it in the web UI to set your password or register a passkey.
Optional flags: --config-dir /path/to/config --data-dir /path/to/data
Docker
# Docker / OrbStack
docker run -d \
--name moltis \
-p 13131:13131 \
-p 13132:13132 \
-p 1455:1455 \
-v moltis-config:/home/moltis/.config/moltis \
-v moltis-data:/home/moltis/.moltis \
-v /var/run/docker.sock:/var/run/docker.sock \
ghcr.io/moltis-org/moltis:latest
Open https://localhost:13131 and complete the setup. For unattended Docker
deployments, set MOLTIS_PASSWORD, MOLTIS_PROVIDER, and MOLTIS_API_KEY
before first boot to skip the setup wizard. See Docker docs
for Podman, OrbStack, TLS trust, and persistence details.
Cloud Deployment
| Provider | Deploy |
|---|---|
| DigitalOcean |
Fly.io (CLI):
fly launch --image ghcr.io/moltis-org/moltis:latest
fly secrets set MOLTIS_PASSWORD="your-password"
All cloud configs use --no-tls because the provider handles TLS termination.
See Cloud Deploy docs for details.
License
MIT
Releases