← Projects
projects / deckIn development

Deck

A local hub for teams that work across several repositories: a single binary (deck) that is both a CLI and a web panel, bringing git, boards, PRs, E2E tests, mocks, databases, logs and environment setup together from one configuration file.

  • binary: CLI and panel1
  • specs7

About this project

Teams that maintain a product spread across several repositories (web, api, mobile, infrastructure…) repeat the same ritual every day: update each repo, start the right servers on the right ports, move the card on the board, create the branch with the agreed name, open the PR, run the E2E tests against the right environment, check the cloud logs.

Deck (as in a command deck: one place to steer everything) brings all of that into one place:

  • A single binary, deck (Go), which is both the CLI and the web panel.
  • CLI with --json output and non-interactive flags, also designed to be driven by AI agents.
  • Web panel (deck ui) for those who prefer to click, served by the binary itself on 127.0.0.1 only.
  • A single deck.yaml describes the project: repositories, start commands, environments, board and phases, mocks, databases and tests. Switching projects (or boards) means switching the file, not the code.

It started as an internal tool for one team and was turned into a generic project, with nothing specific to a client.

Principles

PrincipleWhat it means in practice
Everything localExecution happens on the machine, where the repositories, git, the CLIs (az, gh, docker) and the secrets live. There is no hosted backend and no cloud account.
No data leaves the machineConfig, command output, database data and logs are never sent anywhere. The public demo uses fictitious data.
One binary, two interfacesCLI and panel are the same deck. The panel reimplements nothing: every button runs a CLI command.
Nothing project-specific in the codeRepositories, URLs, board, phases and databases come from deck.yaml.
Secure by constructionThe browser never sends command-line flags; the server builds each command from typed parameters.

How it works, in one picture

Your machine

HTTP (loopback only)

child process, no shell

Browser · localhost:4004

deck ui · pages + /api

Terminal / AI agent

deck command

git · gh · az · docker · Playwright · Postgres

deck.yaml + secrets

GitHub · Azure DevOps · Azure · databases

Your machine

HTTP (loopback only)

child process, no shell

Browser · localhost:4004

deck ui · pages + /api

Terminal / AI agent

deck command

git · gh · az · docker · Playwright · Postgres

deck.yaml + secrets

GitHub · Azure DevOps · Azure · databases

The panel is a set of static pages embedded in the binary. When you click “move card”, the page calls /api/boards on the same deck ui, which validates the request and runs deck boards-move-card --id 1234 --state "Code Review" as a child process. The result comes back to the screen as JSON.

Modules

ModulePanelCLI
Dev Launcher and Docker Compose/launcherdeck launch, deck compose up <stack>
Multi-repo git dashboard/git-dashboarddeck git-dashboard --json
Azure Boards and branch/PR workflow/boardsdeck git-workflow-start-dev, deck boards-move-card
GitHub: PRs, checks and workflows/github-prsdeck prs-manage --json
Azure Repos, Pipelines and Sonar—deck azure-prs, deck azure-pipelines, deck sonar check
E2E tests (Playwright) and history/testes, /historicodeck tests run <ID> --env <environment>
Code coverage/coberturadeck coverage-status --json
HTTP mocks/mocksdeck mocks
Database/databasedeck db query -p <profile> --sql "..."
Cloud logs (Azure Container Apps)/cloud-logsdeck logs-search, deck logs-follow
Environment setup and secrets/setup-envdeck diag, deck setup all, deck secrets set <NAME>
AI agent skills/skills—

Getting started

Terminal window
# 1. Download the binary from the latest release (macOS, Linux or Windows) and put it on your PATH as `deck`
deck --version
# 2. Describe your project
cp deck.example.yaml deck.yaml # adjust repositories, environments, board...
# 3. Open the panel
deck ui # http://localhost:4004

If you prefer the terminal, skip the panel: deck --help lists the commands and deck --schema prints the full catalog as JSON.

Documentation

PageWhat it covers
ArchitectureHow the binary serves the panel and the API and runs commands
SecurityThe threat model and each layer of protection
ModulesWhat each screen and command does
Configurationdeck.yaml and secrets reference
CLI and AI agentsNon-interactive use, --json, --schema
Development and releasesContributing, testing, publishing and updating
Architecture decisionsWhy local-first, and what was discarded along the way

Start here