Polyglot build orchestrator for the AI age. Entity-centric (Backstage catalog model), plugin-based, with REAPI-compatible caching.
- Your catalog is your build graph. Build targets are Backstage catalog
entities (Components, Systems, APIs) declared in
catalog-info.yaml— not directory paths. The same model that documents your software builds it, so ownership, relationships, and dependencies stay in one place. - Polyglot out of the box. Plugins cover Go, Rust, Java (Maven, Gradle, Tycho), .NET, Node.js (npm, yarn, pnpm, Vite, Fumadocs), Python (uv), Deno, Protobuf, OpenAPI/AsyncAPI, OCI images (apko), Helm, and more. Each plugin discovers buildable facets from the manifests already in your repo — no per-target build files to write.
- Hermetic builds, zero setup. Every build action runs on a Remote
Execution API (REAPI) grid with full input/output enforcement and
content-addressed caching. With no configuration,
frontseat buildstarts an embedded local grid in-process; pointreapi:at BuildGrid, BuildBuddy, or any REAPI-compatible service to share caches and scale out — the action model is identical either way. - Reproducible toolchains. Tool versions live in your
mise config and are the single source of truth:
actions declare tool names, the resolved version is hashed into every
action digest, and an unpinned tool fails the build instead of silently
using whatever is on
$PATH. - One lifecycle from checkout to release. Setup → Build → Ship as a single DAG: install, codegen, compile, test, then assemble, tag, publish to GitHub Releases, Homebrew, Scoop, Maven Central, and friends. Running a phase runs everything it depends on, cached.
- Built for AI agents.
fs setupregisters the Frontseat MCP server with Claude Code or Codex, so an agent can inspect the workspace, run builds, and apply fixes through structured tools and commands instead of scraping terminal output.
Installs the frontseat CLI (also available as fs).
mise is a hard dependency;
installation methods install it automatically unless stated otherwise.
brew tap frontseat-dev/tap
brew install frontseatscoop bucket add frontseat https://github.com/frontseat-dev/scoop-bucket
scoop install frontseatWorkspace setup is AI-driven: Frontseat ships an MCP server that your AI coding agent uses to scan the repo and generate the workspace files.
frontseat setupThis detects your AI clients (Claude Code, Codex) and registers the fs mcp
server with them. It exposes the workspace through structured MCP tools
(scan, build, catalog queries, conformance, sync) and MCP commands like
/fs:init, /fs:status, /fs:build, and /fs:conform that drive those
tools.
In your repository, start your AI client and run the init command:
claude # or codex
> /fs:initThe agent scans the repo, detects which plugins fit (Go, Maven, npm, ...), previews the workspace files, and — after your approval — writes them:
frontseat.yaml— workspace config: repositories and enabled pluginscatalog-info.yaml— your entities (Backstage Components, Systems, APIs)mise.toml— pinned Frontseat plugins (frontseat:<name>) and project tool versions; versions here are the single source of truth, and a tool a build action needs but isn't pinned fails the build
frontseat build // # build everything (starts the embedded grid automatically)
frontseat test // # run through the test phase
frontseat conform # run conformance checks
frontseat ship // # assemble, tag, release, publish// selects every entity; frontseat build //greet builds one. The first
build starts a local REAPI grid in-process — no Docker, no daemon setup.
Subsequent builds are incremental via the content-addressed cache.
Frontseat builds itself, hermetically, on a local REAPI grid (Docker). The short version:
mise install # pinned toolchain
docker compose -f reapi/buildgrid/docker-compose.yml up -d # local build grid
mise dev # dev build into bin/
frontseat build //See CONTRIBUTING.md for the full guide: how the dev/stable isolation works, starting a grid (BuildGrid or BuildBuddy), single-binary iteration, running tests, and Windows setup.