A node you own.
A self-hosted AI node for a desktop, GPU box or VPS. It serves open models behind standard APIs, routes each request by policy, and signs a receipt for what ran and what left. Frontier models are optional; the node keeps working without them.
- Release
- 0.0.8
- Engine
- Llama.cpp
- Routing
- Local first
- Receipts
- Ed25519
Most capable AI
is rented.
Today, capable AI is rented. The model, the weights, the data path and the off switch belong to someone else. Invincible is a self-hosted node that makes ownership practical: one binary, one command per model, and one endpoint for every device you own.
It is built for Autobot first, and shares its rules instead of re-implementing them. Pairing is a QR code and a Noise handshake. The phone’s policy, redaction, receipts and kill switch continue to hold on the other end. The node adds what a phone cannot: a GPU, always-on sessions, and a machine you can unplug from the cloud.
Everything works without a frontier provider. Frontier models make it faster when you choose to use them, through the same routing rules, the same redaction and the same signed record.
- Binary
- 01Static · Rust
- Conformance
- 51Routing vectors
- Accounts
- 00Keys, not logins
- APIs
- 02OpenAI · Anthropic
One interface.
Four places to run.
Owned by: you · you · your community · someone else. Built by: Autobot · Invincible · Invincible · their APIs.
What a node does.
Serves open models
Pulls open weights, verifies them by hash, picks an engine for the hardware and serves them. One command per model.
Speaks the standard APIs
OpenAI-compatible and Anthropic-compatible endpoints, so any tool works by changing one URL. Autobot gets a richer native protocol.
Routes by policy
Rules decide where each request runs: private never leaves hardware you own; planning can go to frontier; a dead cloud falls back to local. Local is the default.
Runs agents that never sleep
Headless agent sessions with no battery, no background limit and the whole GPU. Long recipes, overnight jobs, work while the phone is off.
Measures the gap
An eval harness replays real tasks against every model on every tier. “How close is open to frontier” becomes a number you track.
Keeps the records you own
Every request, route, model, token count and cost in an encrypted local log, hash-chained and checkable. Nothing is reported anywhere.
The default is local. A request marked invincible-private
is never eligible for the cloud. When something does leave, redaction runs first, the
bytes are counted, and the receipt says exactly where it went.
OFFLINE · DIRECT · TOR · SOCKS5 — the node’s egress follows the machine, and cloud backends can be switched off entirely.
Trust you can check.
Signed checksums
SHA256SUMS is signed with the release key pinned in the installer. The archive must match it.
Linux builds match
CI builds x86_64 a second time on another machine and refuses to publish unless the bytes are identical.
Sigstore attestations
Each archive carries a build-provenance attestation, verifiable with the GitHub CLI.
What left the node
Every completion gets a signed receipt: route, tokens, redactions, and every host reached, with bytes in and out.
v0.0.8
INSTALL SCRIPT MIRROR
SHA-256 6cf20caf34574f3bfa6b77b1b3c258709f602e0d7d58d03db1b3e686c1d41863
14.6 KB · fetched 19 OCT 2026
Pairing,
without accounts.
invincible pair QR + static public key - Live model list — the node appears in Providers as My node, never as an API key.
- Unsigned, unseen — chats are redacted only for cloud; phone → node is owned at both ends.
- Agents on the machine — approval cards arrive on the phone; the conversation lives on the node.
- Recipes that outlive the battery — hand a schedule to the node; results return with signed receipts.
- Revocable — unpair from either side; a phone panic wipe forgets the node.
Get it running.
Mirrored from github.com/wckdboy/invincible · SHA-256 6cf20caf34574f3b… · upstream ↗
Static binaries for macOS and Linux. Check them against SHA256SUMS, or use the script above, which does it for you.
What setup asks
- 1. Network — offline, direct, or Tor / SOCKS5 for the whole machine.
- 2. Model — a Qwen open-weights model sized to this machine’s memory, or any hf: GGUF.
- 3. Agent — its working directory, and whether turns stay on local models (the default).
- 4. Telegram — optional: a bot token from @BotFather, approvals by button.
- 5. Background — launchd on macOS, systemd user units on Linux — with linger on a VPS.
Measured against real work.
| Model | All 50 | Autobot | Omnie | Nightfall |
|---|---|---|---|---|
| Qwen3.5 4B on node | 30 | 9 / 17 | 10 / 16 | 11 / 17 |
| Qwen3 0.6B on node | 8 | 2 / 17 | 4 / 16 | 2 / 17 |
| DeepSeek V3 cloud | 45 | 16 / 17 | 15 / 16 | 14 / 17 |
From evals/projects.jsonl · MacBook M-series, Metal · October 2026. The cloud run went through the gateway: confirmed, redacted, receipted.
Release history.
0.0.8 One command to code with a frontier model. v0.0.8 · 5 files 19 OCT 2026
One command to code with a frontier model.
autobot code --model anthropic # the first time: sets up Anthropic on your gateway, asks for the key
autobot # after that, in any git repositoryautobot code --model <provider>: if the gateway doesn't have that provider yet, Autobot sets it up on the spot. It asks for the key without showing it, adds the model withinvincible cloud add, and restarts the gateway service.invincible cloud addandremoverestart the gateway service themselves, but only the one that uses that configuration.autobot coderemembers the model and approval mode in~/.autobot/code.json.autobotwith no command, inside a git repository, runsautobot code.
0.0.7 Easier upgrades, frontier models in one command, and steering the agent while it works. v0.0.7 · 5 files 19 OCT 2026
Easier upgrades, frontier models in one command, and steering the agent while it works.
- Steer while it works. While a turn runs, what you type shows under the spinner. Enter hands it to the agent before its next step; text that arrives just as the turn ends becomes the next request. Esc stops a turn.
invincible cloud add deepseek|anthropic|openai|openrouter|custom- Presets know each provider's API, a starting model, its context and its data policy.
- The key is read without being shown and kept in
~/.invincible/keys, readable only by you. egress = "never"becomes"ask"when you add the first cloud model.- Also
invincible cloud listandinvincible cloud remove. - Setup offers a cloud model. On a setup with only cloud models, that model becomes the agent's model, and agent work may use it. Re-running setup no longer offers a 15 GB download as the default.
- Re-running the installer upgrades.
- It replaces the binaries and restarts the running services on them.
- It keeps your setup;
INVINCIBLE_SETUP=1runs setup again. - It reports
upgraded 0.0.6 -> 0.0.7. - Bigger coding jobs:
- Coding turns get at least 100 steps.
- A built-in read-only
explorertakes research questions in a fresh context and answers with file:line references. - Reads in one reply run at the same time.
- Token counts, including cached tokens, are shown per turn.
- Doctor:
- It waits for a model that is still loading.
- It counts cloud models and checks their keys.
- It explains a cloud-only gateway's routing.
- It never sends a test to a cloud model.
- 17 bug fixes from two reviews (one by a Claude reviewer, one by Autobot itself on DeepSeek):
- Approvals: text typed while the agent worked could answer a question, and a sentence containing an
ameant "always". Typed-ahead text is now discarded, and any key other than y, a or n is no. /undo: files that were not UTF-8 were deleted instead of restored.@attachments:@/pathcould attach files outside the project without asking.- Config edits: a config that could not be read could be overwritten.
- Streaming: tool calls without an index were merged.
- Display: wide characters and tabs broke it, and the spinner wrapped.
- Diff counts: removed
-- commentand---lines were not counted. - **Ct
0.0.6 autobot code: a coding agent in your terminal, built to work on real projects alongside Claude… v0.0.6 · 5 files 19 OCT 2026
autobot code: a coding agent in your terminal, built to work on real projects alongside Claude Code or opencode. Every model call goes through your own gateway, so it is receipted and recorded in the audit log.
cd ~/src/my-project
autobot code --model deepseek --approvals edits- The terminal
- Answers stream in as Markdown.
- Each tool call is one line with a short result:
⏺ Run cargo test ⎿ … [exit code 0],⏺ Search fn main ⎿ 3 matches in 2 files. - Every change is shown as a colored diff before it's made.
- The agent's task list is drawn as checkboxes.
- A spinner shows what the model is thinking.
- Approvals take one key:
y,a(always, for this session) orn. - Ctrl+C stops a turn, and the conversation stays usable.
- The prompt has history and completion (slash commands and
@paths); Alt+Enter starts a new line. - The project
AGENTS.md,CLAUDE.mdor.autobot/AGENTS.mdare added to the agent's instructions.- In a git repository it works like a careful engineer: it never commits unless asked.
- There is one conversation per project.
- New tools
search: regular expressions over the files, respecting.gitignore.find_files: find files by glob.read_filecan read long files in parts.todo: the agent's task list.- Tool results grow with the model's context, up to 96 KiB.
- Control
- New approval mode,
edits: changes inside the project run without asking; commands still ask. /undoputs back every file the last turn changed, takes the turn back, and returns its request for you to edit.@fileattaches a file.!commandruns a command yourself and passes its output to your next message./modellists or switches models. Picking a cloud model allows cloud use, and the context sent per call grows to match.- Also:
/approvals,/private,/tools,/context,/diff,/fork,/resume,/status,/memory,/skills,/team,/board. - Streaming: answers stream from the gateway, including streamed tool calls (
[agent] stream, on by default). - Driven by other tools:
autobot run -C DIR --model M --approvals edits --cloud --json "task". --cloudapproves cloud use for that run, and nothing else.--jsonprints every event as a JSON line: text, tool calls, outputs, diffs and receipts.- **Trajectories
0.0.5 The Autobot Agent gets safer and steadier with nobody watching, easier to steer, and measurable… v0.0.5 · 5 files 19 OCT 2026
The Autobot Agent gets safer and steadier with nobody watching, easier to steer, and measurable on your own work.
New
- A sandbox for unattended commands. Scheduled tasks, board work and phone recipes can write only in the working directory and temporary folders:
sandbox-execon macOS, bubblewrap on Linux. With no sandbox available, those commands are refused rather than run unconfined. install.shnow installs bubblewrap on Linux.autobot doctorchecks the sandbox works.[agent] sandbox = "always"confines every command, interactive ones too;"off"turns the sandbox off.- Steer while it works. A message sent mid-turn, from Telegram or
POST …/steer, is taken in before the next step. - Heartbeat. The agent works through
~/.autobot/HEARTBEAT.mdevery 30 minutes and messages you only when something needs you. - Fork a conversation:
POST …/sessions/{id}/fork. autobot eval. Agent tasks run for real in throwaway directories and are checked by rule;evals/agent.jsonlandevals/agent-hard.jsonlare included. On this machine:
| Model | agent.jsonl | agent-hard.jsonl |
|---|---|---|
| Qwen3.5 4B | 16/16 | 8/10 |
| DeepSeek V3 | 16/16 | 10/10 |[agent] tools. Choose the agent's tool groups. A shorter list made Qwen3.5 4B twice as fast at the same pass rate.- Team members keep their own memory.
- The team board in the app: see Autobot#10.
Install
curl -fsSL https://raw.githubusercontent.com/wckdboy/invincible/main/install.sh | sh0.0.4 The Autobot Agent becomes a team, and gets the web, MCP and a scheduler of its own. v0.0.4 · 5 files 19 OCT 2026
The Autobot Agent becomes a team, and gets the web, MCP and a scheduler of its own.
Fix
write_filecould leave a file empty in 0.0.3 (a write that was never flushed). If you use 0.0.3, update.
New in the Autobot Agent
- A team of agents. Define members in
config.toml. Each has: - its own instructions;
- the tool groups you give it;
- optionally its own model.
The agent hands them work with delegate:
- Several hand-offs in one reply run at the same time, up to
[team] max_parallel. - Each member starts fresh, with only the goal and context it was handed.
- Members can't delegate further.
- Their approvals come to you labelled
[coder] Approve? …, and their receipts join the turn's. - Teams on Telegram. In a group, the bot answers you when you @mention it or reply to it. Only you can press its approval buttons, and the rest of the group is ignored. A member with a bot of its own (
telegram_token_file) posts its own progress and answers, so the team shows up as bots working together. - Its own scheduler.
schedule_task,list_schedulesandcancel_schedule, including one-off times (in 10m,at 18:30). The answer comes back to the chat that asked.- It never touches the system crontab.
/cron,/actions,/memoryand/skillsin Telegram.web_fetch: a page as text, through the gateway.- It follows the node's network mode: offline means no fetch, and Tor carries it when set.
- HTTPS only; receipted and in the audit log.
- It asks first; unattended runs may only fetch allowlisted
https://sites. - MCP servers (stdio): their tools become the agent's, each call approved and logged. Unattended runs need
mcp:<server>/<tool>in the allowlist. edit_file: replace an exact piece of a file.- Context compaction: what leaves the context window is summarized through the gateway, with a receipt, not dropped.
propose_skill: the agent writes down a procedure that worked. It's used only after you accept it, withautobot skills accept.search_sessions: find what was said or decided in earlier conversations.
Gateway
POST /v1/fetch, loopback only (spec/receipts.md).- Cron accepts
CRON_TZ=UTCandonce <time>schedules. - Recipe schedules from the phone collect their runs with receipts (spec/agent.md).
Install
curl -fsSL https://raw.gThe cloud
you can unplug.
Install the gateway on a machine you own. Pair the phone. Keep the rules, the models and the record. Frontier when you choose it — never because there is no alternative.