Skip to content
tobicoPublic

About

Coding agent orchestrator, for an intentional software engineering process.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Verkstead

A management platform for agentic coding. Everything is driven from a web GUI: a background orchestrator creates Worktrees, runs and monitors sandboxed coding sessions, puts Question Sets and commits to you, and works through task lists and staged roadmaps unattended.

Verkstead (Norse verk, work + stead: a workshop) began as a clone of askance and keeps its architecture — a Rust workspace and a SolidJS SPA in one binary, SQLite, SSE nudges, web push, and server-side rendering of everything an agent writes. askance remains a separate, maintained product; Verkstead diverges freely from it.

Status

Released, and early. Each version is published on GitHub Releases, and the latest is what any of the four ways in below fetches, and what the website, https://tobico.github.io/verkstead/, links to. It is a single-user workbench, and still young enough to change a good deal from one release to the next.

There are four ways in, and they are four different things rather than four spellings of one. Which you want is which machine you are describing; two at once is two Verksteads, and the second to reach port 8422 says so and exits.

The NixOS module, for a host that is always on. The flake builds the headless daemon and services.verkstead runs it, with paths naming the repositories and agent accounts it may reach — a directory not named there is not there as far as the service is concerned — and sandboxBinds the Sandbox Configuration.

Verkstead-x86_64.AppImage, on a Linux desktop: that same server started from an icon, the workbench in a window of its own and a tray icon beside it — or no icon at all where the desktop has no tray host, and the window is there just the same. Make it executable, run it, and press Install: it moves itself to ~/Applications, adds itself to the applications menu and starts again from there. Sessions want the distribution's bubblewrap package installed, since it cannot ride inside an AppImage.

Verkstead-universal.dmg, on a Mac: one download for Apple silicon and Intel alike, the workbench in a window, a tile in the Dock and an icon in the menu bar. Open Verkstead from the image and press Install: it moves itself into Applications and opens again from there. The app is signed and notarized by Apple (ADR-0027), so the first launch asks only whether to open an app downloaded from the Internet: click Open, and it does not ask again.

Verkstead-x86_64.exe, on Windows: an installer that puts the same app into your own profile, at %LOCALAPPDATA%\Programs\Verkstead, with no administrator asked for, an icon in the notification area and verkstead on your PATH for a terminal opened after the install. It is unsigned, so SmartScreen stops it behind Windows protected your PC: click More info, then Run anyway. Once per download; right-clicking the exe, Properties, and ticking Unblock does the same beforehand. It stays unsigned because every route open to its maintainer, an individual in Australia, was weighed and declined, and a signed build would start behind the same window until downloads earned it a reputation (ADR-0020).

A machine that has the earlier Windows Installer package of Verkstead installs this exe over it once, by hand. The installer finds the old install and removes it before putting its own in the same place, and the Data Directory, the settings and Launch on startup are left as they were.

Taking it off Windows again starts before Verkstead is uninstalled, because the uninstaller knows nothing of the account sessions ran as or of what was granted to it. Quit Verkstead, then run verkstead session-account remove in an elevated terminal. It reads every record Verkstead kept under its Data Directory of the access-control entries it wrote on your directories, takes each one off with a line saying which, and then deletes the account, the C:\Users directory Windows made for it the first time a session ran, and its password out of the secrets file. A machine that has run Verkstead and then had it taken off should look as it did, and the entries = 6 of 6 taken off line it prints is how you check. A grant that will not come off is named, and then nothing else is deleted, so the path can be put right and the command run again; --force deletes the account regardless, still naming the paths. Run again on a machine whose account is already gone, it takes off whatever entries the records still name. A Conversation's own grants, on its Worktree and the Repo's git directory, stand for as long as the Conversation is open, Verkstead running or not, and come off when it closes or when the account is removed. Then uninstall Verkstead from Installed apps.

Sessions run on all three, and on all three behind a boundary. One description of what a session may reach — its Worktree, the Repo's git directory, the Sandbox Configuration's entries, the Build Cache, a home of its own with a Built Root of the Agent Profile's account inside it, the network, and nothing else of the machine — rendered over the mechanism each platform has. On Linux it is bubblewrap, and the rest of the machine is not in the session's namespace at all. On a Mac it is Apple's sandbox, sandbox-exec, and the machine is in plain sight and refused. On Windows it is a local account of Verkstead's own, with an access-control entry written for it on each directory the description names; making that account is the one elevated step Verkstead asks for, and the setup wizard takes it behind a User Account Control prompt, or verkstead session-account create in an elevated terminal does. A boundary that cannot be made refuses the session rather than running it without one.

Updating

Settings shows a banner when a newer stable release is out, and each device's row on the Remote Access page says update available. How the release reaches a device depends on how that device was installed. Its row says which, and under its version it says what to run.

The desktop app updates itself. That covers the AppImage, the Mac app and the Windows installer. Press Update on this device's row, or on the banner. A card asks Update wolf?. It names the release and the sessions running on this device, which are stopped and resumed. Press Update on the card and the app downloads the release while the row reads updating…. The row reads restarting… once the server stops, and then shows the new version once the app has relaunched on it. If the new version doesn't come up, the app says so in a dialog and the row says why. Nothing is rolled back. Press Update to try again, or wait for the next release.

A device linked to this one is updated from its own row too, where it runs the desktop app. Press Update on crow's row and the same card asks Update crow?, naming the release and the sessions running on crow. crow then updates itself while its row reads updating…, then restarting… while it is down, and then shows its new version. Update all on the banner tells every device linked to this one that can update itself, and updates this device last, once each of the others is back or has said why it isn't. One that isn't answering is skipped, and its row says so. A device that couldn't be updated sends a notification naming it.

Everything else is updated by hand, with the command its row names:

  • Installed with nix, by the NixOS module or the flake: update this device with nix flake update and nixos-rebuild switch.
  • Built from a checkout: update this device with git pull and cargo build.
  • Run from a downloaded binary, a bare verkstead serve: update this device by downloading the latest release's verkstead.

Where things are written down

Design — what Verkstead is and the decisions it rests on, as settled in the planning session behind it.

MVP roadmap — the five stages from here to a Verkstead that covers the whole loop, and the brief for each.

CONTEXT.md — the project's vocabulary. Conversation, Brief, Timeline, Question Set, Answer and the rest, defined once.

Copy — how Verkstead speaks to the human: the rules for every string on a screen, and the reasons behind them.

Development — the dev shell, building the viewer, and the loop for working on Verkstead itself.

Releasing — the one workflow that turns a version number into the published binaries, the AppImage, the dmg and the Windows installer.

Licence

MIT — see LICENSE.

About

Coding agent orchestrator, for an intentional software engineering process.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages