// open-source · apache-2.0 · python 3.13+ · local-first
██╗ ██╗███████╗██╗ ███████╗███████╗
██║ ██║██╔════╝██║ ██╔════╝██╔════╝
██║ ██║█████╗ ██║ █████╗ ███████╗
╚██╗ ██╔╝██╔══╝ ██║ ██╔══╝ ╚════██║
╚████╔╝ ███████╗███████╗███████╗███████║
╚═══╝ ╚══════╝╚══════╝╚══════╝╚══════╝
[ ok ] loading core · agent loop
[ ok ] mounting project memory · .veles/
[ ok ] provider router → 8 backends, one api
[ ok ] skills registry · 12 tools
[ ok ] modules · tui · daemon · telegram
[ -- ] ready. run veles tui to begin
A terminal-native agent that gets smarter with every session.
────────────────────────────────────────────────────────────────────────────────────────────────────────────
❯ veles tui
# Terminal-first, not an afterthought
The interactive REPL is where Veles lives. Slash inspectors surface everything live, Shift+Tab cycles modes mid-flight, and the session carries its own memory. Just run veles to drop straight into a chat with the agent.
slash inspectors
/status /tokens /context
/wiki /insights /rules
mode cycling · shift+tab
auto › planning › writing › goal
keybindings
ctrl+i tools · ctrl+r sessions
ctrl+g $EDITOR · ctrl+d quit
────────────────────────────────────────────────────────────────────────────────────────────────────────────
❯ veles curate
# Compounding memory
Every session is distilled by the Curator into per-project memory. The agent recalls relevant facts and past decisions automatically — you stop re-explaining the same context. Works under any content layout.
curate
❯ veles curate
reading 6 sessions…
✓ wrote 4 insights → .veles/insights.md
✓ wrote 1 rule → .veles/rules.md
✓ digested session → .veles/sessions/
# insight extraction catches "always prefer X"
# and "never do Y" → persistent project rules
# .veles/ — the memory tree
.veles/
├─ insights.md curated facts
├─ rules.md behavioral rules
├─ sessions/ digests
└─ tools/ typed python
Local-first & sandboxed. No telemetry, no cloud sync. The agent sees only the active project directory.
❯ veles init --layout <name>
# Pluggable content layouts
How your content is organised is pluggable — and memory works identically under all of them. Custom packs are a single layout.toml.
llm-wiki
DEFAULT
sources/ raw inputs
wiki/ authored pages
AGENTS.md
Karpathy-style knowledge base. veles add turns a source into a cited wiki page.
notes
notes/ flat markdown
AGENTS.md
A single flat notes directory — no hierarchy, no ceremony.
bare
.veles/ memory only
AGENTS.md
No content scaffold at all — ideal for code repos & free-form work.
❯ veles route show
# Provider-agnostic routing
OpenRouter, Anthropic, OpenAI, Gemini, Ollama, llamacpp, or your claude/gemini CLI subscription. Route task types — planning, compression, insights — to different models. Set it once, forget it.
PROVIDERENV VARNOTES
openrouter ★OPENROUTER_API_KEYone key · hundreds of models
anthropicANTHROPIC_API_KEYdirect api
openaiOPENAI_API_KEYdirect api
geminiGEMINI_API_KEYdirect api
claude cli—uses your subscription
ollama—local · :11434
❯ veles route set compressor anthropic/claude-haiku-4-5
❯ veles run --provider ollama --model llama3.2 "..."
❯ veles skill list
# Skills & modules
Reusable prompt-blocks become agent tools automatically. Python modules hook into the agent lifecycle. Both install from a git URL.
skills · SKILL.md → tool
❯ veles skill add <git-url>
❯ veles skill promote my-skill # → global
❯ veles skill dedup # find near-dupes
modules · lifecycle hooks
❯ veles module add <git-url>
pre_turn · post_turn
pre_tool_call · post_tool_call → veto
❯ veles daemon start
# Daemon + Channels
Run Veles as a persistent daemon with an HTTP/WebSocket API, then attach channels — Telegram, Slack, Discord, email, anything. Telegram ships built-in; the rest are a small gateway away. Each user gets a persistent session.
channels
telegram · slack · …
tui
# start & expose
❯ veles daemon token add default
❯ veles daemon start # :8765
# endpoints
POST /v1/runs · WS /v1/runs/{id}/events
# channels gateway — telegram built-in
❯ veles channel run --channel telegram
❯ veles daemon # control panel — project → daemons → channels, with start / stop / restart inline
❯ veles run "who is this for?"
# What you build with it
Same core, same memory — two very different deployments.
// org
The AI-first company
Every doc, decision, and session flows into one shared knowledge base. Daemons and channels — each with its own config — become the interface for staff and leadership. Ask in Slack, get an answer grounded in company memory.
sources
→
knowledge base
→
daemon · channels
→
your team
// solo
The personal assistant
Runs on your laptop — even with small local models like qwen3:4b-instruct. Keeps your personal knowledge base, plans, and projects in one place. Scheduled jobs run in the background: reminders, recurring checks, the weekly review.
❯ veles job add --schedule "0 9 * * 1" --prompt "weekly review"
✓ scheduled · every monday 09:00
❯ veles run "what should I focus on today?"
❯ veles module list
# Built clean — and built to extend
A minimal core — memory, agent loop, provider protocol, tool registry. Everything else is an optional, loadable module. Single responsibility, no god-files, and a test suite that runs without touching the network. Open source under Apache-2.0 — contributors welcome.
3200+ tests
runs offline · no network
core + modules
minimal core, rest loadable
Apache-2.0
patent grant included
git-installable
modules & skills from any url
core · minimal, always-on
memory
agent loop
provider protocol
tool registry
modules · optional, loadable
tui
daemon
channels
deep research
scheduler
+ your own
# coming soon
A plugin marketplace
Install community modules and skills, then assemble your own ideal build. Until then, pull anything from a git url:
❯ veles module add <git-url>
❯ veles skill add <git-url>
Provider adapters, skills, module hooks, locales — good first contributions all live at the edges, not the core.
❯ Contribute❯ # five commands to first answer
# Quick start
macOS / Linux, Python 3.13+. Install uv first; the package ships as veles-ai, the command is veles.
getting-started.sh
01curl -LsSf https://astral.sh/uv/install.sh | sh
02uv tool install veles-ai
03export OPENROUTER_API_KEY=sk-or-v1-...
04mkdir my-project && cd my-project && veles init
05veles run "Read AGENTS.md and describe this project."