The Code Codex
Theme
← Projects

Switchyard

In developmentLive demo ↗

About this project

Teams that keep a product spread across several repositories (web, api, mobile, infrastructure…) end up repeating 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.

Switchyard — the rail yard where trains are sorted and dispatched — puts all of that in one place:

  • Web panel (Next.js) bound to localhost, for those who prefer clicking.
  • syd CLI (Go), with --json output and non-interactive flags, designed to be driven by AI agents too.
  • A single switchyard.yaml describes the project: repositories, launch 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 is being turned into a generic project, with nothing specific to a client.

Modules

ModuleWhat it does
Dev LauncherStarts each repository’s services and watches the configured ports
Git panelStatus of every repo, batch update, joint checkout, branch and lock cleanup
Azure BoardsStarts a task (moves the card and creates the branch), linked commits, code review and rework, with the board phases defined in the configuration
GitHubTeam PRs, CI checks and workflow dispatch
E2E testsDiscovers and runs the target repository’s Playwright tests against the chosen environment, with live logs and history
MocksLocal HTTP servers with fixed per-route responses to simulate external integrations
DatabaseConnection profiles and a catalog of diagnostic queries
Cloud logsSearch and live tail of Azure Container Apps logs
SetupDiagnoses and installs the required tools, secrets kept outside the repository

Configuration

name: Acme Platform
repos:
- name: web
path: acme-web
launch: { command: npm run dev, port: 3000 }
azureBoards:
organization: acme
project: Acme Platform
team: Acme Team
branchPattern: "{type}/AB#{id}-{slug}"
phases:
- { name: In Development, role: start }
- { name: Code Review, role: review }
- { name: Ready for Testing, role: test }