dev, staging and prod environments, with the last two already set up to deploy to Reliant hosting.
Forge generates code, but it is not a template you copy once. It keeps regenerating the plumbing (API stubs, data access, typed config, frontend hooks, dashboards) from two inputs you own, your protobuf API and your SQL migrations, and it never touches the files where your logic lives. Project anatomy explains which files are which.
It is also built to be driven by an agent. Ask Reliant to “build me an app that…” or start the Build an App workflow, and the agent uses the same commands this guide shows. The binary describes itself, so an agent asks it rather than guessing: forge project capabilities lists every command, forge skill list the playbooks that ship with it.
Running forge
Inside Reliant, forge is built in: run it asreliant forge …, and agents’ shells have it too, already signed in to your account. This guide writes forge for short. Outside Reliant, install the standalone binary with go install github.com/reliant-labs/forge/cmd/forge@latest.
You need Go and Docker on the machine that runs the project, and Node.js if it has a frontend.
Create a project
--service names a first service (name it after a domain thing, like bookmark or order, not after the app), and --frontend adds a Next.js frontend. Both are optional and can be added later with forge scaffold service <name> and forge scaffold frontend <name>. The project already builds and runs: the binary serves health checks, every environment is declared, and CI workflows are in place.
Give it data
Describe an entity in the service’s proto file,proto/services/bookmark/v1/bookmark.proto:
forge scaffold, which creates everything your protos imply:
bookmarks table, the five CRUD methods (CreateBookmark, GetBookmark, UpdateBookmark, DeleteBookmark, ListBookmarks) added to your service, the generated data access and handler wiring, a test, and list, detail and edit pages in the frontend. Field numbers start at 2 because forge adds id, created_at and updated_at itself.
Run it locally
.forge/logs/dev/, one file per service, including the browser console of your frontend:
forge env up runs a local identity provider for development.
Check your work
Before you call a change done, run the same gate CI runs:forge generate is safe to run at any time; forge lint checks architecture, migrations and generated-file drift as well as style. Adding a feature walks through the everyday loop.
Deploy it
Where to go next
- Project anatomy: where code goes, and which files forge owns.
- Adding a feature: services, RPCs, entities, migrations, tests.
- Environments & deploys: releases, plans, promotion, scoped deploys, your own cluster.
- Observability: what you get without configuring anything.
- Troubleshooting: when something does not come up.
deploy/static-site skill for it.