sprklai/zenii
Integrates with GitHub via MCP, allowing the agent to consume GitHub tools for repository management, issues, and other GitHub operations.
Routes AI requests to local Ollama models via MCP.
Routes AI requests to OpenAI's API via MCP, enabling access to GPT models.
Routes AI requests to Vercel AI Gateway via MCP.
Zenii (zen-ee-eye)
Start in 60 seconds
curl -fsSL https://raw.githubusercontent.com/sprklai/zenii/main/install.sh | bash
zenii-daemon &
# Store a fact once
curl -s -X POST http://localhost:18981/memory \
-H "Content-Type: application/json" \
-d '{"key":"deploy","content":"Production database is on port 5434"}' >/dev/null
# Ask about it later — from a script, cron job, or another machine
curl -s -X POST http://localhost:18981/chat \
-H "Content-Type: application/json" \
-d '{"session_id":"ops","prompt":"What port is the production database on?"}' | jq -r '.response'That is the core contract: write state once, read it from anywhere that speaks HTTP.
Interactive API Docs — once the daemon is running, open http://127.0.0.1:18981/api-docs in your browser. You get a full Swagger-style explorer: every endpoint documented, live request testing, and code-snippet generation for curl, Python, Go, TypeScript, Rust, and more. No separate setup needed — it's built in.
Why Zenii
Most AI tools are per-session and per-interface. You get memory in the chat UI but not in your shell script. You wire a tool to one agent and have to re-wire it to the next.
Zenii solves this with a shared local backend:
Without Zenii | With Zenii |
Each script manages its own AI context | One daemon holds memory for all of them |
Tools re-implemented per project | 19 tools registered once, available everywhere |
Provider API keys scattered across configs | One credential store, one place to rotate |
Desktop UI and scripts drift apart | Both call the same gateway |
MCP tools only available inside the IDE | Expose the same tools to any MCP client |
Architecture
One Rust library crate (zenii-core) holds all business logic. Five thin binary crates (daemon, CLI, TUI, desktop, MCP server) are shell wrappers around the same axum gateway, SQLite database, agent loop, and tool registry.
What Ships Today
Interfaces
Binary | Use it for |
| Local HTTP + WebSocket API server — the core of everything |
| Quick prompts, shell pipelines, terminal workflows |
| Interactive terminal UI |
| Native Tauri desktop app |
| Expose all 19 Zenii tools to Claude Code, Cursor, VS Code |
Capabilities
Domain | What it does |
Memory | Persistent semantic recall — BM25 field weighting, temporal decay, vector deduplication |
Karpathy LLM Wiki | Ingest PDFs, DOCX, PPTX, XLSX, images — knowledge graph, AI query, auto-lint |
AI Agent | Multi-step reasoning, tool use, streaming, delegation with human approvals |
Tools (19) | Shell, file ops, web search, process control, patch, memory, wiki — one registry, every interface |
Providers (6+) | OpenAI · Anthropic · Gemini · OpenRouter · Vercel AI Gateway · Ollama · any OpenAI-compatible endpoint |
Workflows | TOML/YAML DAG chains — tools, conditionals, loops, parallel steps, run history, cancellation |
Scheduler | Cron + interval jobs, each run as a full agent turn with access to all tools |
Channels | Telegram · Discord · Slack — inbound routing, unified inbox, threaded conversations (feature-gated) |
MCP | Server: expose all tools to Claude Code, Cursor, Gemini CLI, Windsurf · Client: consume external MCP servers |
Security | OS keyring · AES-256-GCM encryption · surface-based permission model (CLI/desktop/TUI/MCP/API) |
Karpathy LLM Wiki
Knowledge compiled at ingestion time, not re-derived at every query. Drop in a document; Zenii extracts, indexes, and links the knowledge so your agent can answer questions against it instantly.
# Ingest a runbook, spec, or doc
curl -s -X POST http://localhost:18981/wiki/ingest \
-H "Authorization: Bearer $ZENII_TOKEN" \
-d '{"url": "https://example.com/runbook.pdf"}'
# Query it — answers come from the compiled knowledge base
curl -s -X POST http://localhost:18981/wiki/query \
-H "Authorization: Bearer $ZENII_TOKEN" \
-d '{"query": "What does section 3 say about rollback?"}'Supports PDF, DOCX, PPTX, XLSX, and images via MarkItDown
Knowledge graph with force-directed visualization in the web UI
Queryable from any interface — CLI, desktop, or agent loop
Auto-lint detects inconsistency and gaps across pages
Full guide: docs.zenii.sprklai.com/wiki
MCP: Server and Client
As MCP server — expose all 19 Zenii tools to any agent:
// .mcp.json — works with Claude Code, Cursor, Gemini CLI, Windsurf, Codex
{
"mcpServers": {
"zenii": {
"command": "zenii-mcp-server",
"args": ["--transport", "stdio"]
}
}
}As MCP client — Zenii can also consume external MCP servers. Add GitHub, Postgres, Filesystem, or any custom MCP server and its tools become available in your agent loop alongside Zenii's own 19.
AGENT.md — a machine-readable guide written for AI coding agents (Claude Code, Cursor, Gemini CLI, Windsurf, Codex). Drop it in your project or point your agent at it to give it a complete map of Zenii's API surface.
Full guide: docs.zenii.sprklai.com/mcp
Workflows and Scheduler
Workflows — chain tools into DAGs with conditionals, loops, and parallel steps:
# ~/.config/zenii/workflows/daily-digest.yml
name: daily-digest
steps:
- id: search
tool: web_search
args: { query: "Rust ecosystem news today" }
- id: store
tool: memory_store
args: { key: "digest/{{date}}", content: "{{steps.search.result}}" }Run manually: POST /workflows/daily-digest/run
Scheduler — trigger any prompt or workflow on a cron schedule, executed as a full agent turn with access to all tools:
curl -s -X POST http://localhost:18981/scheduler/jobs \
-H "Authorization: Bearer $ZENII_TOKEN" \
-d '{"name":"daily-digest","cron":"0 8 * * *","prompt":"Run the daily-digest workflow"}'Full guide: docs.zenii.sprklai.com/workflows · docs.zenii.sprklai.com/scheduler
Install
macOS / Linux
curl -fsSL https://raw.githubusercontent.com/sprklai/zenii/main/install.sh | shInstalls zenii (CLI) and zenii-daemon to ~/.local/bin.
Windows
Download and run the desktop installer (.msi or .exe) from
GitHub Releases.
For headless / CLI-only, grab zenii.exe and zenii-daemon.exe from the same page.
Cargo
cargo install --git https://github.com/sprklai/zenii zenii zenii-daemonFull platform notes: Installation & Usage
Build from Source
Prerequisites: Rust 1.85+, Bun, SQLite development libraries.
git clone https://github.com/sprklai/zenii.git
cd zenii
cargo build --release -p zenii-daemon # headless server
cargo build --release -p zenii-cli # CLI client
cd crates/zenii-desktop && cargo tauri build # desktop appFull setup guide: docs/development.md
Good Fit
Local automations that need shared memory across scripts, bots, and scheduled jobs
Developer tooling that wants a single AI backend reachable via HTTP or MCP
Self-hosted workflows where privacy and local control matter
Projects that want a desktop UI and a scriptable backend without maintaining two stacks
Self-hosted on a VPS, Raspberry Pi, or Docker — runs as a systemd service or container behind nginx/Caddy (Deployment guide)
Zenii PiDog (Raspberry Pi) Demo
Zenii runs on ARM — same binary, same API. Deploy it on a Raspberry Pi, attach tools, and your hardware becomes an AI-addressable endpoint over HTTP.
Not a Good Fit
Multi-user or SaaS deployments (single-user daemon, no multi-tenant auth)
Drop-in OpenAI-compatible server (Zenii has its own API surface)
Mobile apps (planned, not yet shipped)
Docs
Interactive API Explorer — live Swagger-style docs at
localhost:18981/api-docs(daemon must be running)AGENT.md — guide for AI coding agents
Contributing
Typo fixes, tests, and focused bug fixes can go straight to a PR. Larger feature work should start with CONTRIBUTING.md.
If Zenii is useful to you — star the repo and tell a developer friend.
License
MIT
This server cannot be installed
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sprklai/zenii'
If you have feedback or need assistance with the MCP directory API, please join our Discord server