Open Source · Self-hosted · Single Go Binary

Your personal
AI command center

Minerva is a self-hosted AI assistant that lives in Telegram. It makes phone calls, sends emails, dispatches coding tasks to remote agents, tracks your nutrition, manages credentials with TOTP, schedules recurring tasks, integrates with Linear & OpenProject, deploys your servers — and remembers everything about you.

Get Started View on GitHub
15+
CLI Commands
1
Binary
0
Dependencies at Runtime
Capabilities

A complete personal assistant

Every feature Minerva offers — from AI chat to phone calls to encrypted credentials. All in one self-hosted binary.

Telegram AI Chat

Conversational AI via Telegram with persistent history, photo analysis, document processing, and voice message transcription via Groq Whisper. Supports conversation management with /new, /history, and custom system prompts.

Claude CLI Groq Whisper photo analysis

Voice Calls

Real-time voice AI powered by Cartesia. Minerva makes phone calls on your behalf — restaurant reservations, appointments, inquiries. Calls are summarized and sent as Telegram notifications. Also supports an Android phone bridge for calling through your real phone.

Telnyx Cartesia Android bridge PCM 16kHz

Remote Code Agents

Connect Claude Code instances from any machine via WebSocket. Dispatch coding tasks, stream output in real-time, update running tasks, and get automatic stale-task alerts. List agents, their projects, and active tasks.

agent list agent run agent output agent update

Email Integration

Send emails via Resend with admin approval workflow — the AI drafts messages and you approve/reject via Telegram buttons before they're sent. Incoming emails are routed through Svix-signed webhooks.

Resend Svix webhooks approval flow

Persistent Memory

Minerva remembers facts about you across conversations — preferences, ongoing projects, important details. Fully AI-managed with get, set, and search operations. Stored in SQLite with a 2000-character budget.

memory get memory set search/filter

Scheduled Tasks & Reminders

Schedule one-off or recurring tasks (daily, weekly, monthly). Simple reminders go to the AI brain for Telegram notification; agent tasks are dispatched to remote Claude Code instances for autonomous execution.

schedule create schedule list recurring agent dispatch

Credentials Store & TOTP

AES-256-GCM encrypted password vault with TOTP code generation (RFC 6238). Store usernames, passwords, and 2FA secrets. Retrieve live TOTP codes via chat or CLI. Encryption key derived from your bot token via SHA-256.

cred add cred get AES-256-GCM TOTP RFC 6238

Meal & Nutrition Tracking

Track calories and macros (protein, carbs, fat) per meal. The AI auto-detects when you mention food or send a photo, estimates nutrition, and logs it. View daily, weekly, or monthly stats. Supports breakfast, lunch, dinner, and snack types.

meal add meal stats auto-detection photo estimation

Project Management

Integrated with OpenProject (REST API) and Linear (via MCP). Create tasks, track issues, list projects, update statuses, manage sprints — all from Telegram or the CLI.

OpenProject Linear MCP task create task update

Messaging & Files

Send messages and files to yourself via Telegram from any script or agent. Supports images (sent as photos), documents, and captioned attachments. Useful for notifications, reports, and automated alerts.

send file send context

One-Command Deploy

Deploy the server to your VPS with a single command. Cross-compiles for Linux, uploads the binary, restarts the service, runs a health check, and automatically rolls back if the new version fails.

minerva deploy health check auto rollback --dry-run

Sandboxed Code Execution

Execute JavaScript in a sandboxed Goja runtime. The AI brain can run small code snippets on-the-fly to calculate, transform data, or solve problems — without spawning external processes.

Goja VM run_code sandboxed
Command Line

Full CLI reference

Every minerva subcommand available. The CLI talks to the same SQLite database and Telegram API as the bot.

Memory
memory get Get all stored memory
memory get [key] Search memory by keyword
memory set "..." Update memory content
Communication
send "msg" Send Telegram message to admin
file send <path> Send file via Telegram
send-file <path> Send file (shorthand)
context Get recent conversation history
Email
email send <to> Send email with --subject and --body
Phone Calls
call <number> "purpose" AI call via Telnyx
phone list List connected Android phones
phone call <number> "purpose" Call via Android bridge
Remote Agents
agent list List agents, projects & active tasks
agent run <name> "prompt" Dispatch task to agent
agent output <id> Get partial output of running task
agent update <id> "prompt" Stop & restart task with new prompt
Scheduling
schedule create "task" --at "time" Schedule task (one-off or recurring)
schedule list List active scheduled tasks
schedule delete <id> Delete a scheduled task
schedule run <id> Manually trigger a task now
Meal Tracking
meal add "desc" Log meal with optional --calories --protein --carbs --fat
meal list List meals (--today, --week, --month, --from, --to)
meal stats Calorie & macro summary for a period
meal delete <id> Delete a meal entry
Credentials & TOTP
cred add <name> Add credential (--user --pass --totp --issuer)
cred get <name> Retrieve user, pass & live TOTP code
cred list List all stored credentials
cred delete <name> Delete a credential
Deploy
deploy Build, upload, restart, health check, auto-rollback
deploy --dry-run Preview deploy steps without executing
deploy --force Skip confirmation prompts
Telegram

Bot commands

Quick actions available directly in your Telegram chat.

/start Show welcome message and available commands
/new Start a fresh conversation (new context)
/history List past conversations and switch between them
/system Set a custom AI system prompt for the conversation
/memory View all stored memory about you
/tasks View running background tasks and their status
Architecture

Simple by design

One binary. One database. No orchestrators, no message queues, no YAML files. Minerva connects directly to the services it needs.

+--------------+ +--------------------------+ +--------------+ | Telegram |<--->| Minerva (Go binary) |<--->| Claude CLI | | Bot API | | | | (AI brain) | +--------------+ | +--------------------+ | +--------------+ | | Webhook Server | | +--------------+ | | /email/webhook | | +-------------+ | Resend |---->| | /agent (WS) | |<--->| Remote | | (email) | | | /voice/ws | | | Agents | +--------------+ | +--------------------+ | +-------------+ | | +--------------+ | +--------------------+ | +-------------+ | Telnyx/Phone |<--->| | SQLite DB | |<--->| Cartesia | | (voice) | | +--------------------+ | | (voice AI) | +--------------+ +--------------------------+ +-------------+

Single Binary

Go monolith — bot, webhooks, WebSocket server, CLI, all in one

SQLite

Zero-config embedded database — conversations, memory, meals, credentials, tasks

Claude CLI

AI brain via claude -p --continue with session continuity

WebSocket Agents

Connect Claude Code from any machine for remote task execution

Quick Start

Up and running in 60 seconds

All you need is Go 1.24+, Claude CLI installed, and a Telegram bot token.

terminal
# Clone the repository git clone https://github.com/kidandcat/minerva.git cd minerva # Configure (set TELEGRAM_BOT_TOKEN and ADMIN_ID) cp .env.example .env nano .env # Build and run go build -o minerva . ./minerva

Docker

Also available: docker compose up -d with the included docker-compose.yml

VPS Deploy

Run minerva deploy to build, upload, and deploy with automatic health check and rollback

Caddy / Nginx

Put behind a reverse proxy for HTTPS — needed for voice calls and email webhooks

Agent Setup

Build the agent binary separately: cd agent && go build, then connect via WebSocket