Repository navigation
v0.0.3
Invincible Gateway and the Autobot Agent, one install.
New
-
Audit log (spec/audit.md). Every request the node answered is logged with:
- its signed receipt;
- when it was answered;
- who asked:
local, or a paired device by name.
Each entry carries the hash of the one before it, so a removed or edited entry breaks the chain.
invincible auditshows the log;--summaryadds totals per model and per host reached;--verifychecks the chain and every signature.- Paired devices read it with
GET /v1/audit. - No telemetry: nothing about your requests leaves the node unless you send it.
-
Agent action log. Every command, file write, outside read and cloud send the agent asked for is logged, with whether it ran and who decided: the rules, an earlier "always", or you on the CLI, the app or Telegram.
autobot actionsshows it, and the app reads it throughGET /v1/agent/actions.
-
Memory and skills.
- The agent keeps short facts with
remember, and every later conversation starts with them.autobot memorylists them;--forgetremoves one. - Skills are Markdown how-to notes in
~/.autobot/skills/, which the agent reads when one fits.autobot skillslists them. - The app sees and manages both.
- The agent keeps short facts with
-
Recipes from the phone. An Autobot recipe can run on your node: always on, no 8-minute limit, offered only its tool groups.
- The phone sends it in UTC (
CRON_TZ=UTCis new in schedules), starts it withPOST …/run, and collects each run's whole answer and receipt ids withGET …/runs?after=. - Receipts older than the in-memory 4096 are found in the audit log.
- The phone sends it in UTC (
-
Evals (spec/evals.md):
invincible evalruns a task file against models the gateway serves, local or cloud, and checks every answer by rule. Thinking models answer directly unless you pass--thinking.
Security fixes
These came from an internal adversarial review of remote access and the agent. It is not yet the independent review.
invincible tunnelneeds the machine's token and a loopbackHost. Before, a web page open on the paired machine could reach the node through the tunnel as that device (cross-site requests, DNS rebinding). Update both machines and pass the token (invincible token) to whatever uses the tunnel.write_filenever writes through a symbolic link or to a hard-linked file. A dangling link in the working directory could otherwise point the write outside it.- Writes under dot names (
.git/config,.envrc) always ask. They never run unattended. - Connection limits:
- at most 64 handshakes in flight;
- at most 32 sessions per device;
- 30 seconds to send headers.
- Pairing codes are used up atomically, so two handshakes cannot both pair with one code.
- A revoked device stops receiving at once, even on a stream it is only reading.
- The agent API:
- takes only JSON POSTs;
- the gateway passes on plain
/v1/agentpaths only; - a device's schedules must name their tools and cannot replace schedules made elsewhere;
every Nis capped at a year.
spec/audit.mdnow states plainly what the unkeyed audit chain proves and what it does not.
Evals on real code
evals/projects.jsonl has 50 tasks built from the code of Autobot, Omnie and Nightfall. Qwen3.5 4B passes 30/50 and Qwen3 0.6B passes 8/50.
Install
curl -fsSL https://raw.githubusercontent.com/wckdboy/invincible/main/install.sh | shThe installer checks SHA256SUMS against the release key pinned in install.sh (and the build attestation when gh is signed in). The Linux binaries are static and reproducible.