Fabrica
Game studio infrastructure as code for AWS — one binary and one YAML file to provision Perforce (or Lore), Unreal Horde, Distributed DDC, CI, GameLift deploy, and cloud workstations.
Fabrica is the sister tool to Ludus: Ludus orchestrates builds; Fabrica gives them somewhere to run. Single Go binary, no Terraform/Pulumi, no external CLIs — AWS Cloud Control API under the hood, cost estimates before you write, DynamoDB-locked state so two engineers don't clobber each other.
Why Fabrica
Game studios aren't web apps. You need version control for terabyte asset histories, a build farm for distributed cooks, a DDC that keeps iteration fast, and a reliable way to stand all of it up without stitching Terraform modules, bash scripts, and console clicks. Fabrica owns the full lifecycle — provision, status, tear down — with typed-phrase confirmations and recoverable partial state.
Current Status
Current stable: v0.4.5 (2026-09-20). Continues the v0.4.x line from v0.4.4 (2026-09-10). Phase 0, Phase 1, Lore (v0.3: S3 store, ami build, TLS on create, SSM on local store), and DDC (V1 + multi-region edge nodes) are complete: Perforce, Horde, Lore, Distributed DDC (home + edge regions), Workstation, CI, Deploy, Cost, drift detection with auto-remediation (--fix), MCP server, IaC export, full-stack destroy --all, offline cost visibility, and a CLI E2E suite. Install via npm install -g fabrica-cli or the matching GitHub Release — tagged Releases are the source of truth for the current stable version. See ROADMAP.md for status and what's next.
Operational diagnostics are available on stderr via --verbose or FABRICALOGLEVEL=debug — normal stdout output (including --json) is not affected.
| Module | Commands | Status | |--------|----------|--------| | setup / doctor / status / drift / config show | Foundation | Complete | | perforce | create, status, destroy, backup, backup schedule, backup verify, restore | Complete | | horde | create, status, submit, destroy, ami build, agents schedule, agents metrics | Complete | | lore | create, status, destroy, ami build | Complete (AMI-first; local-store private path proven; S3 store provisioned, not re-verified on a known-good AMI) | | ddc | setup, status, destroy, region add, ami build, topology | Complete (V1, home + edge regions) | | workstation | create, list, stop, start, schedule, terminate, ami build | Complete | | ci | setup, trigger, status, logs, pipeline, destroy | Complete | | deploy | setup, promote, rollback, status, destroy | Complete | | cost | report, forecast, alerts | Complete (offline, static price table) | | ops | export | Complete (V1, local hooks) | | export | --format cloudformation\|terraform | Complete (V2) | | destroy --all | full-stack teardown | Complete |
Guidance, not provisioned: ci pipeline prints the CodePipeline path (no CodePipeline resource is created), schedule commands print windows/hints (no EventBridge or cron is installed), spot: true only discounts estimates (no Spot capacity is requested), and cost is offline against a static us-east-1 price table, not live Pricing or Cost Explorer.
Requirements
- Go 1.25.13+
- AWS credentials with permissions to create EC2 instances, security groups, S3 buckets, and DynamoDB tables. Studio IAM Identity Center / SSO is supported: set cloud.aws.profile to the named SSO profile and run aws sso login first. Expired sessions fail with an aws sso login hint on create/update/promote/destroy and fabrica doctor.
- IAM permission for sts:GetCallerIdentity
Install
Fabrica ships as a single Go binary. Two ways to get it:
# Via npm (downloads the matching prebuilt binary for your platform):
npm install -g fabrica-cli
# …or run without installing:
npx fabrica-cli --help
# Or via the Go toolchain:
go install github.com/jpvelasco/fabrica@latestPrebuilt binaries for linux/macOS/windows (amd64) and linux/macOS (arm64) are attached to each GitHub Release.
Building
git clone https://github.com/jpvelasco/fabrica.git
cd fabrica
go build -o fabrica .