██████╗ ██████╗ ███████╗███╗ ██╗██╗ ██╗███████╗███████╗██████╗ ███████╗██████╗
██╔═══██╗██╔══██╗██╔════╝████╗ ██║██║ ██║██╔════╝██╔════╝██╔══██╗██╔════╝██╔══██╗
██║ ██║██████╔╝█████╗ ██╔██╗ ██║██║ ██║█████╗ ███████╗██████╔╝█████╗ ██████╔╝
██║ ██║██╔═══╝ ██╔══╝ ██║╚██╗██║╚██╗ ██╔╝██╔══╝ ╚════██║██╔═══╝ ██╔══╝ ██╔══██╗
╚██████╔╝██║ ███████╗██║ ╚████║ ╚████╔╝ ███████╗███████║██║ ███████╗██║ ██║
╚═════╝ ╚═╝ ╚══════╝╚═╝ ╚═══╝ ╚═══╝ ╚══════╝╚══════╝╚═╝ ╚══════╝╚═╝ ╚═╝
🌒 local-first
OpenVesper is a local-first AI agent framework. You bring your own LLM (Anthropic, OpenAI, Groq, Gemini, DeepSeek, Ollama, etc.) and your own keys. The framework handles agent personas, tool execution, multi-source skills, persistent memory, scheduling, and chat-channel delivery — all on your machine.
🌐 Website · 📦 Install · 🤖 Agents · 💡 Examples · ⚙️ Config · 📚 Docs
+ 11 more: Groq, DeepSeek, Mistral, OpenRouter, Together, Perplexity, Fireworks, Nebius, DeepInfra, xAI Grok, LM Studio
Most AI agent frameworks are wrappers that send your data through their servers. OpenVesper is the opposite.
| Feature | Typical AI Framework | OpenVesper |
|---|---|---|
| 📁 Where state lives | Their cloud | Your disk (~/.openvesper/) |
| 🔄 Runtime | Library you import | Persistent gateway daemon |
| 🧠 LLM choice | Locked to one vendor | 15 providers, swap any time |
| 🤖 Agent definition | Python/TS code | Plain markdown personas |
| 📊 Telemetry | Always-on | None. Zero. Never. |
| 💬 Channels | DIY | Telegram, Slack, Discord, Email, WS built-in |
| ⏰ Cron scheduling | DIY | Built-in heartbeats + webhooks |
| 💰 Crypto-native tools | Add yourself | 22 crypto plugins out of the box |
|
Anthropic · OpenAI · Gemini · Groq · DeepSeek · Mistral · Together · OpenRouter · Fireworks · Nebius · DeepInfra · xAI · Perplexity · Ollama · LM Studio All defined as plain markdown personas. Crypto hunters, code reviewers, content writers, fitness coaches, smart home controllers — see /docs/agents. Crypto · DeFi · Solana · GitHub · Telegram · Slack · Weather · Fitness · Gaming · E-commerce · DNS · Database · Browser automation — and 40+ more. 6 precedence levels (workspace > project-agent > personal-agent > managed > bundled > extra) with gating (env/bin/config/OS) and per-agent allowlists. |
CLI · Telegram · Slack · Discord · WebSocket — all bidirectional. Talk to your agent from anywhere. Agents run on a timer or respond to external events. Daily summaries to Telegram, PR review on GitHub push, alert when a wallet moves. macOS Keychain · libsecret · kwallet · 1Password CLI. Your API keys never have to sit in plaintext Review every tool call before execution. Full audit trail in |
⚠️ Not a hosted SaaS. There is no openvesper.com account. There are no OpenVesper servers receiving your data.
⚠️ Not a wallet. The framework never asks for seed phrases or private keys.
⚠️ Not a trading bot. Crypto plugins are read-only — they query data, they don't sign transactions.
⚠️ Not locked to one model. Switch from Claude to GPT to a local Ollama model with one env var.
┌─────────────────────────────┐
│ You — the user │
│ (CLI · Telegram · Slack) │
└──────────────┬──────────────┘
│
▼
┌─────────────────────────────┐
│ OpenVesper Gateway │
│ 127.0.0.1:18789 (loopback)│
│ │
│ ┌───────────────────────┐ │
│ │ Agent Router │ │
│ │ Tool Dispatcher │ │
│ │ Session Lanes │ │
│ │ Approval Queue │ │
│ │ Cron Scheduler │ │
│ │ Memory Manager │ │
│ └──────────┬────────────┘ │
└─────────────┼───────────────┘
│
┌───────────────────┼───────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌──────────────┐
│ LLM API │ │ Plugins │ │ ~/.openvesper│
│ (your key) │ │ (52 built-in)│ │ (your state)│
└─────────────┘ └─────────────┘ └──────────────┘
Anthropic bagsfm, github, sessions
OpenAI telegram, weather, audit logs
Gemini 22 crypto plugins, OAuth tokens
Groq productivity tools cron jobs
(+ 11 more) + your own .env
User Query (any channel)
│
▼
┌─────────────────────────────────────┐
│ Gateway receives request │
│ → Resolves session (or creates) │
│ → Routes to correct agent │
│ → Loads eligible skills (gated) │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ LLM call (with tools + skills) │
│ Model decides which tools to run │
└──────────────┬──────────────────────┘
│ tool_use
▼
┌─────────────────────────────────────┐
│ Tool dispatcher executes │
│ → Approval queue (if needed) │
│ → Audit log entry │
│ → Permission check │
└──────────────┬──────────────────────┘
│ results
▼
┌─────────────────────────────────────┐
│ Loop back to LLM until done │
│ → Persist session │
│ → Emit response to channel │
└─────────────────────────────────────┘
| Requirement | Version | Notes |
|---|---|---|
| 18+ | nodejs.org — or use the installer's auto-install | |
| 9+ | npm install -g pnpm |
|
| — | Any of 15 providers (Anthropic, OpenAI, Groq, Gemini...) |
curl -fsSL https://raw.githubusercontent.com/openvesper/openvesper/main/scripts/install.sh | bash |
iwr -useb https://raw.githubusercontent.com/openvesper/openvesper/main/scripts/install.ps1 | iex |
The installer does all of this for you:
| Step | What | Where |
|---|---|---|
| 1️⃣ | Detect / auto-install Node.js | via fnm (Unix) or winget/MSI (Windows) |
| 2️⃣ | Detect / auto-install pnpm | via npm install -g pnpm |
| 3️⃣ | Clone the repo | ~/.local/share/openvesper or %LOCALAPPDATA%\openvesper |
| 4️⃣ | Build all packages | pnpm -r build |
| 5️⃣ | Install vesper shim to PATH |
~/.local/bin/vesper or %LOCALAPPDATA%\Microsoft\WindowsApps\vesper.cmd |
| 6️⃣ | Run guided setup wizard | vesper onboard |
git clone https://github.com/openvesper/openvesper
cd openvesper
pnpm install --ignore-scripts
pnpm -r build
# Guided setup
node apps/cli/dist/index.js onboard
docker run -d \
--name openvesper \
-p 127.0.0.1:18789:18789 \
-v "$HOME/.openvesper:/home/vesper/.openvesper" \
-e ANTHROPIC_API_KEY=sk-ant-... \
ghcr.io/openvesper/openvesper:latest |
Multi-arch: |
Or with docker-compose:
git clone https://github.com/openvesper/openvesper
cd openvesper
cp .env.example .env # add your keys
docker-compose up -dAfter install, run the wizard:
vesper onboardThe wizard asks 5 questions:
| # | Question | Default |
|---|---|---|
| 1️⃣ | Workspace location | ~/.openvesper |
| 2️⃣ | LLM provider (15 choices) | Anthropic |
| 3️⃣ | API key (stored in ~/.openvesper/.env mode 0600) |
— |
| 4️⃣ | Default agent (auto / bags-hunter / code-reviewer...) | auto |
| 5️⃣ | Send a test message | Y |
Then ask your first question:
vesper -q "What's the price of BTC right now?"Or open an interactive REPL:
vesper replStart the gateway as a daemon (for Telegram / Slack / cron):
vesper gateway start -d # detached / background
vesper gateway install-daemon # auto-start at boot (systemd / launchd)Check health:
vesper doctorOpenVesper supports 15 providers. Set one key, you're done. Set multiple, switch with --provider flag.
# Switch providers per-query
vesper -q "BTC price" --provider groq --model llama-3.3-70b-versatile
# Or set default in ~/.openvesper/.env
LLM_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-...OpenVesper ships with 26 specialist agents, each defined as a markdown persona in .agents/<mode>/. Use vesper -a <mode> to invoke one directly.
|
Bags.fm Solana memecoin tracking + scoring Pump.fun bonding curve analysis + holder scans Base chain memecoin specialist |
Multi-chain airdrop tracking + eligibility NFT collection floor, holders, rarity DeFi yields, TVL, liquidity analysis |
TA, indicators, backtests Falsifiable theses, DD, market research |
|
PR review, code quality, bug detection |
PR triage, issue management, repo health |
Anchor, IDL, dApp helper |
Code + token security audit |
Test-driven development guidance |
| 🛸 auto Picks tools automatically |
✍ content-writer Posts, articles, marketing |
🐦 social-strategist Twitter/X trends + strategy |
📋 productivity-coach Calendar, tasks, email |
| 📐 data-analyst SQL, CSV, charts |
⚖ legal-assistant Contracts, legal docs |
🗣 language-tutor Language learning partner |
🌍 travel-planner Day-by-day itineraries |
| 🍳 cooking-coach Recipes, techniques |
🎮 gaming-companion Steam, Twitch, stats |
💪 fitness-coach Strava, exercise DB |
🏠 smart-home-controller Home Assistant |
| 📰 news-curator Daily news digests |
Drop a markdown file at .agents/<your-mode>/manifest.md:
---
mode: my-agent
icon: 🦅
name: My Custom Agent
description: Does my specific thing
tools: ["web_search", "github_repo", "*"]
---
You are a helpful assistant specialized in <your domain>.
Be concise and direct.Run it: vesper -a my-agent -q "your question".
52 built-in plugins provide tools the agent can call.
🔍 Click to expand the full plugin list (52 total)
bagsfm · pumpfun · bonkfun · base-meme · solana · solana-dev · kamino · drift · aerodrome · jupiter · security-goplus · rugcheck · defi · helius · birdeye · whale-alert · airdrop · farcaster · derivatives · memescan · onchain · crypto
notion · github · gcal · research · news
telegram · slack · discord · email · farcaster
weather · maps · translate · banking · fitness · gaming · shopify · package-tracking
spotify · youtube · image-gen · voice
filesystem · shell · code-exec · browser · database · dns
cron · webhooks
skill-workshop — agents propose new skills mid-conversation
vesper plugin scaffold weather
# Creates ./weather/ with package.json, tsconfig.json, src/index.tsimport { definePlugin, defineTool, inputSchema } from "@openvesper/plugin-sdk";
export default definePlugin({
name: "@your-org/plugin-weather",
version: "0.1.0",
tools: [
defineTool({
name: "weather_get",
description: "Get current weather for a city",
inputSchema: inputSchema(
{ city: { type: "string" } },
["city"]
),
handler: async ({ city }) => {
const data = await fetch(`https://api.open-meteo.com/...`);
return { success: true, data };
},
}),
],
});Then pnpm install && pnpm run build, and the agent picks it up automatically.
Skills are markdown instruction snippets that agents load on demand. v1.16.0 introduces a multi-source loader with strict precedence:
1. <workspace>/skills/ ← highest priority (your project)
2. <workspace>/.agents/skills/ ← project-agent specific
3. ~/.agents/skills/ ← your personal skills
4. ~/.openvesper/skills/ ← managed (vesper skills install)
5. (bundled with install)
6. config.skills.load.extraDirs ← lowest priority
Same name in multiple sources? The higher source wins.
A skill can declare requirements that filter it out at load time:
---
name: image-lab
description: Generate images with Gemini
metadata:
openvesper:
requires:
env: ["GEMINI_API_KEY"]
bins: ["uv"]
os: ["darwin", "linux"]
---
When the user asks for an image, use the Gemini image API...Without the env var? The skill is hidden — agent doesn't even see it. No silent failures.
# From GitHub
vesper skills install git:owner/repo
vesper skills install git:owner/repo@v1.2.0
# From local directory
vesper skills install ./my-skill
# Globally (~/.openvesper/skills)
vesper skills install ./my-skill --global
# List with source + gating status
vesper skills list
vesper skills list --all # include gated/filtered
vesper skills info gif-attribution
vesper skills sources # show all 6 source dirsIn openvesper.json:
{
agents: {
defaults: { skills: ["github", "weather"] },
list: [
{ id: "writer" }, // inherits defaults
{ id: "researcher", skills: ["docs-search"] }, // replaces (no merge)
{ id: "locked", skills: [] }, // no skills at all
],
},
}Talk to your agent from anywhere. All channels go through the same gateway.
| Channel | Setup | Direction |
|---|---|---|
| 💻 CLI | None | Both |
| Bot token | Both (DMs + groups) | |
| 💼 Slack | App + webhook | Both |
| 🎮 Discord | Bot token | Both |
| Gmail OAuth or IMAP | Both | |
| 🌐 WebSocket | Built into gateway | Both |
When an unknown user DMs your bot, the gateway issues a 6-character pairing code:
Unknown user → "hey"
Bot → "Hi! I'm gated. Ask the operator to approve code: A3B7K2"
You (CLI) → vesper pairing approve telegram A3B7K2
Bot → "✓ Approved. You're in."
No more open bots that anyone can spam.
All config lives in ~/.openvesper/:
~/.openvesper/
├── .env # API keys (mode 0600)
├── config.json # General settings
├── openvesper.json # Agent + skill allowlists
├── sessions/ # Per-session state
├── audit/ # Tool call audit log
├── tokens/ # OAuth tokens
├── pairings.json # Channel pairing state
├── skills/ # Managed skills (vesper skills install)
└── skills-registry.json # Skill install registry
# Required: at least one LLM provider
ANTHROPIC_API_KEY=sk-ant-api03-...
OPENAI_API_KEY=sk-...
GROQ_API_KEY=gsk_...
GEMINI_API_KEY=...
# Optional: channels
TELEGRAM_BOT_TOKEN=
SLACK_BOT_TOKEN=
DISCORD_BOT_TOKEN=
# Optional: extra services
GITHUB_TOKEN=
HELIUS_API_KEY=Don't want plaintext .env? Use your OS keychain:
vesper secret backend # detect: macOS Keychain / libsecret / kwallet / 1Password
vesper secret set ANTHROPIC_API_KEY
vesper secret list
vesper secret rm ANTHROPIC_API_KEY📌 Core Commands
| Command | Purpose |
|---|---|
vesper -q "<query>" |
One-shot question |
vesper repl |
Interactive prompt with slash commands |
vesper onboard |
5-step setup wizard |
vesper doctor |
13-check health diagnostic |
vesper monitor |
Live TUI dashboard |
vesper init <template> |
Quick-start (crypto-watcher / code-reviewer / blog-writer) |
🤖 Agents & Plugins
| Command | Purpose |
|---|---|
vesper -a <mode> -q "<q>" |
Run specific agent |
vesper --list-agents |
All 26 agents |
vesper --list-providers |
All 15 LLM providers |
vesper --list-tools |
Every tool from every plugin |
vesper plugin scaffold <name> |
Generate plugin skeleton |
vesper plugin list |
All 52 bundled plugins |
🎯 Skills
| Command | Purpose |
|---|---|
vesper skills list [--all] |
Eligible skills with source |
vesper skills info <name> |
Details + gating status |
vesper skills sources |
All 6 source dirs |
vesper skills install <src> |
From git / local path |
vesper skills update <name> |
Re-fetch git-installed skill |
vesper skills uninstall <name> |
Remove |
🔄 Gateway & Daemon
| Command | Purpose |
|---|---|
vesper gateway start [-d] |
Start gateway (foreground or detached) |
vesper gateway stop |
Stop gateway |
vesper gateway status |
Health check |
vesper gateway install-daemon |
systemd / launchd / Windows scheduled task |
vesper gateway logs |
Tail audit log |
♻️ Lifecycle
| Command | Purpose |
|---|---|
vesper update |
Pull latest + rebuild (git-installed only) |
vesper update --channel dev |
Switch to dev channel |
vesper uninstall [--purge] |
Remove install (--purge also wipes workspace) |
vesper migrate |
Apply workspace schema migrations |
🔐 Pairing & Secrets
| Command | Purpose |
|---|---|
vesper pairing list |
Pending channel pairings |
vesper pairing approve <channel> <code> |
Approve a pairing code |
vesper pairing deny <channel> <code> |
Reject |
vesper secret <backend|set|get|rm> |
OS keychain integration |
⏰ Cron & Webhooks
| Command | Purpose |
|---|---|
vesper cron list |
All scheduled jobs |
vesper cron add <job> |
Add cron job |
vesper cron remove <id> |
Remove |
vesper -a bags-hunter -q "Top 5 Solana memecoins by 24h volume, score each" ⚡ bagsfm_top_movers (limit=5, sortBy=volume)
✓ bagsfm_top_movers — 5 tokens returned
⚡ bagsfm_score_token (mint=...) × 5
✓ bagsfm_score_token — 5 scores computed
⚡ security_goplus_check × 5
✓ security_goplus_check — 5 rugcheck results
──────────────────────────────────────────────────
🌒 OpenVesper ›
## Top 5 Solana Memecoins (24h Volume)
| Rank | Token | Volume | Score | Rug Risk |
|------|--------|--------|-------|----------|
| 1 | $WIF | $42M | 82/100| 🟢 Low |
| 2 | $BONK | $31M | 76/100| 🟢 Low |
| 3 | $PEPE | $18M | 71/100| 🟡 Med |
| 4 | $POPCAT| $14M | 68/100| 🟢 Low |
| 5 | $MEW | $11M | 64/100| 🟡 Med |
Top pick by score: $WIF — large holder distribution,
established team, liquidity locked.
⚠ Not financial advice. DYOR.
vesper -a code-reviewer -q "Review PR #42 on openvesper/openvesper" ⚡ github_pr_details (repo=openvesper/openvesper, pr=42)
⚡ github_pr_diff (repo=openvesper/openvesper, pr=42)
⚡ github_repo_conventions (repo=openvesper/openvesper)
──────────────────────────────────────────────────
🌒 OpenVesper ›
## PR #42 — "Add Vercel deployment config"
### ✓ Looks good
- Workspace install command correctly uses --ignore-scripts
- Output directory matches Next.js convention
### ⚠ Concerns
- vercel.json should use installCommand not buildCommand
- Missing framework: "nextjs" field
Verdict: 🟡 Request changes (small)
# ~/.openvesper/cron.yaml
jobs:
- name: daily-sol-summary
schedule: "0 9 * * *" # 09:00 every day
agent: defi-strategist
prompt: |
Daily Solana ecosystem summary:
- SOL price action vs ETH/BTC
- Top 3 protocols by 24h TVL change
- Notable token launches in last 24h
Send to Telegram chat 123456789. Keep it short.
channels:
- telegram:123456789vesper cron add ./daily-sol-summary.yaml
vesper gateway install-daemonNow every day at 09:00 you get a Telegram message with the summary.
OpenVesper is built on three commitments — all enforced in code, not just documented.
|
|
|
- All workspace files: mode 0600 (owner read/write only)
- All workspace dirs: mode 0700
- Verified by
vesper doctorhealth check
Every tool call is logged to ~/.openvesper/audit/<date>.jsonl:
{"ts":"2026-05-24T11:23:45Z","session":"abc","agent":"bags-hunter","tool":"bagsfm_score_token","input":{"mint":"..."},"approved":true,"result":"success"}See SECURITY.md for the full security model.
openvesper/
│
├── apps/
│ ├── cli/ ← vesper CLI binary
│ ├── gateway/ ← Persistent daemon (127.0.0.1:18789)
│ ├── telegram-bot/ ← Telegram channel adapter
│ ├── website/ ← Next.js docs site (openvesper.com)
│ └── vscode-extension/ ← VSCode integration
│
├── packages/
│ ├── core/ ← Runtime, types, providers, skill loader
│ ├── plugin-sdk/ ← definePlugin / defineTool helpers
│ └── plugins/ ← 52 bundled plugins
│ ├── bagsfm/ ← Bags.fm memecoin tracking
│ ├── pumpfun/ ← Pump.fun analysis
│ ├── github/ ← GitHub API integration
│ ├── telegram/ ← Telegram channel tools
│ ├── skill-workshop/ ← Propose/approve new skills
│ └── ... (47 more)
│
├── .agents/ ← 26 markdown agent personas
├── scripts/
│ ├── install.sh ← One-line Unix installer
│ ├── install.ps1 ← Windows PowerShell installer
│ └── publish-packages.sh ← npm publish helper
├── test/
│ └── integration.test.ts ← 18 vitest tests
├── .github/workflows/
│ ├── build.yml ← CI: build + test on every push
│ └── docker.yml ← Multi-arch GHCR publish
├── Dockerfile ← Multi-stage production image
├── docker-compose.yml
├── CHANGELOG.md
├── VISION.md
├── SECURITY.md
└── README.md ← You are here
Do I need all 15 LLM provider keys?
No, just one. Anthropic and OpenAI work best for tool-heavy agents. If you want free, use Groq or Gemini.
What does it cost?
The framework is free (MIT). LLM costs vary:
- Claude Sonnet: ~$0.003 / 1K in + $0.015 / 1K out (~$0.01–0.05 per query)
- Groq / Gemini free tier: $0 with rate limits
- Local Ollama: $0, runs on your hardware
Can I use it for trading?
The framework is for analysis. Crypto plugins are read-only — they don't sign transactions. You can write your own signing plugin, but key handling is your responsibility.
Does it work offline?
Yes — use Ollama or LM Studio as the provider. Some plugins need internet, but the agent loop runs locally.
How is this different from LangChain?
LangChain is a library you import into your code. OpenVesper is a persistent daemon with channels, scheduling, and approval queues built in. See /docs/comparison for a detailed table.
Will my data go anywhere?
- Your prompts go to your chosen LLM provider
- Tool calls go to the APIs they query (Binance, GitHub, etc.)
- Nothing goes to OpenVesper servers (there are none)
- Memory is stored locally in
~/.openvesper/
Can I run multiple agents at once?
Yes. The gateway routes per-session, so one user can have multiple parallel agent conversations. Telegram + CLI + Slack can all be active simultaneously.
Windows support?
Yes. PowerShell installer, native
vesper.cmd shim, daemon via Task Scheduler. WSL2 also works.
How do I add a new LLM provider?
Implement the
LLMProvider interface in packages/core/src/providers/. ~100 lines of code. PR welcome.
Is the workspace encrypted?
Files are mode 0600 (POSIX). For at-rest encryption, use OS keychain (
vesper secret) for API keys or full-disk encryption (FileVault / LUKS / BitLocker).
| Status | Item | Target |
|---|---|---|
| ✅ Done | Skills v2 multi-source loader | v1.16.0 |
| ✅ Done | Skill Workshop plugin | v1.16.0 |
| ✅ Done | Windows + Docker installers | v1.16.0 |
| ✅ Done | Multi-arch Docker on GHCR | v1.16.0 |
| 🚧 In Progress | npm publish (@openvesper/cli) |
v1.17.0 |
| 🎯 Planned | More chat channels (Matrix, Signal) | v1.18.0 |
| 🎯 Planned | i18n CLI messages (TR, EN, ES, JA) | v1.18.0 |
| 🤔 Considering | TUI dashboard panels | v1.19+ |
| 🤔 Considering | Plugin marketplace (opt-in) | v2.x |
| ❌ Won't Do | Hosted SaaS | — |
| ❌ Won't Do | Built-in wallet signing | — |
| ❌ Won't Do | Telemetry / analytics | — |
PRs welcome. Active areas:
- More LLM providers (Cohere, AI21, Replicate)
- More chat channels (Matrix, Signal, IRC)
- More crypto plugins (Hyperliquid stats, Jito, Eigenlayer)
- More skills (community-contributed)
- Better TUI dashboard (more panels)
- i18n for CLI messages
See CONTRIBUTING.md for setup and conventions.
git clone https://github.com/openvesper/openvesper
cd openvesper
pnpm install --ignore-scripts
pnpm -r build
pnpm test # 18 vitest testsMIT — see LICENSE.
OpenVesper is an independent open-source project. Not affiliated with any chain, exchange, or LLM provider.