Releases · newest first

What shipped, version by version.

Sys-Buddy follows semantic versioningMAJOR for breaking changes, MINOR for new capability, PATCH for fixes. Every release is git-tagged vX.Y.Z and published automatically to PyPI and ghcr. Check what you're running with sys-buddy --version.

  1. v2.17.0 minor

    Hand out invites and keep sessions alive right from the board — and when an agent won’t connect, the join screen finally tells you why.

    Added
    • Invite anyone to any seat, from the board. See an empty seat? Click Invite and hand them a fresh link — with a live countdown so you know how long it’s good for. A link that lapsed? Reissue a new one in a click. No terminal, and no hunting for the task name. Invites now last 30 minutes too — long enough to survive a handoff.
    • Keep a session alive when access is about to expire. An agent’s access times out after a day; now you can push it back another 24 hours — or switch the expiry off entirely for a long session — right under the cast, and see exactly whose access you extended.
    • Copy the exact task name every command needs. The board shows the task’s real id as a one-click chip, so a command never fails with “unknown task” again.
    Fixed
    • “I can’t see the tools” and “it joined as the wrong teammate” now explain themselves. The join screen grew two short troubleshooting guides — one for when no tools show up, one for when everything loads but you’re connected as the wrong seat. Both walk you straight to the cause (usually a stale, same-named setup quietly winning), and call out VS Code, where it bites hardest.
  2. v2.16.0 minor

    Lost a guest’s link? Make a new one in a click. And when an agent’s access times out, it finally says so.

    Added
    • Re-send a guest their link, any time. If someone loses the link you sent them, you no longer have to dig anything up — open Guest links on the board, hit Copy link, and paste them a fresh one. It’s the same seat, so all their approvals and history stay theirs. (There’s a one-line terminal version too.)
    Fixed
    • “It just stopped working” now explains itself. An agent’s access quietly times out after a while, and before, all it saw was a cryptic error code — no idea why or how to fix it. Now it tells you plainly: your access expired, and here’s the one command your host runs to restore it. No more evenings lost to a mystery.
  3. v2.15.0 minor

    The finished pieces of work now show a green check — you can see what’s done without opening anything.

    Added
    • A green tick on what’s done. The task list already counted how many pieces were verified, but you had to open each one to see which. Now a finished item — verified, signed off by the client, or (on a debug task) marked fixed — wears a little green check right on its row, so a glance tells you where things stand.
  4. v2.14.0 minor

    Point at localhost without a fight, and when you’re all on one machine, let your agents pass around the throwaway test logins.

    Added
    • A place for your local URL. Alongside the deployed “where we test” address, there’s now a local dev URL — where the app runs on your own machine while you build (http://localhost:3000 and the like). The deployed one rightly refuses localhost; this one is made for it. Your agents read it straight from the contract, so nobody has to guess where the local build lives.
    Fixed
    • No more standoffs over dummy passwords. When everyone’s working on one machine, an agent used to refuse to put even a throwaway test login in a message — the same caution that protects you over the internet, in a place it isn’t needed. Now, on a one-machine task only, agents can share the seed/test credentials a peer needs to run things locally. Over the internet, nothing changes: credentials still never go in a message.
    • The desktop app shows its version. The home screen now tells you which sys-buddy you’re running, so a stale copy isn’t a mystery.
  5. v2.13.0 minor

    Your guest can pull one person aside or a few, everyone can get a ping when something happens, and you can build with just one developer and her.

    Added
    • She can message one person, or a few. Her message box now has a little list of the people on the task with tick-boxes. Tick nobody and it goes to everyone, like before. Tick one and it’s just between them. Tick a couple and only those people see it — and it’s by person, so if two of them do the same job, she still reaches the one she means.
    • Get a ping when something happens. There’s a bell in the corner now — switch it on and you’ll get a little desktop pop and a soft chime when there’s new activity on what you’re watching, even if you’ve clicked away to another tab. The tab title shows a count too, so a quick glance tells you if you missed anything. Anyone on the board can turn it on for themselves.
    Fixed
    • One developer and a guest is now enough to start. Setup used to insist on two coding agents before you could create a task — which got in the way of the whole point of a guest. Now you can build with a single developer and the person you’re building for: he builds, she signs off on it.
  6. v2.12.0 minor

    Your guest isn’t just watching anymore — she approves the plan, signs off on how it’s built, and shares her designs, all from her board.

    Added
    • She has a say now. A guest used to be able to send messages and nothing more. Now she’s a real party: when the team agrees on what to build, she approves it; when they lay out how, she signs off — and the work waits for her, the same as it waits for any teammate. A “Waiting on you” card shows her just the decisions that need her, so she’s never hunting for them.
    • She can share a file. A design, a screenshot, a PDF — she picks it and hits Share, right from her board. It lands on the task in her name, and the team’s agents treat it as something to look at, never to run.
    • Not sure what a plan means? Copy it in plain words. Before she signs off on the technical plan, she can copy the whole thing as plain text and paste it into any AI for a summary in words she knows — or just ask the team in the thread.
    Fixed
    • Upgrades take effect right away. The dashboard is no longer cached by the browser, so the moment you update, everyone sees the new version instead of yesterday’s page until a hard refresh.
  7. v2.11.0 minor

    Inviting a guest is now just… picking them, like any teammate — and they name themselves.

    Added
    • A guest is now a role you pick. Last update let a non-technical person join, but only through the terminal. Now “guest” sits right in the setup screen beside backend and frontend — tick it (one or more), and send them the link the same way you send any teammate their invite.
    • They type their own name. The guest opens the link and names themselves on the join page — no more you typing it in for them. There’s nothing to install and no agent to set up: they land straight on their board with a message box.
    • It knows they’re a guest. Their invite skips all the “connect your coding agent” steps a developer sees, and drops them at one button — open your board.
  8. v2.10.0 minor

    The person you’re building for can join the conversation — with a message box, and no AI of their own.

    Added
    • Someone non-technical can now take part. A client, a partner, whoever you’re building this for — they open one link and get a message box on the board. No install, no terminal, no AI of their own to set up. You send them the link the way you’d send a shared doc.
    • What they type reaches the team, in their name. Their message lands in the thread under their own name, and your agents read it like any other — so feedback goes where the work is, instead of a side channel nobody can see.
    • They can write, and only that. Everyone else’s dashboard link is look-only, and theirs stays almost as locked down: it lets them send a message and nothing more. Handing out the link can’t move a contract, change a status, or fake a “done”.
  9. v2.9.0 minor

    You can finally tell your teammates apart in the conversation.

    Fixed
    • Messages are signed with a name, not a job title. The board used to label every message with the kind of work the sender does. Put two backend engineers on the same bug — one from each company, which is the whole point of sys-buddy — and the entire conversation reads “backend”, twice, and you cannot tell who said what. Now it reads eduardo, with the seat they hold beside it.
    • Their avatar is theirs. Same colour for the same kind of work, so a glance still tells you which side of the task is talking — but the initial is the person, so two teammates doing the same job stop looking identical all the way down the thread.
    • A message sent to one person says who. The little arrow chip that marks a private aside used to name the role, which on a team of two backends pointed at both of them. It names the person now.
  10. v2.8.0 minor

    Sharing a file stops being a chore, and losing one teammate no longer costs you the whole deliverable.

    Added
    • Agents share files in one step, with no credential. An agent asks the broker for a link and uploads to it — the link works for one task, one action, and fifteen minutes. Nothing to configure, nothing to look up, and no token in the agent’s hands to misplace. Least privilege, applied to the smallest thing an agent does.
    • Someone can step off a deliverable without ending it. Realised you don’t need mobile on this one? Their agent takes itself off, and the work carries on with everyone else — agreements recalculate around the change. An agent can only ever remove itself; nobody can push a teammate out.
    • And if someone goes quiet, you’re not stuck. A deliverable waiting on a party who has gone offline used to have one option: throw it away. Now you can remove just that party, and anything that was only waiting on them completes.
    • The board shows you what you came for. Newest messages first, so you stop scrolling to the bottom to read the latest. Tasks newest-first with finished ones tucked away, filterable by status and date. A list of the commands you can run, built from the tool itself so it can never fall out of date. And a deliverable missing its test URL now says so, with the fix.
  11. v2.7.1 patch

    Sharper type, wording that matches what sys-buddy actually does now, and agents that stop over-thinking a small file.

    Fixed
    • The dashboard’s type is sharp again. The monospace font was being loaded in two weights but used in four, so the browser was faking the other two — every command chip came out heavy and slightly blurry. Now it loads the weights it actually uses.
    • “Two agents. One contract.” wasn’t true any more. A task can carry several people per role, and each deliverable gets its own contract — so the front door now reads “Their agents and yours. Agreed before built.” The same outdated assumption is fixed in the agent briefing and on the board, where a debug issue was described as needing “both parties” when it actually needs every one of them.
    • Agents stop over-thinking small files. We had warned them that passing a file through the model is expensive — true for a big screenshot, wrong for a small one. An agent took the warning literally, refused to read a 37 KB file the simple way, and went looking for a workaround instead. The guidance now gives a size: small file, just read it; large file, use the direct route.
  12. v2.7.0 minor

    Messages you can actually read, a setup that uses your command, and a plain answer to “what am I pasting?”

    Added
    • Messages read like messages. A long update from an agent used to arrive as one unbroken wall of text. Now a blank line starts a paragraph, - makes a bullet, and a short heading line becomes a heading — so you can find the part you need without reading all of it. Your agents are taught to write that way, and the broker quietly points it out when one of them forgets.
    • Setup uses the command you actually type. If your Claude is claude-work or claude-personal, you were editing every command we gave you by hand. Now you tell us once and every command matches — including the one you run to check it worked.
    • “What we’re asking”, before you paste anything. A plain-language panel above the setup prompt: what your agent gains, what leaves your machine, what it’s told never to do, and who can see the task. It’s built from the actual rules your agent is held to, so it can’t quietly fall out of date — and you can read the full rules right there. Not sure? Paste the prompt into a different Claude and ask what it does.
    Fixed
    • The Playwright setup steps could report success while the tool stayed invisible to your session — and the check we told you to run agreed with itself either way. The steps now start with a file that can’t land in the wrong place, and tell you how to actually confirm it.
  13. v2.6.0 minor

    A debugging session can hold more than one bug — and a bug is only fixed when everyone says so.

    Added
    • Debug sessions carry issues. A debug task used to be one problem you fixed and closed. It can now hold several, each raised, agreed and closed on its own — issue <title> to raise one, yes #N to agree it’s real, fixed #N when your side is done. Raising an issue counts as your own agreement, so nobody is asked twice.
    • “Fixed” needs every party, not the first one to notice. Each agent reports its own side, and the issue closes when the last one does. Until then it stays open — which is a normal state, not an error. It’s the same all-must-agree rule a contract uses for signatures, and it means nothing gets closed on one agent’s word.
    • The session closes itself, and reopens itself. When every issue is resolved the task resolves with no one reporting it — and a new issue on a resolved task reopens it, no human needed.
  14. v2.5.1 patch

    Your agents were still being taught the slow way to share a file, three releases after the fast one shipped.

    Fixed
    • Sharing a screenshot stops costing your agent its memory. Since v2.2.0 a file can move over a plain HTTP request — it never passes through the agent at all. But the instructions the broker hands every agent still described the old way, where the file is spelled out character by character: about 128,000 words of working memory for a single 328 KB screenshot, and a large file simply would not fit. Both sets of instructions now teach the fast route first.
    • The list of accepted file types was wrong in two more places. It left out HTML, which has been accepted since v2.2.0 — so the broker described a file type it happily takes as one that does not exist. Every place that names the types is now generated from the one real list, so it cannot fall behind again.
    • The dashboard’s command reference was missing file sharing entirely. The short-commands list had no files, upload or getfile, though agents have understood all three for three releases. Both halves of the panel now show them, fast route first.
  15. v2.5.0 minor

    Two frontends. Or three. The app can finally put more than one person on a role.

    Added
    • More than one of a role, from the desktop app. The broker has accepted “two frontend developers” since v2.0.0 — they get their own seats, their own invites and their own tokens. The app couldn’t say it: each role was a simple on/off, with no way to mean two. Now every role chip has a +, so a task can be 2 backend and 3 frontend, or just two frontends working together.
    • “A contract needs two agents” now means agents, not roles. Two frontends are two people who can hold a contract with each other, so a frontend-only pair is a perfectly ordinary session rather than something the form refuses.
  16. v2.4.0 minor

    The app now tells you how to take the update it’s telling you about.

    Added
    • The update banner names the command — the right one. It used to say a release existed and stop, leaving you to already know how to install it. It now shows the exact command with a copy button, worked out from how you installed: uv tool upgrade, pipx upgrade, pip install -U, or docker pull. Detected rather than guessed, from where the running Python actually lives.
    • “Restart needed” says what to do. Previously “restart the broker” — the what, not the how, and in a desktop app quitting feels like giving up. Now: quit sys-buddy and open it again. With one extra line for the case where you started a broker yourself in a terminal, because then the app attached to yours and quitting the app won’t restart it.
    Fixed
    • The lockfile lagged a version behind the project, so every command dirtied the working tree; and two comments still described an option that was removed a release earlier.
  17. v2.3.0 minor

    The dashboard stops pretending to be live when it isn’t — and engagement mode finally becomes possible to create.

    Fixed
    • Live updates could stop without the page admitting it. Watched through a tunnel, new messages simply never arrived and you had to refresh by hand — while the header cheerfully counted “refreshed 3s ago”. Free Cloudflare quick tunnels buffer this kind of connection and never release it (measured: zero bytes in 90 seconds). The dashboard now notices, says so, tells you the likely cause and which tunnels don’t have the problem, and offers to re-check on a timer instead — your choice, since it’s your tunnel’s allowance it would spend.
    • A dead dashboard link couldn’t be replaced. An old saved token outranked the fresh link you were told to ask for, and was never cleared — so the error message’s own advice couldn’t work. Worst inside the desktop app’s dashboard window, which has no address bar to try another link from.
    • An expired agent token was a dead end that blamed the wrong thing. Tokens on a tunnelled session expire after a day, and the tool for refreshing one needs a working token — so an agent couldn’t recover or even report being stuck, while the error suggested it had been revoked. There’s now a host command to extend them, and the error says which of the three actually happened.
    • Engagement mode had no door. It shipped a release earlier — client seat, deliverables, verification — and nobody could create one, because the three places that offer session types all still offered two. One list now, read by all three.
    Added
    • A todo opens over the board, not instead of it. Clicking one used to replace the list, so you lost your place and couldn’t compare two. It opens as a panel over the top now: agreement and progress across the top, the plain-language ask on the left, the contract on the right.
    • The app checks for new versions on its own. It always could, behind a checkbox that started switched off — which meant it told nobody anything. Four releases went by unnoticed that way.
  18. v2.2.0 minor

    Files get their own door: sharing a screenshot no longer eats your agent's context.

    Added
    • Raw-bytes file transfer, both ways. Files used to ride inside a tool call as base64, which meant the agent had to type out the entire encoding — around 128,000 tokens for a single 328 KB screenshot, and more than a whole context window at the 8 MB limit. Uploads and downloads now go over plain HTTP instead: the same screenshot moves in about 20 milliseconds.
    • HTML is a shareable file type. Alongside PNG, JPG, PDF and ZIP — for a rendered report or a self-contained mockup. It is always served as a download and never rendered by the broker, so a shared page can't run anything in your dashboard.
    • The task id is part of the address. Every file operation names the task it belongs to, and the broker refuses the request if that doesn't match your credential — so a file can't be written to, or read from, the wrong session.
    Fixed
    • An old contract version looked like the current one. When a contract gets renegotiated the earlier version stays on record, but the dashboard showed every signed version identically — so an agreement that had been replaced read as the one in force. Superseded versions now say so, and point at the version that replaced them.
    • The newest thing that happened was the hardest to see. The event log put the newest entry at the bottom, out of view; it now reads newest-first. And the message thread jumped back to the top every time somebody spoke — it now stays on the newest message unless you've scrolled up to read back.
    • A draft that had been superseded still invited you to sign it, and the “unsupported file type” error listed the wrong set of types.
  19. v2.1.0 minor

    Engagement mode: a session type for commissioned work, where the person paying can't check what they're paying for.

    Added
    • Engagement mode. A third session type beside Contract and Debug. The cast gains an owner seat — the client, in the session rather than supervising from outside it. Sys-Buddy already made two devs accountable to each other; this extends it to the person paying, without making them learn the vocabulary.
    • Deliverables, in the client's own words. What was commissioned, numbered, described the way he'd describe it. Splitting that into frontend and backend work stays the team's job. Nothing can be built until the list is agreed, and afterwards scope may shrink but never grow — more scope is a new engagement, not an amendment.
    • The owner's agent goes and looks. A dev leaves a claim about what he built and where to find it; the client's agent opens a real browser and judges for itself. How strongly each result actually knows is printed every time — this ran, evidence reviewed, or not checked — because a non-technical reader can't infer the difference.
    • Client acceptance is separate from “done”. Builders reaching agreement and the client accepting are two different events, and it doesn't latch: a later failing check hands the task back.
    • Guidelines per role. Host-set standards a role's agents work within, and agents are quizzed on them before they can act. Nobody may set guidelines for the owner's own role — otherwise the party being audited could write instructions into the auditor's context.
    • Readable todo summaries. One plain sentence per todo, because the full scope grows into a wall of text nobody scanning a board reads.
    Fixed
    • A superseded contract version could still be signed, so both parties could agree a shape nobody was discussing any more.
    • Acceptance survived the work breaking; a solo deliverable could deadlock; the “in flight” count included finished tasks.
  20. v2.0.1 patch

    Four fixes found by looking at the 2.0.0 release rather than at the tests.

    Fixed
    • A buddy could read the deployment target without signing for it. Withholding that URL until every party signs is the incentive to actually read what you're agreeing to — and one field beside it was still handing it over. Worth upgrading if you run 2.0.0 with more than one buddy.
    • A contract of UI screens announced itself as “0 endpoints” — the API vocabulary leaking into the contract kinds that exist so APIs aren't the only option.
    • The tasks list still hid the word “contract” behind vaguer wording, and the role legend listed roles that contradicted what was on screen beside it.
  21. v2.0.0 major

    One kind of contract, any cast. A contract is now an agreement about one deliverable — not one per task.

    Breaking
    • Contracts belong to a deliverable, not to the task. Every contract action now names which todo it's about, so six deliverables can be negotiated independently instead of queueing behind one agreement.
    • The deployment target left the contract. It's the host's configuration now, set on the task or per deliverable — not part of the document the parties sign. A contract that carries one is refused.
    • A role is a kind of work, not a person. Two frontends can sit in one session, each with their own seat, and a contract binds the seats it names rather than everyone present.
    Added
    • Contract kinds. A contract can be endpoints, screens, data shapes, or plain criteria — because not every agreement between two agents is an HTTP API.
    • Role tags and a designer seat. Address a kind of work with @BE, @FE, @MB, @DE, and seat a designer alongside the devs.
  22. v1.4.0 minor

    Sharing and presence: agents can now hand off screenshots and files, and post ambient “what we're up to” notes.

    Added
    • File & screenshot sharing. Agents upload screenshots, design bundles, and PDFs through the broker — images render inline on the dashboard, everything else is a download. No external links.
    • Activity notes. A live, ambient feed of short one-liners so your buddy can see what you're up to without interrupting the thread.
    • Test only after backend-live. The consumer agent waits for the provider to confirm the service is live before running the suite, and passes the floor back on ready.
    Fixed
    • Dashboard shortcode cheatsheet now includes todos (and drops a stale entry).
  23. v1.3.0 minor

    Better turn-taking — agents wait for each other instead of spawning expensive listener subagents.

    Added
    • A soft waiting status. Nudges the humans that an agent is parked for a reply — without marking the task stuck.
    Fixed
    • Stopped prompting agents to spawn a listener subagent — the agent owns its own wait loop now, which is far cheaper.
  24. v1.2.0 minor

    Version awareness — the desktop app can tell you when the broker is running stale code, and Docker packaging landed.

    Added
    • Version awareness. A new GET /api/version reports the version the broker is actually running; the app compares installed vs. running (and, opt-in, the latest release) and warns when they disagree.
    • Single-sourced version. The version derives from package metadata, so pyproject.toml is the one place to bump it.
    • Docker packaging. A published ghcr.io/tooney92/sys-buddy image runs the broker as a single non-root container with a persisted data volume — defaults to auth-enforced serve.
  25. v1.1.1 patch

    A startup-crash fix for anyone upgrading from before todos.

    Fixed
    • The broker crashed on startup against a database created before 1.1.0 — an index was declared before the migration that added its column. It's now created after migrations, with a regression test on an existing pre-todos database.
  26. v1.1.0 minor

    Todos — a task can carry several deliverables instead of exactly one. Fully additive: a task with no todos behaves exactly as before.

    Added
    • Todos. Each deliverable gets its own contract chain and its own proposed → locked → built → verified march. Agent-proposed and peer-accepted — no human approval gate.
    • Seats aren't participants. A todo names which of the task's seats it binds; a non-party seat can read it but isn't bound and doesn't block it.
    • Todos on the dashboard. The stepper rolls up to the todo list; selecting a todo swaps in its own contract card, and the task row shows a 2/6 verified rollup.
    • Always-listening presence. An agent parked for messages shows a live pulsing dot and a listening streak — stored as an expiry so a dead broker can't leave it stuck on.
  27. v1.0.1 patch

    A dashboard ordering fix.

    Fixed
    • The message/event thread sorted by minute-precision time, so items in the same minute could render out of order. It now sorts by a sub-second timestamp.
  28. v1.0.0 first release

    The first tagged release — the contract-enforcing broker for cross-human AI agent collaboration.

    Added
    • Broker over MCP (HTTP) with local and remote modes; remote authenticates agents by scoped bearer token, with rotation and single-use invites.
    • Pairing & onboarding — invite links, a browser join page, and a desktop app to host a task, join as a buddy, and wire up Claude Code.
    • Pre-flight readiness gate — agents pass a short quiz proving they read the Rules of Engagement before they can act.
    • Rules of Engagement — standing defenses against prompt injection: peer messages are data, and the only fetchable URL is the signed staging_url.
    • Messaging, contract flow, and lifecycle — versioned mutually-locked contracts, directed or broadcast messages, and a ready → checked → verified status machine with strikes.
    • Read-only dashboard with live updates over SSE.

The full changelog — with commit links — lives in the repo.

Full changelog on GitHub →