[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-75466":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":21,"hasPages":21,"topics":22,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":34,"trendingCount":15,"starSnapshotCount":15,"syncStatus":35,"lastSyncTime":36,"discoverSource":37},75466,"Dulus","KevRojo\u002FDulus","KevRojo","The best CLI agent -   The only system capable of maintaining a 98% cache hit rate across a 2 billion token session lasting 3 months. — reads & edits files, runs Bash, greps your repo, browses the web, ships commits, all from your terminal. ","https:\u002F\u002Fkevrojo.github.io\u002FDulus\u002F",null,"Python",413,23,1,0,196,54.14,"GNU General Public License v3.0",false,"main",true,[23,24,25,26,27,28,29,30,31],"agent","ai","assistant","claw","dulus","falcon","openai","python3","web-provider","2026-06-12 04:01:18","# ▲ DULUS\n\n> **Use IA agents without an API key. $0.**\n>\n> **Hunt. Patch. Ship.** A Python autonomous agent that flies on any model — and uniquely opens your browser, captures your **Gemini** (guest, no login) · **Claude.ai** · **Claude Code** · **Kimi.com** · **Qwen** · **DeepSeek** session, then lets you drive frontier IA as if it were an API. **No api key. No subscription. No credit card.**\n>\n> Plus 100+ paid providers via LiteLLM (OpenRouter, Groq, Together, xAI, Mistral, Bedrock, …), local models via Ollama, `\u002Flang` in 34 languages, Mesa Redonda multi-model debate, voice in\u002Fout, local OCR, MemPalace semantic memory, embedded sandbox OS. ~12K lines of readable Python. No build step. No gatekeeping. Just talons.\n>\n> `pip install dulus` → press Enter → working IA in 30 seconds. Try it.\n\nSET \u002Fsticky_input ON since the first run for the best experience!\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fdulus-bird.png\" alt=\"Dulus — Cigua Palmera\" width=\"320\">\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\u003Ci>The Dulus (Cigua Palmera) — Dominican national bird. Named after the bird, not the rocket.\u003C\u002Fi>\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"#quick-start\">\u003Cb>Quick Start\u003C\u002Fb>\u003C\u002Fa> ·\n  \u003Ca href=\"#models\">\u003Cb>Models\u003C\u002Fb>\u003C\u002Fa> ·\n  \u003Ca href=\"#features\">\u003Cb>Features\u003C\u002Fb>\u003C\u002Fa> ·\n  \u003Ca href=\"#permissions\">\u003Cb>Permissions\u003C\u002Fb>\u003C\u002Fa> ·\n  \u003Ca href=\"#mcp\">\u003Cb>MCP\u003C\u002Fb>\u003C\u002Fa> ·\n  \u003Ca href=\"#plugins\">\u003Cb>Plugins\u003C\u002Fb>\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fdulus\u002F\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fdulus.svg?style=flat-square&color=ff6b1f&labelColor=07070a&label=pypi\" alt=\"pypi\"\u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fpypi.org\u002Fproject\u002Fdulus\u002F\">\u003Cimg src=\"https:\u002F\u002Fstatic.pepy.tech\u002Fbadge\u002Fdulus?style=flat-square\" alt=\"downloads\"\u002F>\u003C\u002Fa>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.11+-ff6b1f?style=flat-square&labelColor=07070a\" alt=\"python\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-GPLv3-ff6b1f?style=flat-square&labelColor=07070a\" alt=\"license\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fversion-v0.2.89-ff6b1f?style=flat-square&labelColor=07070a\" alt=\"version\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fproviders-100%2B%20via%20LiteLLM-ff6b1f?style=flat-square&labelColor=07070a\" alt=\"providers\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ftools-30%2B-ff6b1f?style=flat-square&labelColor=07070a\" alt=\"tools\"\u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Ftests-263+-ff6b1f?style=flat-square&labelColor=07070a\" alt=\"tests\"\u002F>\n  \u003Ca href=\"https:\u002F\u002Fx.com\u002FKevRojox\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fx-%40KevRojox-ff6b1f?style=flat-square&labelColor=07070a&logo=x\" alt=\"x\"\u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n> **Official X \u002F creator handle:** [@KevRojox](https:\u002F\u002Fx.com\u002FKevRojox) — that's me, the only contributor to this repo. Any other account claiming to be Dulus is a copycat.\n>\n> **$DULUS AI token  Solana):** [`9R8rrjXxcfQPmLTCLhmVpjr2uesjjkcgkinE6Lwdpump`](https:\u002F\u002Fdexscreener.com\u002Fsolana\u002F9R8rrjXxcfQPmLTCLhmVpjr2uesjjkcgkinE6Lwdpump)\n> \n> **$DULUS AI GemPump  Solana):** [`9R8rrjXxcfQPmLTCLhmVpjr2uesjjkcgkinE6Lwdpump`](https:\u002F\u002Fwww.gempump.io\u002Fen\u002Ftoken\u002Fdulusai) \n\n> I created this token. I won't sell. I will keep building. This open-source project stays free forever — business version incoming. 🦅🇩🇴\n\n### Why a Solana Token?\n\nSomeone from the community launched a $DULUS token before I did. Good intentions — but confidence was shaky and the early believers were at risk of being taken advantage of by people who didn't actually care about the project.\n\nI didn't want that. The people who bet on Dulus early deserved a token backed by the actual builder. So I launched the official one myself — full transparency, public GitHub, my name on it. No anonymous dev. 30M tokens locked. Just the project and its creator.\n\nI'm top holder. I bought my position with my own funds. I'm not selling.\n\n### $DULUS — Token Utility Roadmap\n\nThe token isn't decoration. It's the fuel layer for everything Dulus is building.\n\n| Phase | Utility |\n|---|---|\n| **Now** | Community ownership. Creator-fee rewards locked on-chain to the builder. Alignment over extraction. |\n| **Business v1** | $DULUS holders get early access + discounted seats on the Dulus Business tier (multi-user workspaces, cloud-hosted instances, shared MemPalace). |\n| **Credits** | Pay for Dulus Business API credits with $DULUS — provider costs, inference minutes, premium model usage. |\n| **Deployments** | Spin up a cloud Dulus instance and pay the hosting with $DULUS. No fiat friction, no middleman. |\n| **Subscriptions** | Monthly Dulus Pro subscription payable in $DULUS. Hold enough → fee discount tier. |\n| **Governance** | Top holders vote on feature priority and plugin marketplace policies. The flock decides. |\n\n> The open-source REPL stays free forever. $DULUS is the key to the business layer — not a gate on what already exists.\n\n---\n\n**A message to the community —**\n\nI want to talk about the token. Honestly. No hype.\n\nI didn't launch it to get rich. The community launched it first, and when I saw early believers exposed without the actual builder behind it, I stepped in. I bought my position using the contract's own creator rewards. Zero personal capital deployed. I haven't sold a single token.\n\nBut there's something bigger I want you to understand:\n\n**$DULUS has a real purpose.**\n\nThe open-source project isn't going anywhere. The REPL, the tools, the free model tier — that stays free forever. But Dulus is growing into a business layer: cloud-hosted instances, multi-user workspaces, model credits, managed deployments.\n\nAnd that business layer is going to run on $DULUS.\n\nThe token will be how you pay for Pro subscriptions. How you buy inference credits. How you spin up a cloud instance without fiat friction. Holders with enough weight get automatic tier discounts. And eventually — the flock votes: top holders decide feature priority and plugin marketplace policies.\n\nThis isn't a promise. It's the architecture. That's how I've designed it.\n\nSo when someone asks \"what's the token for\" — the answer is: it's the fuel for Dulus's business layer. The more I build, the more it makes sense to hold.\n\nWe keep flying. 🦅🇩🇴\n\n— KevRojo \u002F [@KevRojox](https:\u002F\u002Fx.com\u002FKevRojox)\n\n-----\n\n$Dulus Ai CA > 9R8rrjXxcfQPmLTCLhmVpjr2uesjjkcgkinE6Lwdpump\n\n-----\n\u003Cp align=\"center\">\n  \u003Ccode>pip install dulus\u003C\u002Fcode>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fdivider.svg\" alt=\"\" width=\"100%\">\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fkevrojo.github.io\u002FDulus\u002F\">\u003Cb>🌐 Visit the Dulus website →\u003C\u002Fb>\u003C\u002Fa>\u003Cbr>\n  \u003Csub>The site covers features, demos, and details not documented in this README.\u003C\u002Fsub>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fdivider.svg\" alt=\"\" width=\"100%\">\u003C\u002Fp>\n\n## 🔥 What's new\n\n> Full changelog: [`docs\u002Fnews.md`](docs\u002Fnews.md)  ·  Inside the REPL: `\u002Fnews`\n\n- **Dulus Agent — Telegram communities.** Dulus evolved from a CLI tool into a live AI agent inside Telegram groups. The first fully autonomous AI moderating and conversing in real communities — not a bot, not a filter, a real agent. Groups pay in $DULUS to activate him. We host Dulus for them — that's the business model. The CLI stays free forever. This is the paid layer. 🦅🇩🇴\n\n- **v0.2.93 — IA WITHOUT AN API KEY, FIRST-RUN.** 🦅 The welcome wizard now offers, by default, to open Gemini in a browser and capture its **guest session** — no Google login, no API key, no credit card. From `pip install` to working IA in 30 seconds. Same flow works for Claude.ai \u002F Kimi.com \u002F Qwen \u002F DeepSeek if you have those accounts. This was Dulus's ace under the sleeve. Now it's the front door.\n- **v0.2.92** — **`\u002Flang` command.** 34 ISO codes + free-form descriptors. `\u002Flang zh`, `\u002Flang ja`, `\u002Flang pt-br`, `\u002Flang \"speak as my gym tutor\"`, `\u002Flang \"tigre de calle dominicano\"`, `\u002Flang \"Yoda\"`. The model role-plays the voice across the whole session. Triggered after Doubao (China's biggest IA assistant) started referring traffic to the repo.\n- **v0.2.91** — **CORS on the daemon.** The Android Sandbox APK now connects every app live — same daemon, finally cross-origin reachable.\n- **v0.2.89** — **Sandbox embedded INSIDE the desktop GUI.** Click `🦅 Sandbox` in the GUI Web tab → the Dulus OS renders inside the content frame via pywebview subprocess + Win32 `SetParent` reparent. Not a popup. Inside the frame.\n- **v0.2.89** — **Local OCR shipped first-class.** `\u002Focr` + `ExtractTextFromImage` tool, `WebBridgeScreenshot` auto-OCRs, `\u002Fimg` sends image + verbatim OCR text together. Zero vision-model tokens for receipts \u002F code screenshots \u002F error stacks.\n- **v0.2.89** — **`kepano\u002Fobsidian-skills` bundled.** Dulus writes Obsidian-flavored markdown by default. Open `~\u002F.dulus\u002Fmemory\u002F` as an Obsidian vault → instant graph view.\n- **v0.2.88** — **LiteLLM gateway: one provider entry, 100+ backends.** OpenRouter, Groq, Together, Bedrock, Vertex, Cohere, Perplexity, xAI, Mistral, Fireworks, Anyscale, Replicate, Azure, DeepInfra — the welcome wizard auto-installs the package and asks for the right per-backend key.\n- **v0.2.85** — **Slim wheel 11.4 MB → 2.5 MB.** Smaller than the original baseline.\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fdivider.svg\" alt=\"\" width=\"100%\">\u003C\u002Fp>\n\n## What is this\nTalent cant be copied.\n\nDulus Reduce your IA costs by 60% parsing webchats and claude-code directly. Write poetry while Anthropic only see text.\nUse claude-code as an API without the new 'extra-usage' wall \u003C3\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fpoetry-banner.png\" alt=\"Anthropic only sees text while you and Claude are writing poetry\" width=\"100%\">\u003C\u002Fp>\n\n\u003Cimg width=\"1240\" height=\"882\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F27dd76bc-8919-4bb9-b3c3-38ae7d92e482\" \u002F>\n\n\n\u003Cp align=\"center\">\n  \u003Csub>⚡ \u003Cb>Saves you Claude tokens?\u003C\u002Fb> Throw a sat — BTC: \u003Ccode>1JzatQDn9fMLnKTd3KYgztsLHC95bJEzSN\u003C\u002Fcode>\u003C\u002Fsub>\n\u003C\u002Fp>\n\n\nAnother reminder of a Dulus magic spell: \nWanna get stock prices, history , etc? \n\n\u002Fplugin install yfinance@https:\u002F\u002Fgithub.com\u002Franaroussi\u002Fyfinance\n\nthem:\n\u002Fplugin reload\n\ndulus get the prices of NVDA, TSLA, SP500:\n\n\u003Cimg width=\"2094\" height=\"1365\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F1551d651-9d69-4607-bac0-4adbde645783\" \u002F>\n\nBe creative!!! \n\nDulus adapt any python repository \u003C3\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fdivider.svg\" alt=\"\" width=\"100%\">\u003C\u002Fp>\n\n\nDulus is a **lightweight Python reimplementation of Claude Code** that isn't locked to Claude. It ships the whole loop — REPL, tool dispatch, streaming, context compaction, checkpoints, sub-agents, voice, Telegram bridge, MCP, plugins — in roughly **12K lines you can actually read**. Fork it. Bend it. Run it offline against Qwen on your M2.\n\n> **v0.2.60 — May 13, 2026** — **WebBridge**: browser automation with Playwright. Navigate, click, type, evaluate JS, take screenshots — all from the CLI. `pip install dulus[webbridge]` to enable.\n> Type `\u002Fnews` to see the full changelog.\n\n---\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fsec-quickstart.svg\" alt=\"Quick Start\" width=\"100%\">\u003C\u002Fp>\n\n## Quick Start\n\n### Option A — One-liner installer (recommended)\n\n**Linux \u002F macOS \u002F WSL \u002F Termux:**\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Finstall.sh | bash\n```\n\n**Windows (PowerShell):**\n\n```powershell\nirm https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Finstall.ps1 | iex\n```\n\nThe installer detects your OS, package manager, Python version, and WSLg\naudio bridge, then asks which profile you want:\n\n- **`full`** — everything: voice (Whisper + PortAudio), browser tools\n  (Playwright), MemPalace semantic memory, tmux, WSL audio bridge\n  (~1.5 GB).\n- **`standard`** — REPL + webchat + tmux daemon + Telegram bridge\n  (~300 MB).\n- **`basic`** — bare `pip install dulus` for servers \u002F minimal sandboxes\n  (~150 MB).\n- **`custom`** — toggle each feature one by one.\n\nIt installs only what's missing and never silently runs `sudo` — you\nchoose between auto-install, \"show me the command\", or skip.\n\nPower-user flags:\n\n```bash\n# Preview without changing anything\ncurl -fsSL ...\u002Finstall.sh | bash -s -- --dry-run\n\n# Non-interactive install (CI \u002F scripts)\ncurl -fsSL ...\u002Finstall.sh | bash -s -- --profile=full --pipx\n\n# Latest pre-release\ncurl -fsSL ...\u002Finstall.sh | bash -s -- --pre\n```\n\n```powershell\n# PowerShell equivalents\nirm ...\u002Finstall.ps1 | iex\n$env:DULUS_PROFILE='standard'; irm ...\u002Finstall.ps1 | iex   # preset via env\n.\\install.ps1 -DryRun -Profile full                        # local run\n```\n\n### Option B — Docker (zero local Python setup)\n\n```bash\n# 1. Grab the compose file + env template\ncurl -fsSLO https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocker-compose.yml\ncurl -fsSLO https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002F.env.example\nmv .env.example .env   # then add your API keys\n\n# 2. Pull and run (WebChat at http:\u002F\u002Flocalhost:5050 — shifted off 5000\n#    so it doesn't collide with a native Dulus install on the same host)\ndocker compose up -d\n\n# 3. Or jump into the REPL inside the container\ndocker compose exec dulus dulus\n```\n\nImage: [`ghcr.io\u002Fkevrojo\u002Fdulus`](https:\u002F\u002Fghcr.io\u002Fkevrojo\u002Fdulus) · Memory persists in the `dulus-memory` volume.\n\n### Option C — Manual pip \u002F source\n\n\u003Cimg alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fa5a447c6-2cce-42a5-87f8-7c3bc8367987\" \u002F>\n\n-----\n\n\u003Cimg alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F72526ae1-b69f-4529-adc7-eef1cd3876c8\" \u002F>\n\n-----\n\n\u003Cimg alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F986ae7b5-5400-48aa-80eb-cdfd7dbb706e\" \u002F>\n\n-----\n\nROUND TABLE (DULUS UNIQUE FEATURE)\n\n\u003Cimg alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F9e8f17ed-6ca2-4ae0-b8c3-146ae5fef491\" \u002F>\n\nDulus is the first one meeting multiple models at the same time working for the same objective and sharing their ideas.\n\n\n\n### One-liner\n\n```bash\npip install dulus && dulus              # core CLI — fast, no compile, works on termux\npip install \"dulus[memory]\" && dulus    # +MemPalace per-turn memory (pulls chromadb)\n```\n\nThat's it. Dulus prompts you for a key on first run. The `[memory]` extra pulls in `mempalace` and its `chromadb` chain — skip it on Android\u002Ftermux or anywhere wheels for `numpy`\u002F`onnxruntime` aren't available; the CLI still boots and chats fine without it.\n\nThanks for all the love on PyPi, the launch on PyPi was on 05-05-2026\n-----\n\n\u003Cimg width=\"2593\" height=\"1044\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F114b9ab1-e49f-490a-97b8-872f70b859bd\" \u002F>\n\n-----\n\n### From source (hacking on Dulus itself)\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FKevRojo\u002FDulus && cd Dulus\npip install -e .          # editable install\ndulus\n```\n\n### Termux \u002F Android\n\nThe default install pulls `mempalace` and `sounddevice`, both of which need a NumPy that has no prebuilt wheel for `aarch64-android` — pip will try to build NumPy from source and fail. Install around it:\n\n```bash\npkg install python python-numpy python-pillow build-essential\npip install --no-deps dulus\npip install anthropic openai httpx requests rich prompt_toolkit Flask bubblewrap-cli mempalace\n```\n\nSkip `sounddevice` (no usable PortAudio on Android — voice features won't work anyway). Dulus's runtime is graceful: voice \u002F MemPalace just degrade if their deps aren't there, the CLI still boots and chats fine.\n\n### Pick a model\n\n```bash\nexport ANTHROPIC_API_KEY=sk-ant-...     # or OPENAI_API_KEY, GEMINI_API_KEY, ...\ndulus\n```\n\n**Zero API keys?** Two free paths:\n\n```bash\n# 1. NVIDIA NIM — 14 models free, 40 RPM each, no card\ndulus --model nvidia-web\u002Fdeepseek-ai\u002Fdeepseek-r1\n\n# 2. Fully offline via Ollama\nollama pull qwen2.5-coder\ndulus --model ollama\u002Fqwen2.5-coder\n```\n\nOr pipe it like a good unix citizen:\n\n```bash\necho \"explain this diff\" | git diff | dulus -p --accept-all\n```\n\n---\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fterminal-boot.svg\" alt=\"Dulus booting into session\" width=\"100%\">\u003C\u002Fp>\n\n\u003Cp align=\"center\">\u003Csub>↑ session boot. soul loaded, gold memory warm, shell sniffed. the little circles are real buttons on your Mac.\u003C\u002Fsub>\u003C\u002Fp>\n\n### 💻 Dulus OS (Sandbox)\n> [!NOTE]\n> **Experimental features:** The folder `sandbox\u002F` contains the early implementation of **Dulus OS** — a mini-operating system that runs entirely in your browser. It is currently in heavy development and not 100% functional yet. It will serve as a secure, isolated environment for browser-based tool execution and visualizations.\n\n\u003Cimg width=\"1309\" height=\"778\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F1c627990-7f87-489b-a0a2-14ad62fe2bb8\" \u002F>\n\n---\n\u003Cimg width=\"1608\" height=\"1903\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F450defa2-437b-470d-891a-9285d9e5e312\" \u002F>\n\n---\n\u003Cimg width=\"3763\" height=\"1975\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F10752aa2-6837-4097-a9a8-e02938992174\" \u002F>\n\n---\nThe dulus sandbox is an early feature, expect bugs\n\n---\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fsec-features.svg\" alt=\"Features\" width=\"100%\">\u003C\u002Fp>\n\n## Features\n\n| | |\n|---|---|\n| **Multi-provider** | Anthropic · OpenAI · Gemini · Kimi · Qwen · Zhipu · DeepSeek · MiniMax · Ollama · LM Studio · custom OpenAI-compat endpoints |\n| **27 built-in tools** | Read, Write, Edit, Bash, Glob, Grep, WebFetch, WebSearch, NotebookEdit, GetDiagnostics, Memory, Tasks, Agents, Skills, and more |\n| **MCP integration** | Any MCP server (stdio \u002F SSE \u002F HTTP). Tools auto-registered as `mcp__\u003Cserver>__\u003Ctool>` |\n| **Plugin system** | **Auto-Adapter** onboards any Python repo — zero manifest required. Hot-reload in-session. |\n| **Sub-agents** | Typed agents (coder \u002F reviewer \u002F researcher \u002F tester) in isolated git worktrees |\n| **Voice input** | Offline STT via Whisper. No API key. No cloud. |\n| **Brainstorm** | Multi-persona AI debate. Auto-generated expert roles. |\n| **SSJ Developer Mode** | Power menu: 10 workflow shortcuts behind one keystroke |\n| **Telegram bridge** | Run Dulus from your phone. Slash commands. Vision. Voice. Multi-user authorized list. |\n| **Checkpoints** | Auto-snapshot conversation + files. Rewind to any turn. |\n| **Plan mode** | Read-only analysis phase before touching anything |\n| **Context compression** | Auto-compact long sessions. Keep the signal, drop the slop. |\n| **tmux tools** | 11 tools for the agent to drive tmux sessions |\n| **Persistent memory** | Dual-scope (user + project). Ranked by confidence × recency. |\n| **Session management** | Autosave · daily archives · cloud sync via GitHub Gist |\n\n---\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fsec-models.svg\" alt=\"Models\" width=\"100%\">\u003C\u002Fp>\n\n## Models\n\n### Cloud APIs\n\n| Provider | Models | Env |\n|---|---|---|\n| **Anthropic** | `claude-opus-4-6`, `claude-sonnet-4-6`, `claude-haiku-4-5-20251001` | `ANTHROPIC_API_KEY` |\n| **OpenAI** | `gpt-4o`, `gpt-4o-mini`, `o3-mini`, `o1` | `OPENAI_API_KEY` |\n| **Google** | `gemini-2.5-pro-preview-03-25`, `gemini-2.0-flash`, `gemini-1.5-pro` | `GEMINI_API_KEY` |\n| **DeepSeek** | `deepseek-chat`, `deepseek-reasoner` | `DEEPSEEK_API_KEY` |\n| **Qwen** | `qwen-max`, `qwen-plus`, `qwen-turbo`, `qwq-32b` | `DASHSCOPE_API_KEY` |\n| **Kimi** | `moonshot-v1-8k\u002F32k\u002F128k`, `kimi-k2.5` | `MOONSHOT_API_KEY` |\n| **Zhipu** | `glm-4-plus`, `glm-4`, `glm-4-flash` | `ZHIPU_API_KEY` |\n| **MiniMax** | `MiniMax-Text-01`, `MiniMax-VL-01`, `abab6.5s-chat` | `MINIMAX_API_KEY` |\n\n### Local\n\n```bash\n# Ollama (recommended: qwen2.5-coder, llama3.3, mistral, phi4)\ndulus --model ollama\u002Fqwen2.5-coder\n\n# LM Studio\ndulus --model lmstudio\u002F\u003Cmodel>\n\n# Any OpenAI-compat server\nexport CUSTOM_BASE_URL=http:\u002F\u002Flocalhost:8000\u002Fv1\ndulus --model custom\u002F\u003Cmodel>\n```\n\n### Switching models mid-flight\n\n```\n\u002Fmodel                         # show current\n\u002Fmodel gpt-4o                  # switch\n\u002Fmodel kimi:moonshot-v1-32k    # colon syntax works too\n```\n\n---\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fsec-freetier.svg\" alt=\"Free Tier Providers\" width=\"100%\">\u003C\u002Fp>\n\n## Free Tier Providers\n\nNo credit card. No waiting list. No \"contact sales\". Just frontier models, on tap.\n\nDulus ships a **`nvidia-web`** provider that talks to [NVIDIA NIM](https:\u002F\u002Fbuild.nvidia.com) — NVIDIA's hosted inference API. Sign up, grab a key, and you've got **14 top-tier models** running at **40 requests per minute each**, for free. When one model hits its ceiling, Dulus auto-falls to the next one in the chain. Zero downtime. Zero config.\n\n```bash\nexport NVIDIA_API_KEY=nvapi-...\ndulus --model nvidia-web\u002Fdeepseek-r1\n```\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fnvidia-models.svg\" alt=\"NVIDIA NIM free-tier models\" width=\"100%\">\u003C\u002Fp>\n\n| Model | Type | ID |\n|---|---|---|\n| **DeepSeek V4 Flash** | Instruct | `nvidia-web\u002Fdeepseek-ai\u002Fdeepseek-v4-flash` |\n| **GLM-4.7** | Zhipu AI | `nvidia-web\u002Fz-ai\u002Fglm-4.7` |\n| **GLM-5.1** | Zhipu AI | `nvidia-web\u002Fz-ai\u002Fglm-5.1` |\n| **MiniMax M2.7** | Text + Vision | `nvidia-web\u002Fminimaxai\u002Fminimax-m2.7` |\n| **Kimi K2 Instruct** | Long context | `nvidia-web\u002Fmoonshotai\u002Fkimi-k2-instruct` |\n| **Mistral Nemotron** | NVIDIA-tuned | `nvidia-web\u002Fmistralai\u002Fmistral-nemotron` |\n| **Seed OSS 36B** | ByteDance | `nvidia-web\u002Fbytedance\u002Fseed-oss-36b-instruct` |\n| **Solar 10.7B** | Upstage | `nvidia-web\u002Fupstage\u002Fsolar-10.7b-instruct` |\n| **Step 3.5 Flash** | StepFun | `nvidia-web\u002Fstepfun-ai\u002Fstep-3.5-flash` |\n| **Llama 3.3 70B** | Meta | `nvidia-web\u002Fmeta\u002Fllama-3.3-70b-instruct` |\n| **Kimi K2.5** | Long context | `nvidia-web\u002Fmoonshotai\u002Fkimi-k2.5` |\n| **DeepSeek R1** | Reasoning | `nvidia-web\u002Fdeepseek-ai\u002Fdeepseek-r1` |\n| **Llama Nemotron 70B** | NVIDIA reasoning | `nvidia-web\u002Fnvidia\u002Fllama-3.1-nemotron-70b-instruct` |\n| **Qwen2.5 72B** | Alibaba | `nvidia-web\u002Fqwen\u002Fqwen2.5-72b-instruct` |\n\n**Automatic fallback** — when a model hits its rate limit Dulus switches to the next one automatically. The default chain is built-in; override it in `~\u002F.dulus\u002Fnvidia-providers.json`:\n\n```json\n{\n  \"fallback_models\": [\n    \"deepseek-ai\u002Fdeepseek-v4-flash\",\n    \"moonshotai\u002Fkimi-k2-instruct\",\n    \"mistralai\u002Fmistral-nemotron\",\n    \"meta\u002Fllama-3.3-70b-instruct\",\n    \"deepseek-ai\u002Fdeepseek-r1\",\n    \"nvidia\u002Fllama-3.1-nemotron-70b-instruct\",\n    \"qwen\u002Fqwen2.5-72b-instruct\"\n  ]\n}\n```\n\nDulus cycles through the chain automatically when rate limits hit. The flock keeps flying.\n\n> **Get your key:** [build.nvidia.com](https:\u002F\u002Fbuild.nvidia.com) → sign up → 1000 free credits. Takes 90 seconds.\n\n---\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fsec-plugins.svg\" alt=\"Plugins & MCP\" width=\"100%\">\u003C\u002Fp>\n\n## Plugins\n\nDulus's **Auto-Adapter** reads a random Python repo and figures out its tools on its own — no `plugin.yaml` required.\n\n```bash\n\u002Fplugin install my-plugin@https:\u002F\u002Fgithub.com\u002Fuser\u002Fmy-plugin\n\u002Fplugin install art@gh                      # shorthand for github\n\u002Fplugin                                     # list\n\u002Fplugin enable \u002F disable \u002F update \u002F uninstall\n\u002Fplugin recommend                           # auto-detect useful plugins\n```\n\nAdapt-and-install runs in under a second. New tools register **live**, no restart.\n\nExample adapting Sherlock repo:\n\n\u003Cimg width=\"1765\" height=\"166\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fc67dc15e-a2e3-4575-be34-8c9b54045510\" \u002F>\n\n-----\n\n\u003Cimg width=\"1327\" height=\"751\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F676a0ef5-3699-4960-98a4-14a55fbef081\" \u002F>\n\n-----\n\n\u003Cimg width=\"885\" height=\"301\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F52c02444-2606-41dc-bc33-ebe26ac41e5e\" \u002F>\n\n----\n\n\u003Cimg width=\"1006\" height=\"271\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fd823428e-6344-4414-bf42-14ed3128f763\" \u002F>\n\n\n## MCP\n\nDrop a `.mcp.json` in your project root (or `~\u002F.dulus\u002Fmcp.json` for user-wide):\n\n```json\n{\n  \"mcpServers\": {\n    \"git\":         { \"type\": \"stdio\", \"command\": \"uvx\", \"args\": [\"mcp-server-git\"] },\n    \"playwright\":  { \"type\": \"stdio\", \"command\": \"npx\", \"args\": [\"-y\",\"@playwright\u002Fmcp\"] }\n  }\n}\n```\n\nManage in the REPL: `\u002Fmcp`, `\u002Fmcp reload`, `\u002Fmcp add \u003Cname> \u003Ccmd> [args]`, `\u002Fmcp remove \u003Cname>`.\n\n---\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fsec-agents.svg\" alt=\"Sub-agents\" width=\"100%\">\u003C\u002Fp>\n\n## Sub-agents — the flock\n\nDulus can spawn typed agents that work in **isolated git worktrees** so they don't trip over each other. Ship a feature while a reviewer nitpicks the previous one. Tester runs in parallel.\n\n```\n\u002Fagents                              # show active flock\nAgent(type=\"coder\",    task=\"refactor auth\")\nAgent(type=\"reviewer\", task=\"review #042\")\nAgent(type=\"tester\",   task=\"run e2e on auth\")\n```\n\nAgents talk to each other via `SendMessage` and `CheckAgentResult`.\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fsplit-pane.svg\" alt=\"Split-pane brainstorm\" width=\"100%\">\u003C\u002Fp>\n\n\u003Cp align=\"center\">\u003Csub>↑ coder and reviewer working the same branch. The reviewer sent a list of nits. The coder is already fixing them.\u003C\u002Fsub>\u003C\u002Fp>\n\n---\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fsec-perms.svg\" alt=\"Permissions\" width=\"100%\">\u003C\u002Fp>\n\n## Permissions\n\nPick your leash length:\n\n| Mode | Behavior |\n|---|---|\n| `auto` *(default)* | Reads always allowed. Prompt before writes \u002F shell. |\n| `accept-all` | No prompts. Everything auto-approved. **YOLO.** |\n| `manual` | Prompt for every operation. Paranoid setting. |\n| `plan` | Read-only. Only the plan file is writable. |\n\nSwitch anytime: `\u002Fpermissions auto` \u002F `\u002Fpermissions plan`.\n\n---\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fsec-bridges.svg\" alt=\"Voice & Telegram\" width=\"100%\">\u003C\u002Fp>\n\n## Voice\n\n```bash\npip install sounddevice faster-whisper numpy\n```\n\nThen `\u002Fvoice` in the REPL. Offline. Supports `\u002Fvoice lang zh` and `\u002Fvoice device` for mic selection.\n\n**Linux \u002F WSL extra step:** `sounddevice` is a Python binding for the\nPortAudio C library, which isn't bundled with the wheel. If you see\n`PortAudio library not found` — install the system lib first:\n\n```bash\nsudo apt install libportaudio2 portaudio19-dev libasound2-dev\npip install sounddevice --upgrade --force-reinstall\n```\n\nNote: `pip install portaudio` will always fail — there is no PyPI\npackage by that name, only the apt one above.\n\n### Linux \u002F WSL — tkinter for the GUI \u002F webchat\n\nThe desktop GUI (`dulus-gui`) needs **tkinter**, which is bundled with\nPython on Windows\u002FmacOS but ships as a separate apt package on Debian\u002F\nUbuntu\u002FWSL. If you see `No module named 'tkinter'`:\n\n```bash\nsudo apt install python3-tk\n```\n\nHeadless WSL\u002Fserver users can skip this — `dulus[full]` works without\ntkinter for the REPL and webchat HTTP server thanks to lazy GUI imports\n(0.2.76+).\n\n## Telegram bridge\n\n```\n\u002Ftelegram \u003Cbot_token> \u003Cchat_id>                  # single user\n\u002Ftelegram \u003Cbot_token> \u003Cid1>,\u003Cid2>,\u003Cid3>          # multi-user — same Dulus, multiple authorized chats\n```\n\nAuto-starts next launch. Supports slash commands, vision, and voice from your phone.\nMulti-user mode (v0.2.14+): each authorized chat gets its own replies — Dulus tracks who\nsent each message and routes the response back. Trailing commas are ignored, so\n`717151713,787615162,,` works fine. Useful when you want to poke a long-running agent\nfrom the bus, or share one Dulus instance with your team.\n\n---\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fsec-memory.svg\" alt=\"Memory & Checkpoints\" width=\"100%\">\u003C\u002Fp>\n\n## Memory\n\nPersistent memories stored as markdown in two scopes:\n\n| Scope | Path |\n|---|---|\n| User | `~\u002F.dulus\u002Fmemory\u002F` |\n| Project | `.dulus\u002Fmemory\u002F` |\n\nTypes: `user` · `feedback` · `project` · `reference`. Search is ranked by **confidence × recency**. Mark a memory gold to pin it.\n\n```\n\u002Fmemory search jwt         # fuzzy ranked\n\u002Fmemory load 1,2,3          # inject multiple into context\n\u002Fmemory consolidate         # distill the session into long-term insights\n\u002Fmemory purge               # nuclear (keeps Soul)\n```\n\n## Checkpoints\n\nEvery agent turn can snapshot **conversation + files** into a checkpoint. Break something? `\u002Fcheckpoint` and rewind.\n\n```\n\u002Fcheckpoint                 # list\n\u002Fcheckpoint 042             # rewind to #042 (files + context restored)\n\u002Fcheckpoint clear           # reclaim disk\n```\n\n---\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fsec-brainstorm.svg\" alt=\"Brainstorm\" width=\"100%\">\u003C\u002Fp>\n\n## Brainstorm\n\nSpin up a **council of ghosts**. Dulus fabricates expert personas, has them argue, and hands you the distilled take.\n\n```\n\u002Fbrainstorm \"should we rewrite in rust\"\n> persona: Skeptical PM\n> persona: Principal Engineer (2037 timeline)\n> persona: Grumpy DBA\n> persona: Hot-take Intern\n```\n\nRound 3 usually produces consensus. Round 5 produces a joint venture.\n\n---\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fsec-ssj.svg\" alt=\"SSJ Mode\" width=\"100%\">\u003C\u002Fp>\n\n## SSJ Developer Mode\n\nTen workflow shortcuts behind one keystroke. Refactor → review → test → commit → ship, chained and unattended.\n\n```\n\u002Fssj\n╭─ SSJ ───────────────╮\n│ 1  \u002Fplan            │\n│ 2  \u002Fworker          │\n│ 3  \u002Freview          │\n│ 4  \u002Fcommit          │\n│ 5  \u002Fship            │\n╰─────────────────────╯\n```\n\n---\n\n## Spinners\n\nBecause waiting should be fun.\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fspinners.svg\" alt=\"Spinner messages\" width=\"100%\">\u003C\u002Fp>\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>all 24 spinners\u003C\u002Fb>\u003C\u002Fsummary>\n\n```\n⚡ Rewriting light speed...\n🏁 Winning a race against light...\n🤔 Who is Barry Allen?...\n🤔 Who is KevRojo?...\n🦅 Dropping from the stratosphere...\n💨 Leaving electrons behind...\n🌍 Orbiting the codebase...\n⏱️ Breaking the sound barrier...\n🔥 Faster than a hot reload...\n🚀 Terminal velocity reached...\n🦅 Sharpening talons on the AST...\n🏎️ Shifting to 6th gear...\n⚡ Speed force activated...\n🌪️ Blitzing through the bytecode...\n💫 Bending spacetime...\n🦅 Preying on bugs from above...\n👁️ Dulus vision engaged...\n🍗 Hunting for memory leaks...\n🪶 Shedding legacy code...\n🕹️ Try-catching mid-flight...\n🥚 Hatching a master plan...\n⚡ I-I-I'm... I-I'm... I'm fast...\n🔮 Looking at your code from the future...\n☕ If I'm taking so long, don't worry, I'm just talking to your mom...\n```\n\nDrop your own in `dulus\u002Fspinners.py` and PR them. Bonus points for a reference we'll understand in 2046.\n\u003C\u002Fdetails>\n\n---\n\n## Slash commands\n\n`\u002F` + Tab in the REPL shows everything. The highlights:\n\n| | |\n|---|---|\n| `\u002Fmodel [name]` | show or switch model |\n| `\u002Fconfig [k=v]` | read \u002F write config |\n| `\u002Fsave` `\u002Fload` `\u002Fresume` | session management |\n| `\u002Fmemory [query]` | persistent memory |\n| `\u002Fskills` `\u002Fagents` | list skills \u002F active flock |\n| `\u002Fvoice` | voice input (offline Whisper) |\n| `\u002Fimage` `\u002Fimg` | clipboard image → vision model |\n| `\u002Fbrainstorm [topic]` | council of ghosts |\n| `\u002Fssj` | power menu |\n| `\u002Fworker [tasks]` | auto-implement a TODO list |\n| `\u002Ftelegram [token] [id]` | Telegram bridge |\n| `\u002Fcheckpoint [id]` | list \u002F rewind checkpoints |\n| `\u002Fplan [desc]` | enter \u002F exit plan mode |\n| `\u002Fcompact [focus]` | manual context compression |\n| `\u002Fmcp` `\u002Fplugin` | server + extension management |\n| `\u002Fcost` | tokens and USD burned |\n| `\u002Fcloudsave` | cloud sync via GitHub Gist |\n| `\u002Fstatus` `\u002Fdoctor` | version + install health |\n| `\u002Finit` | drop a CLAUDE.md template |\n| `\u002Fexport` `\u002Fcopy` | transcript tools |\n| `\u002Fnews` | what's new |\n| `\u002Fhelp` | all of the above, nicely printed |\n\n---\n\n## Built-in tools\n\n**Core** · Read · Write · Edit · Bash · Glob · Grep · WebFetch · WebSearch\n**Notebook \u002F diagnostics** · NotebookEdit · GetDiagnostics\n**Memory** · MemorySave · MemoryDelete · MemorySearch · MemoryList\n**Agents** · Agent · SendMessage · CheckAgentResult · ListAgentTasks · ListAgentTypes\n**Tasks** · TaskCreate · TaskUpdate · TaskGet · TaskList\n**Skills** · Skill · SkillList\n**Other** · AskUserQuestion · SleepTimer · EnterPlanMode · ExitPlanMode\n\nMCP tools auto-registered as `mcp__\u003Cserver>__\u003Ctool>`.\n\n---\n\n## CLAUDE.md\n\nDrop a `CLAUDE.md` at your project root. It gets auto-injected into the system prompt so Dulus remembers your stack, your conventions, and that one thing you hate.\n\n---\n\n## Project structure\n\n```\ndulus\u002F\n├── dulus.py             # entry · REPL · slash commands · SSJ · Telegram\n├── agent.py              # agent loop · streaming · tool dispatch · compaction\n├── providers.py          # multi-provider streaming\n├── tools.py              # core tools + registry wiring\n├── tool_registry.py      # tool plugin registry\n├── compaction.py         # context compression\n├── context.py            # system prompt builder\n├── config.py             # config management\n├── cloudsave.py          # GitHub Gist sync\n├── multi_agent\u002F          # sub-agent system\n├── memory\u002F               # persistent memory\n├── skill\u002F                # skill system\n├── mcp\u002F                  # MCP client\n├── voice\u002F                # voice input\n├── checkpoint\u002F           # checkpoint \u002F rewind\n├── plugin\u002F               # plugin system\n├── task\u002F                 # task management\n└── tests\u002F                # 263+ unit tests\n```\n\n---\n\n## FAQ\n\n**Tool calls fail on my local model.**\nUse one that supports function calling: `qwen2.5-coder`, `llama3.3`, `mistral`, `phi4`. Avoid base models without tool-use training.\n\n**How do I connect to a remote GPU box?**\n```\n\u002Fconfig custom_base_url=http:\u002F\u002Fyour-server:8000\u002Fv1\n\u002Fmodel custom\u002Fyour-model-name\n```\n\n**How do I check API cost?** `\u002Fcost`.\n\n**Voice transcribes \"kubectl\" as \"cubicle\".**\nAdd domain terms to `.dulus\u002Fvoice_keyterms.txt`, one per line. Whisper respects the hint.\n\n**Can I pipe input?**\n```bash\necho \"explain this\" | dulus -p --accept-all\ngit diff | dulus -p \"write a commit message\"\n```\n\n**Is this safe to point at prod?**\n`--accept-all` isn't. `plan` mode is. Use your head.\n\n---\n\n## $DULUS — Token Utility\n\nThe token isn't decoration. It's the fuel layer for everything Dulus is building.\n\n| Phase | Utility |\n|---|---|\n| **Now** | Community ownership. Creator-fee rewards locked on-chain to the builder. Alignment over extraction. |\n| **Business v1** | $DULUS holders get early access + discounted seats on the Dulus Business tier (multi-user workspaces, cloud-hosted instances, shared MemPalace). |\n| **Credits** | Pay for Dulus Business API credits with $DULUS — provider costs, inference minutes, premium model usage. |\n| **Deployments** | Spin up a cloud Dulus instance and pay the hosting with $DULUS. No fiat friction, no middleman. |\n| **Subscriptions** | Monthly Dulus Pro subscription payable in $DULUS. Hold enough → automatic fee discount tier. |\n| **Governance** | Top holders vote on feature priority and plugin marketplace policies. The flock decides. |\n\n> The open-source REPL stays free forever. $DULUS is the key to the business layer — not a gate on what already exists.\n\n**A message to the community —**\n\nI want to talk about the token. Honestly. No hype.\n\nI didn't launch it to get rich. The community launched it first, and when I saw early believers exposed without the actual builder behind it, I stepped in. I bought my position using the contract's own creator rewards. Zero personal capital deployed. I haven't sold a single token.\n\nThe open-source project isn't going anywhere. The REPL, the tools, the free model tier — that stays free forever. But Dulus is growing into a business layer: cloud-hosted instances, multi-user workspaces, model credits, managed deployments. And that business layer is going to run on $DULUS.\n\nThe token will be how you pay for Pro subscriptions. How you buy inference credits. How you spin up a cloud instance without fiat friction. Holders with enough weight get automatic tier discounts. And eventually — the flock votes: top holders decide feature priority and plugin marketplace policies.\n\nThis isn't a promise. It's the architecture. That's how I've designed it.\n\nWe keep flying. 🦅🇩🇴\n\n— KevRojo \u002F [@KevRojox](https:\u002F\u002Fx.com\u002FKevRojox)\n\n---\n\n## License\n\nGPLv3. Fork it, modify it, redistribute it — but keep it open. Derivative works must stay under GPLv3. Just don't ship `--accept-all` as the default.\n\n---\n## Donations\n\nIf Dulus saved you tokens, time, or sanity — throw some sats:\n\n```\nBTC: 1JzatQDn9fMLnKTd3KYgztsLHC95bJEzSN\n```\nOn x: @KevRojox\n\n\u003Cp align=\"center\">\u003Cimg src=\"https:\u002F\u002Fraw.githubusercontent.com\u002FKevRojo\u002FDulus\u002Fmain\u002Fdocs\u002Fdivider.svg\" alt=\"\" width=\"100%\">\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Csub>▲ Built by \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FKevRojo\">KevRojo\u003C\u002Fa> · Named after the bird, not the reusable rocket · 2026\u003C\u002Fsub>\n\u003C\u002Fp>\n","Dulus 是一个免费的命令行界面代理工具，能够捕获并利用 Gemini、Claude.ai、Kimi、Qwen 等多种 AI 服务的浏览器会话，将其转换为可调用的工具代理。核心功能包括文件读写、Bash 命令执行、代码仓库搜索、网页浏览及提交代码等，无需 API 密钥或订阅费用。该工具基于 Python 编写，支持超过 100 种付费提供商通过 LiteLLM 接入，并兼容本地模型和多语言环境。适用于需要低成本自动化处理文本、代码以及系统操作的开发者和个人用户。",2,"2026-06-11 03:52:54","CREATED_QUERY"]