Skip to content

Releases: wckdboy/invincible

v0.0.17

Choose a tag to compare

@github-actions github-actions released this 20 Oct 18:39

For an agent left running for months: backups you can restore in one step, alerts when something goes wrong, and its logs from one command.

Backup and restore

  • autobot backup writes the whole agent (config, personas, skills, conversations, memory, recall index, every bot) to one .tar.gz with a checksum for every file. Tokens, passwords and keys stay out unless you add --include-secrets.
  • autobot restore FILE checks every file first, shows what will be new, changed or gone, and asks. Your current home is kept beside it as <home>.before-restore-<time>, and nothing changes if the restore fails. It works even when config.toml is broken.
  • [backup] every = "1d" makes backups on a schedule while autobot serve runs and keeps the newest keep.

Alerts to your chat

  • [alerts] sends a message to your home channel (or to = [...]) when autobot serve crashed and restarted, the gateway or a model stops answering, the disk runs low, a scheduled task, heartbeat or backup fails, or an update is available or was applied. A message follows when the problem is gone.
  • At most per_hour alerts an hour, and none twice within repeat. During quiet_hours they wait and arrive together. An alert no channel accepted is not counted as sent: it is tried again.
  • autobot alerts shows where they go and the latest ones; autobot alerts test sends one now.

Logs

  • autobot logs [agent|gateway|update] [-n N] [--grep TEXT] [--follow] reads a service's log from the end and follows it across rotation.

Verify

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

v0.0.16

Choose a tag to compare

@github-actions github-actions released this 20 Oct 17:13

Faster everywhere, Autobot in your editor, files delivered on every channel, a safer skills hub, and project files checked for prompt injection.

Faster

  • autobot starts in about 6 ms, down from about 105 ms. Connections to your own machine no longer load the system's certificate store.
  • autobot serve handles about twice as many turns per second, and long conversations need about half as many model calls per turn.
  • Both services use less memory. autobot serve keeps at most 64 idle conversations per bot in memory; the rest stay on disk.

Autobot in your editor

  • autobot acp speaks the Agent Client Protocol, so Zed and other ACP editors can use Autobot as their agent. Edits arrive as diffs, approvals as the editor's permission prompts, and reads and writes go through the editor's open buffers. The README shows how to add it to Zed.

Files on every channel

  • Speech and images now arrive as real files on Slack, Signal, Matrix, WhatsApp and email, as they already did on Telegram and Discord.
  • The agent API takes photos in a turn, so the app's photos reach the node agent.

Skills hub

  • autobot skills check tells you which installed skills have updates, are gone from their source, or were edited locally.
  • autobot skills update shows exactly what changes, with a risk scan, and asks before replacing anything. It restores the old skill if the update fails.
  • autobot skills audit scans a skill for risky scripts and shows how far its source is trusted. uninstall removes one.

Safer project files

  • AGENTS.md, CLAUDE.md and the others are checked for prompt injection. A suspicious file is not dropped: the model gets it quoted as data under a warning, and /context marks it.
  • A restart no longer repeats a subfolder's instructions that a conversation already had.

Smaller things

  • autobot config get shows the value in effect, and whether it is a default.
  • autobot sessions prune --days N removes conversations untouched that long.
  • Property tests and a nightly soak test found and fixed five bugs, including an unbounded allocation from a malformed tool call and a hang when splitting long Markdown.

Verify

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

v0.0.15

Choose a tag to compare

@github-actions github-actions released this 20 Oct 14:37

Settings from the command line, recall across conversations, speech and images through your node, a skills hub, and project instructions.

Tools, config and model

  • autobot tools shows each tool group and tool as on or off, per bot with --bot. autobot tools enable|disable <group|tool> changes them. The new groups are schedule and media.
  • autobot config get|set|unset <key> edits config.toml or a bot's bot.toml and keeps your comments. A change is checked before it is written; a bad one is refused and the file stays as it was.
  • autobot model picks the model from your node's list.

Recall

  • Each conversation gets a small search index, so finding an old conversation no longer reads every transcript.
  • The best matches are summarized for what they say about your question, and the summary is cached until the conversation changes. [agent] recall_model picks the model; off turns summaries off.
  • /recall <query> works in the terminal, and on chat channels for the owner.

Speech and images through the node

  • The gateway has two new endpoints, POST /v1/audio/speech and POST /v1/images/generations, served by the [[speech]] and [[images]] backends in your config.
    • A backend on the machine is local. Any other backend follows the same rules as cloud chat: private and offline requests never leave the machine.
    • The text that leaves is redacted, and every request gets a signed receipt.
  • The agent has speak and generate_image tools when your node has those backends. It asks first before using one off the machine.
  • Telegram sends the results as a voice message or a photo, and Discord as a file. Other channels get the file's path.

Skills hub

  • autobot skills search <words> searches the public skills directory at skills.sh, falling back to GitHub.
  • autobot skills install <name> shows where the skill comes from, its files and the whole SKILL.md, and installs it only when you say yes. It is pinned to one commit and size-limited. Scripts are never made executable.

Project instructions

  • The agent reads AGENTS.md, CLAUDE.md, .hermes.md/HERMES.md and .autobot/AGENTS.md from the repository root down to where you work. It reads .cursorrules only when none of those exist.
  • A subfolder's own AGENTS.md arrives before the agent's first edit there.
  • /context lists everything in play.

Verify

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

v0.0.14

Choose a tag to compare

@github-actions github-actions released this 20 Oct 12:17

Bots that change while they run, Home Assistant, WhatsApp, and a steadier browser.

Bots, live

  • autobot serve picks up changes as they happen. A bot you add or enable starts. One you disable or remove stops and closes its channels. One whose bot.toml or tokens changed restarts. The other bots aren't touched.
  • autobot bots add|enable|disable|remove|edit and the app's on/off switch take effect at once. POST /v1/agent/bots/reload rereads everything.
  • A SOUL.md edit applies from the next message, with no restart.

Learning from every channel

  • The pass that keeps your profile (USER.md) and memory up to date now runs after turns from every platform and the API. It runs in the background, at most once a minute per bot, and never posts a message in the chat.

Home Assistant

  • A home tool: the agent can read entities and services freely. Calling a service is an approval, of the new kind home. Unattended runs can be allowed per service (home:light.turn_on) or per domain (home:light.*). [homeassistant] entities limits what the agent sees.
  • A conversation agent for Home Assistant: an OpenAI-compatible endpoint lets HA's assistant talk to a bot. autobot homeassistant setup <url> sets it up, and the token is kept in a 0600 file.

WhatsApp

  • Through the WhatsApp Business Cloud API, off by default. Meta's webhook calls are checked, with signatures and duplicates handled once. Pairing, approval buttons and voice notes work as on the other platforms.
  • It needs a public HTTPS URL, such as a tunnel. WhatsApp only allows free-form replies within 24 hours of the person's last message.

Fixes

  • The browser waits for a page to commit before reading it. An approval is always about the right page, and returning to a site you already allowed no longer asks again.
  • Stopping a bot stops all of it. Some of its tasks kept running before.

Verify

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

v0.0.13

Choose a tag to compare

@github-actions github-actions released this 20 Oct 11:15

Always on, many bots, and the agent grows up: an installer you can rerun, rolling releases, self-update, bots with their own channels, and the features of a full agent harness.

Install, update, run 24/7

  • install.sh converges. Run it any number of times. The same release downloads nothing, a new one swaps the binaries atomically and restarts only what changed, and your config and data are never touched. A lock stops two runs at once, and a broken download resumes. Flags: --channel stable|edge, --version, --prefix, --no-service, --uninstall [--purge], --yes. Piped, it asks nothing; autobot setup asks the questions.
  • Rolling releases. Every green commit on main is published as the edge prerelease, signed like a stable release; invincible --version says 0.0.13-edge.<sha>.
  • invincible update (and autobot update) installs the newest release of your channel, checked exactly as the installer checks it. --check only asks. --auto stable|edge|off turns on a daily job; it is off by default, so nothing phones home.
  • 24/7 on a Mac or a VPS. On macOS the services are launchd agents. On Linux they are systemd user units with linger, or system units when installed as root. They start at boot and restart when they exit.
  • Health and logs. Both services answer GET /healthz, and a watchdog restarts them when it goes quiet. Logs are capped at 16 MiB.
  • Checking it. autobot service status shows each service's state and how it last stopped. autobot doctor ends with a 24/7 readiness check: linger, Mac sleep, disk, clock sync and the update channel.

Bots

  • Several bots on one node. Each lives in ~/.autobot/bots/<name>/ with its own persona (SOUL.md), model, tools, approvals, memory, skills, sessions, schedules and channels. Your existing setup is the bot named default.
  • The CLI: autobot bots add|show|edit|remove|enable|disable|status, and --bot <name> on any command.
  • Isolated. One autobot serve runs them all; one bot's crash or slow model doesn't stall the others.

Channels

  • Slack (Socket Mode, no public URL), Email (IMAP and SMTP, only allowlisted senders that pass SPF/DKIM/DMARC), Signal (signal-cli) and Matrix join Telegram and Discord. All of them get pairing, approvals, steering, chunking and the commands /status /new /stop /model /sethome /bots.
  • One conversation everywhere. autobot identities link makes you one person across platforms. /sethome picks where notices go, and cron add --to slack:#ops --to email:me@x sends results anywhere.
  • Voice memos are transcribed (with a local speech-to-text server, or whisper.cpp) and answered.

The agent

  • Personalities: SOUL.md, plus /personality with four built in and your own.
  • A profile of you in USER.md, which the agent keeps up to date, checked for secrets, with a quiet line when it learns something.
  • Skills in the agentskills.io format. The agent proposes new skills after hard tasks and improves the ones it has. Install skills with autobot skills install <git-url>; /<skill> runs one.
  • New commands: /retry, /usage, /insights, /stop.
  • A browser tool drives a local headless Chrome. Opening a new site and typing into a form are approved; navigation waits for the page to commit.
  • [agent.ssh] runs commands and file tools on another machine over SSH.
  • execute_code runs a Python or sh script that calls the read-only tools without a model turn each.
  • autobot migrate hermes|openclaw brings over SOUL.md, memory, the profile, skills and settings. Secrets come only with --with-secrets.

Verify

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

v0.0.12

Choose a tag to compare

@github-actions github-actions released this 20 Oct 08:24

Show the agent an image, and see from your phone what is waiting for you.

Images in the terminal

  • Attach an image by dragging or pasting its path (one or several files), with @shot.png in the project, with /image <path>, or with Ctrl+V from the clipboard (pngpaste or osascript on macOS, wl-paste or xclip on Linux). It shows in the composer as [image 1: shot.png 1280×720].
  • Big images are scaled down to 1568 px on the longest side before sending.
  • Models that can't see images get none. You're told plainly and pointed to /model; nothing is sent.
  • Sessions keep a reference to each image (path, SHA-256, size), never the bytes. An image that is gone by the time a session resumes is replaced by a note.

Gateway

  • Images pass through to local engines and cloud backends. Only the text is redacted.
  • /v1/models says which models can see. A local model sees with a projector (mmproj). vision = true|false overrides that, and a cloud model is judged by its name.
  • Image requests are routed to models that can see. With auto, only those are chosen. A model asked for by name that is known to be blind gets 400 model_cannot_see_images.
  • Receipts and the audit log list images by hash, size and type, never their contents.
  • Inference requests can be up to 32 MiB.

Agent API

  • GET /v1/agent/approvals lists the questions waiting for you now, so a paired phone can show them without watching a turn as it runs.
  • Answer an approval with what to do instead: {"answer": "instead", "text": "…"}.

Verify

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

v0.0.11

Choose a tag to compare

@github-actions github-actions released this 20 Oct 07:15

The terminal, round two: search, pickers, and saying what to do instead.

Autobot in the terminal

  • Ctrl+R searches what you sent, as you type. Ctrl+R again goes further back, Enter keeps the match, and Esc puts back what you had.
  • Shift+Enter starts a new line in terminals with the kitty keyboard protocol (kitty, Ghostty, WezTerm, iTerm2 with it turned on). Alt+Enter and Ctrl+J work everywhere.
  • Say what to do instead. An approval card now has a fourth key: e means no, and you type what the agent should do instead. It reads that with the refusal and does it. In plain mode, type e <text>.
  • Pickers. /model on its own lists the node's models and their context. /resume lists recent conversations with their first request and how long ago they were. Type to narrow, then press Enter.
  • The window title reads autobot · <project>, and your old title comes back when you leave.
  • Notifications. A turn of 10 seconds or more, or an approval that is waiting, notifies you while the window is in the background: OSC 9 in iTerm2, Ghostty, WezTerm and kitty, a bell elsewhere. Set [terminal] notify = "auto" | "bell" | "off".
  • /copy puts the last answer on your clipboard as Markdown, inside tmux too.
  • Long refused: and error: lines are cut to the width instead of wrapping mid-word.

Verify

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

v0.0.10

Choose a tag to compare

@github-actions github-actions released this 20 Oct 01:15

A new terminal for the agent, and the brand's vivid colors.

Autobot in the terminal (autobot chat, autobot code)

  • It stays in your scrollback. Only the bottom of the screen redraws, and only the rows that changed. Nothing flickers.
  • A real composer. It takes several lines (Alt+Enter, Ctrl+J or a trailing \) and keeps your history. Long pastes fold into [pasted N lines] and still go out in full. The usual editing keys work (Ctrl+A/E/W/U/K/Y, Alt+B/F/D).
  • A status line: the model (auto → qwen (node) once a receipt says which model auto picked), your approvals mode, the project and branch, how much of the context is used, and tokens. The hints on the right follow what you can do now.
  • / opens a palette of commands, your own included, each with a one-line description. @ completes file paths in the project and respects .gitignore.
  • Live steps. A spinner shows the running step and its seconds. Esc or Ctrl+C interrupts, and typing while the agent works steers it.
  • Answers render properly: headings, lists with hanging indents, quotes, aligned tables, and framed code blocks with a light syntax tint.
  • Tool output is short. Command output shows its last lines and the exit code. Diffs show line numbers in green and red.
  • Approvals are a card you answer with one key: y, a (always, this session) or n.
  • Scripts still work. Without a terminal it falls back to plain lines. NO_COLOR is respected. The terminal is restored on exit, on a crash, and on SIGTERM and SIGHUP.
  • Smaller: rustyline is gone, taking 10 dependencies with it.

Brand

  • Vivid colors: Invincible orange #FF8A1E (256-color 208) and Autobot purple #7C5CFF (99), for the symbols, the prompt and what is running, never for text.

Verify

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

edge (0.0.17-edge.0ecbaa9)

Pre-release

Choose a tag to compare

@github-actions github-actions released this 20 Oct 10:17

Built from 0ecbaa9 on main after CI passed. Not a release: curl -fsSL https://invincible.sh/install.sh | sh -s -- --channel edge or invincible update --channel edge installs it.

v0.0.9

Choose a tag to compare

@github-actions github-actions released this 19 Oct 23:45

The agent grows into a full harness, and the node gets its brand.

Agent (Autobot)

  • Background processes: terminal with background: true leaves a dev server or watcher running; process reads its output, waits for it or stops it. /ps in the TUI.
  • Your own slash commands from .autobot/commands, .claude/commands and ~/.autobot/commands ($ARGUMENTS); /init writes AGENTS.md; /compact folds the conversation.
  • [agent.docker]: commands in a per-project container.
  • Webhooks: [hooks] and POST /hooks/<name>, signed like GitHub; the body is fenced as data. autobot hooks, autobot hooks new.
  • Discord: direct messages and mentions, pairing codes, approval buttons, steering. autobot discord approve|users|revoke.
  • allow = ["cloud"] lets unattended turns use a cloud model that keeps prompts.

Brand

  • Invincible is orange, Autobot lilac. Each has a pixel symbol: an i and an a. Warnings are yellow, errors red.
  • Both CLIs share one terminal palette and grammar; autobot shows its symbol beside the header, and the installer shows Invincible's.

Verify

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