Open source · GPLv3 · ~12K lines of Python

The open-source
agent engine.

// hunt. patch. ship.

A lightweight AI agent that flies on any model — Claude, GPT, Gemini, DeepSeek, Kimi, Qwen — with no API key. Fork it, bend it, run it offline. No build step. No gatekeeping. Just talons.

$pip install duluscopy
27
Built-in tools
11
Providers
263+
Unit tests
dulus — engine
Anthropic ClaudeOpenAI GPTGoogle GeminiDeepSeekKimiQwenNVIDIA NIM · 14 freeOllama localZhipu GLMMiniMax Anthropic ClaudeOpenAI GPTGoogle GeminiDeepSeekKimiQwenNVIDIA NIM · 14 freeOllama localZhipu GLMMiniMax
2.8M+
Tool calls executed
and counting
40+
Models supported
11 providers
263+
Unit tests
all green
12K
Lines of Python
readable. forgiving.
// loadout

Everything in the clip

27 built-in tools. 14 features. No build step. No gatekeeping.

🤖
01

Multi-Provider

Anthropic · OpenAI · Gemini · DeepSeek · Kimi · Qwen · Zhipu · MiniMax · Ollama · LM Studio · custom. /model to switch mid-session.

🔧
02

27 Built-in Tools

Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, NotebookEdit, GetDiagnostics, Memory, Tasks, Agents, Skills — everything the agent needs.

🔌
03

MCP Integration

Drop a .mcp.json. Any MCP server registers instantly as mcp__server__tool. stdio, SSE, HTTP. Manage with /mcp.

🧩
04

Auto-Adapter

Point it at any Python repo — it becomes a live tool with zero manifest. Hot-reload in-session. No restart. Tools appear immediately.

🦅
05

Sub-Agents

Spawn typed agents — coder, reviewer, researcher, tester — each in its own git worktree. Agents communicate via message passing. True parallel.

🎙️
06

Voice Input

Offline STT via Whisper. No API key. No cloud. /voice lang zh · /voice device. Hint domain terms with voice_keyterms.txt.

🧠
07

Brainstorm Mode

Multi-persona AI debate. Dulus generates expert roles and has them argue — Skeptic PM, Staff Eng 2037, Hot-take Intern. /brainstorm.

08

SSJ Developer Mode

Token counts, stream latency, tool inspector, prompt viewer. Nothing hidden. When you need to see everything. /ssj.

📡
09

Telegram Bridge

Run Dulus from your phone. Slash commands, vision, file sharing, and streaming responses from Telegram. Poke a long-running agent from the bus.

💾
10

Checkpoints

Auto-snapshot conversation + files every turn. Break something? /checkpoint 042 and files + context rewind together instantly.

🧬
11

Persistent Memory

Dual-scope (user + project). Ranked by confidence × recency. Mark memories gold to pin forever. /memory consolidate.

📋
12

Plan Mode

Read-only analysis phase before touching anything. Only plan.md is writable. Think first, break things later. /plan.

👁️
13

Wake Words

Always-on, always-offline. Say "hey dulus" or "oye dulus" — the agent leans in. No cloud. No hot mic logs. /wake set.

🖥️
14

Dulus OS Shell

A full OS surface for the agent — boot sequence, desktop, app launcher. The CLI becomes a workstation. Try it live →

// bring your own brain

Works with every model
worth knowing.

Swap models mid-session with /model <name>. Auto-detection handles provider prefix.

Anthropic
Claude Opus · Sonnet · Haiku
ANTHROPIC_API_KEY
OpenAI
GPT-4o · O3 · O1 · GPT-5
OPENAI_API_KEY
Google
Gemini 2.5 Pro · Flash · Ultra
GEMINI_API_KEY
DeepSeek
Chat · Reasoner · V3 · Coder
DEEPSEEK_API_KEY
Kimi
Moonshot · K2.5 · kimi-latest
MOONSHOT_API_KEY
Qwen
Max · Plus · QwQ · 2.5-Coder
DASHSCOPE_API_KEY
Zhipu
GLM-4 · GLM-4-Flash
ZHIPU_API_KEY
MiniMax
Text-01 · VL-01
MINIMAX_API_KEY
OllamaFREE
Any local model — Llama, Mistral, Phi, Gemma…
NO KEY NEEDED
LM StudioFREE
Local GUI · OpenAI-compat endpoint
NO KEY NEEDED
NVIDIA NIMFREE
14 frontier models · 40 RPM each
NVIDIA_API_KEY
Custom
Any OpenAI-compatible endpoint
CUSTOM_BASE_URL
Free Tier

14 frontier models.
Zero cost.

NVIDIA NIM hosts frontier models at 40 RPM each, free. Sign up at build.nvidia.com and Dulus routes to them automatically — with fallback when limits hit.

Get free NVIDIA key ↗
14
Models
40
RPM each
AUTO
Fallback
DeepSeek R1
REASONING
DeepSeek V3
INSTRUCT
Kimi K2.5
LONG CONTEXT
Llama 3.3 70B
META
Llama 3.1 405B
META · FLAGSHIP
Qwen2.5 Coder
ALIBABA
Qwen3 235B
MoE
Phi-4
MICROSOFT
Gemma 3 27B
GOOGLE
Mistral Large
INSTRUCT
GLM-4
ZHIPU AI
MiniMax T-01
TEXT + VISION
Llama Nemotron
REASONING
Mistral Nemotron
NVIDIA-TUNED
AUTO-FALLBACK: deepseek-r1 kimi-k2.5 llama-3.3-70b mistral-nemotron …14 deep. zero downtime.
// zero cloud. zero key.

Runs offline.
Completely.

no internet required
# pull a model from ollama.com $ ollama pull qwen2.5-coder pulling manifest... ████████████ 100% ✓ model ready # point dulus at it $ dulus --model ollama/qwen2.5-coder ▲ DULUS ollama/qwen2.5-coder · local ✓ model loaded · 0ms cold start ✓ no API key · no telemetry · no network [Dulus] »
  • ✈️
    Air-gapped
    No packets leave your machine. Works on flights, submarines, government networks.
  • 🦙
    Any Ollama model
    Everything on ollama.com — Llama 3, Mistral, Phi-4, Gemma, Qwen, DeepSeek local…
  • LM Studio compatible
    Running LM Studio? Point CUSTOM_BASE_URL at it. Same Dulus, zero changes.
  • Full tool support
    Function-calling models (qwen2.5-coder, llama3.3, phi4) get every Dulus tool — no cloud required.
Pro tip For coding: ollama/qwen2.5-coder:32b
For reasoning: ollama/qwq
For speed: ollama/phi4-mini
// /voice · /tts

Talk. Listen. Ship.

Full offline voice pipeline. Whisper in, Kokoro out. No cloud. No subscription. Your machine, your voice.

🎙️
Voice Input
Whisper · offline · multilingual
/voice
# press-and-hold to record $ /voice ✓ Whisper loaded · base.en model ✓ mic: MacBook Pro Microphone ● recording... speak now ✓ transcribed: "refactor the auth module" ▲ 🦅 Sharpening talons on the AST...
  • Offline Whisper — no API key
  • Any microphone · /voice device
  • Multilingual · /voice lang zh
  • Hint domain terms via voice_keyterms.txt
🔊
TTS — Dulus Talks Back
Kokoro · offline · natural voice
/tts
# enable voice output $ /tts ✓ Kokoro engine loaded ✓ voice: af_heart · 24kHz # dulus now speaks its responses aloud ▶ playing: "I've refactored auth.py. Tests pass."
  • Kokoro TTS — fully offline, no ElevenLabs
  • Natural voice · multiple voice profiles
  • Streams audio as response generates
  • Wake words: "hey dulus" · "oye dulus"
// /telegram token chat_id

Dulus in your pocket.

Full Dulus in Telegram. Slash commands, model switching, file sharing, streaming responses. Poke a long-running agent from the bus.

telegram bridge · live
# setup — one time $ /telegram <bot_token> <chat_id> ✓ bot connected · persists on restart # from telegram: switch models on the fly You: /model nvidia-web/deepseek-r1 🦅 Switched → deepseek-r1 · free tier # run a full task from your phone You: refactor auth, no compromise 🦅 On it. Reading session.py... ✓ 3 files · +142 -218 · tests 42/42 ✓
  • 📲
    Full Dulus in Telegram
    Every slash command, every model, every tool — from your phone.
  • Streaming responses
    Responses stream in real-time as Telegram messages. Long tasks post progress updates.
  • 📎
    File sharing
    Send code files, get diffs back. Send a screenshot to the vision model.
  • 🔑
    One env var
    TELEGRAM_BOT_TOKEN — that's the whole config. Auto-starts next launch.
Setup 1. Create a bot via @BotFather
2. /telegram <token> <chat_id>
3. Done — persists across restarts
// /remember · /checkpoint

Never lose context.
Ever.

Like git commits for your conversations. Persistent memory survives sessions. Checkpoints let you rewind files and context together.

🧬

Persistent Memory

Facts, preferences, project context — remembered across sessions. Ranked by confidence × recency. Mark memories gold to pin forever.

memory
$ /remember "always use anyio for async" ✓ saved · confidence: 1.0 $ /memory search async ♛ anyio for async [conf: 1.0 · gold] auth_module_patterns [conf: 0.94] $ /memory consolidate ✓ 3 new memories distilled from session
💾

Checkpoints

Auto-snapshot conversation + files every turn. Break something? Rewind. Files and context restored together. No git stash drama.

checkpoints
$ /checkpoint list #041 pre-refactor 2h ago (files: 14) #042 pre-migration 1h ago (files: 8) #043 post-auth-fix [current] # something went wrong — rewind $ /checkpoint 041 ✓ files restored · 14 files rewound ✓ context restored to #041
// / + tab to explore

Every command.
One cheat sheet.

// free tier · no card

Frontier models, on tap. $0.

Capture a free browser session (Gemini, Claude.ai, Kimi) and drive frontier models like an API — or grab a NVIDIA NIM key for 14 top models at 40 req/min each. Or run fully offline on Ollama.

▲ NVIDIA NIM · 14 models free · auto-fallback chain
// install

Get Dulus running

One command, any OS. Or grab the Windows installer — no Python needed.

// windows · no python · no pip · 1-click

Download for Windows — no Python needed

Double-click and fly. Embedded Python, every library, and the desktop GUI come bundled inside the installer. Nothing to install, nothing to configure, no terminal. #DulusNoPy

no pythonno pipno terminalgui included~85 MB
Dulus FreeWindows installer · .msi · v3.3.3 per-user install · no admin · uninstall anytime
// recommended · one command

Auto-installer

Detects your OS, package manager, Python version — then asks which profile to install.

$curl -fsSL https://raw.githubusercontent.com/KevRojo/Dulus/main/install.sh | bash
PS>irm https://raw.githubusercontent.com/KevRojo/Dulus/main/install.ps1 | iex
Then pick a profile:
full~500 MB
Everything: voice (Whisper + PortAudio), browser tools (Playwright), MemPalace semantic memory, tmux, WSL audio bridge.
voicebrowsermempalacetmux
standard~300 MB
REPL + webchat + tmux daemon + Telegram bridge. The sweet spot for most workflows.
replwebchattmuxtelegram
basic~150 MB
Bare pip install dulus. For servers, CI runners, minimal sandboxes.
corecli only
customà la carte
Walks you through every feature with a yes/no toggle.
interactivegranular
// questions we actually get

FAQ

Use a model with native function-calling support: qwen2.5-coder, llama3.3, mistral, phi4. Base models without tool-use fine-tuning won't dispatch tools reliably.
In the REPL: /config custom_base_url=http://your-server:8000/v1 then /model custom/your-model-name. Any OpenAI-compatible server works.
--accept-all auto-approves every write and shell command. On prod: don't. Use /plan mode (read-only, only plan.md writable) or default auto mode that prompts before writes.
Add domain terms to .dulus/voice_keyterms.txt, one per line. Whisper respects the hint list. Works great for obscure package names, internal project names, acronyms.
Type /cost in the REPL. Dulus tracks token usage and estimates USD cost for every turn. Session totals persist across /save//load.
$DULUS — community-launched on pump.fun (Solana). Not an ICO, no presale, no team allocation. It's a meme on a working tool.

View $DULUS page →
Yes and please do. Edit dulus/spinners.py, add your line, PR it. Current record holder: "☕ If I'm taking so long, don't worry, I'm just talking to your mom."
// why dulus

Every other agent
asks for a key.

We went the other way. Here's what the code actually does — compared to what the alternatives actually do.

Dulusopen source · GPLv3
$0 / month
you pay only what you use to the API provider
or $0 with Ollama / NVIDIA NIM free tier
Claude Code
$20 / month
Anthropic Pro required for full use
Cursor
$20 / month
IDE subscription
Aider
API cost only
open source · no sub
Providers
11 (Anthropic, OpenAI, Gemini, DeepSeek, Kimi, Qwen, Zhipu, MiniMax, Ollama, LM Studio, NVIDIA)
1–2
4–5
8+
Works fully offline (Ollama/LM Studio)
Free frontier models (NVIDIA NIM · 14 models)
Harvest chats from other AI tools
✓ Claude · Kimi · Gemini · DeepSeek · Qwen
Switch model mid-session
✓ /model
✓ (restart)
Built-in tools
31 core + 11 tmux
~15
~8
~12
MCP servers
✓ /mcp · stdio + SSE + HTTP
partial
LSP diagnostics (pyright/mypy/tsc/shellcheck)
✓ GetDiagnostics
Jupyter notebook editing
✓ NotebookEdit
Local OCR (offline, no vision tokens)
✓ ExtractTextFromImage
tmux integration (11 tools)
✓ sessions · panes · windows · capture
Batch API (process 100s of prompts async)
✓ /batch · /claude-batch
Plan mode (read-only before touching files)
✓ /plan · EnterPlanMode tool
Checkpoints (rewind files + context together)
✓ /checkpoint · /rewind
undo (git only)
Sub-agents (typed, parallel, own worktree)
✓ /agents · /worker · /fork
partial
Skills system (custom markdown agents)
✓ user + project + bundled
Context compaction
✓ /compact
Cloud sync (GitHub Gist)
✓ /cloudsave
Voice input (offline Whisper)
✓ /voice
TTS — agent speaks back (Kokoro, offline)
✓ /tts · /say
Wake words (always-on, offline)
✓ /wake · "hey dulus"
Telegram bridge (control from phone)
✓ /telegram
IDE required
✗ pure terminal
✗ terminal
✓ VSCode fork
✗ terminal
Brainstorm mode (multi-persona AI debate)
✓ /brainstorm
Roundtable (multiple models discuss a topic)
✓ /roundtable
SSJ developer mode (full token + tool inspector)
✓ /ssj
Daemon mode (background agent)
✓ /daemon · /bg · /afk
MemPalace (semantic long-term memory)
✓ /mem_palace
project memory
Dulus OS (visual mini-OS for the agent)
✓ LaunchSandbox · /sandbox
Soul / personality system
✓ /soul · personality_config.py
🦅
No subscription. No lock-in. No Narnia.
Every feature above ships in pip install dulus. The source is ~12K lines of readable Python — fork it, read it, bend it. If a provider goes down, swap the model and keep going. You own the agent.
⇩ Get Dulus
// get started

Run an agent on your terms.

Your machine. Your data. Your model. In 30 seconds.