Architecture

One open source app. It starts as a blank surface. You describe a problem, or the solution you want. Agents compose open source components into that software. The surface morphs into the interface. The runtime is the backend behind it.

Use the agents and models you want. Keep data on your own hardware, in your private cloud, or wherever you control it.

meta-harness is how that app is built: two small runtimes plus plugins. You compose them into an app.

RuntimePackageWhat it does
Runtime@buildautomaton/runtimePlugin and service registries, plus lifecycle.
Plugins@buildautomaton/pluginsStores, sessions, harnesses, HTTP, and coreSet.
UI runtime@buildautomaton/ui-runtimeWires UI plugins into an app shell.

The runtimes stay tiny and fast. Almost everything you see (agents, stores, tools, the work queue, the buildautomaton widget) is a plugin.

Where the runtime runs

The same runtime runs locally or in the cloud. The host changes. The runtime and plugin contracts do not.

HostPackageRole
LocalLocal CLIcreateRuntime on your machine. Serves the app and tools.
Cloudyour cloud hostSame createRuntime call. Swap stores, HTTP, and auth plugins.
flowchart LR
  local("local-cli")
  cloud("cloud host")
  runtime("runtime")
  uiRuntime("ui-runtime")
  plugins("plugins")
  local --> runtime
  cloud --> runtime
  runtime --> plugins
  uiRuntime --> plugins

Plugins

A package can ship runtime plugins, UI plugins, or both. The runtime only indexes them. The plugin owns the behavior.

Buildautomaton is the dual example: queue and tools on the runtime, a prompt screen and a sidebar widget on the UI runtime.

What an app looks like

The main screen starts as the buildautomaton prompt. After you submit it, the running app fills the main panel and the widget stays in the sidebar.

┌────────────────────────────────────────────┐
│  nav                                       │
├─────────────────────────────┬──────────────┤
│  main                       │  sidebar     │
│  the app                    │  buildautomaton │
│                             │  widget      │
└─────────────────────────────┴──────────────┘

UI is the ready-made host for that shell. Apps are plugin compositions you assemble in a host.

Try it

npx @buildautomaton/local-cli app --cwd /path/to/repo

That is dev (Vite HMR). On a server: local-cli app --prod. From this repo: pnpm install && pnpm dev. Public packages publish under @buildautomaton.