Open source · Self-hosted Latest v0.0.8

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.

macOS arm64 Linux x64 / arm64 Local by default 6.7 MB binary
Figure 1 Private
0 bytes out Local
One node, every device FIGURE 1
install · macOS / linux
$ curl -fsSL https://invincible.sh/install.sh | sh # no root · installs invincible + autobot → signed release · pinned key · reproducible
Release
0.0.8
Engine
Llama.cpp
Routing
Local first
Receipts
Ed25519
Latest release
v0.0.8
License
MIT
Platforms
macOS · Linux
Routing
Local first
Accounts
None
01 Why

Most capable AI
is rented.

A company, or the country it sits in, can change the price, the policy, the model or the terms, read what you send, or switch you off. Open weights and cheap accelerators make another path possible — but running them well is still a weekend of glue per machine.
Frontier models are welcome here. Dependence is not.
v0.0.8 shipped 19 OCT 2026

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
Local is the defaultLeaving hardware you own is always a choice, visible and reversible.
No phoning homeNo telemetry, no update checks you did not ask for, no accounts.
Frontier-optionalEvery feature has a path without a third party. Frontier makes it faster, not possible.
02 The tiers

One interface.
Four places to run.

If a tier disappears, things get slower — nothing breaks. That is the whole point of owning the middle.
TIER 01 This phone Snapdragon NPU, Adreno GPU, Apple Metal and the Neural Engine. No network needed. The first tier already works. Autobot · shipping
TIER 02 My node Your desktop, GPU box or a rack in your hackerspace. Stronger open models, agents that never sleep, your rules. This project
TIER 03 Our region Pooled nodes of people you trust: a co-op, a city, a country. Federation is designed, not shipped. Invincible · later
TIER 04 Cloud Frontier models are welcome here. Being dependent on them is not. They are optional, redacted and receipted. Their APIs

Owned by: you · you · your community · someone else. Built by: Autobot · Invincible · Invincible · their APIs.

03 The node

What a node does.

Not a chat UI. Not a training stack. The node is the thing that makes models useful on hardware you control — and keeps the receipt.
01

Serves open models

Pulls open weights, verifies them by hash, picks an engine for the hardware and serves them. One command per model.

02

Speaks the standard APIs

OpenAI-compatible and Anthropic-compatible endpoints, so any tool works by changing one URL. Autobot gets a richer native protocol.

03

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.

04

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.

05

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.

06

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.

Routing decisionREQ 7C1
Requestinvincible-private
RouteLocal · llama.cpp
CloudNot eligible
Egress0 bytes
Redacted—
ReceiptEd25519 signed
ExampleGET /v1/receipts/7C1

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.

04 Verification

Trust you can check.

Releases are signed with a key the installer pins. Linux builds are rebuilt on another machine and must match byte for byte before publishing. Every request gets a receipt, and every receipt is chained into the audit log.
01 · Supply chain

Signed checksums

SHA256SUMS is signed with the release key pinned in the installer. The archive must match it.

02 · Reproducible

Linux builds match

CI builds x86_64 a second time on another machine and refuses to publish unless the bytes are identical.

03 · Provenance

Sigstore attestations

Each archive carries a build-provenance attestation, verifiable with the GitHub CLI.

04 · Receipts

What left the node

Every completion gets a signed receipt: route, tokens, redactions, and every host reached, with bytes in and out.

verify a release by hand
$ echo 'invincible-release ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII/0fXPq1j51BcfGY0Jp9QfPGy6kHVQQ+W282VFPR/Qo' > allowed_signers ssh-keygen -Y verify -f allowed_signers -I invincible-release \ -n invincible-release -s SHA256SUMS.sig < SHA256SUMS shasum -a 256 -c SHA256SUMS Good "invincible-release" signature for invincible-release
Key pinned in install.shSigstore attestation optional
Latest release

v0.0.8

Published19 OCT 2026
LicenseMIT
ChecksumsSigned
SignatureSSH · Ed25519
Install script6cf20caf3457…
Early build, stated plainly. Invincible v0.x serves models, routes by policy, signs receipts and runs the agent end to end. An independent security review is still ahead. Do not treat it as hardened infrastructure yet.

INSTALL SCRIPT MIRROR
SHA-256 6cf20caf34574f3bfa6b77b1b3c258709f602e0d7d58d03db1b3e686c1d41863
14.6 KB · fetched 19 OCT 2026

05 Integration

Pairing,
without accounts.

Invincible is built for Autobot first. The node’s key comes from the QR code; the phone’s key is pinned on the node. There are no accounts, no passwords and no third-party relay.
01 · Show invincible pair QR + static public key
02 · Scan Autobot Noise IKpsk1 · keys pinned
03 · Own My node Models · agents · receipts
The phone keeps its rules. The node extends its reach.
  • 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.
06 Install

Get it running.

macOS on Apple silicon, or Linux on x86_64 and arm64 — desktop or VPS. No root. It installs both commands to ~/.local/bin, verifies the release, installs llama.cpp if missing, and runs the setup questions.
invincible.sh / install
$ curl -fsSL https://invincible.sh/install.sh | sh # then $ autobot # chat in the terminal $ autobot code # code in this directory $ autobot run "task" # one task, no questions $ autobot doctor # check gateway, model, tools, Telegram
No rootPinned release keyFalls back to source

Mirrored from github.com/wckdboy/invincible · SHA-256 6cf20caf34574f3b… · upstream ↗

What setup asks

  1. 1. Network — offline, direct, or Tor / SOCKS5 for the whole machine.
  2. 2. Model — a Qwen open-weights model sized to this machine’s memory, or any hf: GGUF.
  3. 3. Agent — its working directory, and whether turns stay on local models (the default).
  4. 4. Telegram — optional: a bot token from @BotFather, approvals by button.
  5. 5. Background — launchd on macOS, systemd user units on Linux — with linger on a VPS.
Bring your own hardware. Apple silicon and NVIDIA are the v0 targets. One engine (llama.cpp) covers both; MLX and vLLM follow behind the same interface.
07 Evidence

Measured against real work.

Fifty tasks built from the real code of Autobot, Omnie and Nightfall. Every expected answer was checked by running the code. No model grades another, so a result is the same however often it runs.
ModelAll 50AutobotOmnieNightfall
Qwen3.5 4B on node309 / 1710 / 1611 / 17
Qwen3 0.6B on node82 / 174 / 162 / 17
DeepSeek V3 cloud4516 / 1715 / 1614 / 17

From evals/projects.jsonl · MacBook M-series, Metal · October 2026. The cloud run went through the gateway: confirmed, redacted, receipted.

A 4B model on a laptop is at two thirds of a frontier model on this code.
The gap is real: multi-step reading and arithmetic. The point is not that local wins. It is that local is good enough for a growing share of real work — and you can measure it on your own.
08 Releases

Release history.

macOS arm64, Linux x86_64 and Linux arm64. Each archive carries a build attestation; SHA256SUMS carries the release signature. The site data is baked at build time.
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 repository
  • autobot 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 with invincible cloud add, and restarts the gateway service.
  • invincible cloud add and remove restart the gateway service themselves, but only the one that uses that configuration.
  • autobot code remembers the model and approval mode in ~/.autobot/code.json.
  • autobot with no command, inside a git repository, runs autobot code.
Signed + reproducible 5 files Public release
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 list and invincible 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=1 runs 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 explorer takes 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 a meant "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: @/path could 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 -- comment and --- lines were not counted.
  • **Ct
Signed + reproducible 5 files Public release
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) or n.
  • 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.md or .autobot/AGENTS.md are 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_file can 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.
  • /undo puts back every file the last turn changed, takes the turn back, and returns its request for you to edit.
  • @file attaches a file.
  • !command runs a command yourself and passes its output to your next message.
  • /model lists 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".
  • --cloud approves cloud use for that run, and nothing else.
  • --json prints every event as a JSON line: text, tool calls, outputs, diffs and receipts.
  • **Trajectories
Signed + reproducible 5 files Public release
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-exec on macOS, bubblewrap on Linux. With no sandbox available, those commands are refused rather than run unconfined.
  • install.sh now installs bubblewrap on Linux.
  • autobot doctor checks 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.md every 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.jsonl and evals/agent-hard.jsonl are 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 | sh
Signed + reproducible 5 files Public release
0.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_file could 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_schedules and cancel_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, /memory and /skills in 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, with autobot 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=UTC and once <time> schedules.
  • Recipe schedules from the phone collect their runs with receipts (spec/agent.md).

Install

curl -fsSL https://raw.g
Signed + reproducible 5 files Public release
All releases → Data 19 OCT 2026 · v0.0.8 latest
Own the middle

The 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.