Forge CLI
Use Forge's powerful command-line interface for development and deployment
Forge CLI
Forge provides a comprehensive command-line interface that helps you develop, build, and deploy your applications. The CLI uses a hierarchical subcommand structure for better organization and includes commands for project management, code generation, database operations, and more.
Installation
Install the CLI Tool
# Homebrew (macOS/Linux) - recommended
brew install xraph/tap/forge
# Or using Go install
go install github.com/xraph/forge/cmd/forge@latest
# Verify installation
forge versionSee the Installation guide for all available methods (Scoop, binary download, Linux packages, Docker).
CLI Commands Overview
# Get help
forge --help
# Get version information
forge version
# Initialize a new project
forge init
# Start development server
forge dev
# Generate code
forge generate app --name=my-app
# Build the application
forge build
# Deploy the application
forge deployCommand Structure
Forge CLI uses a hierarchical subcommand structure for better organization:
forge <command> <subcommand> [flags]Most commands support aliases for faster typing:
forge generate app # Full command
forge gen app # Alias
forge g app # Short aliasCore Commands
Project Management
forge init- Initialize a new Forge projectforge doctor- Check system requirements and project health
Development
forge dev- Start development server and toolsforge dev list- List available appsforge dev build- Build app for development
Code Generation
forge generate(aliases:gen,g) - Generate code from templatesforge generate app- Generate a new applicationforge generate service- Generate a new serviceforge generate extension- Generate a new extensionforge generate controller- Generate a controllerforge generate model- Generate a database model
Database Management
forge db(aliases:database) - Database management toolsforge db migrate- Run database migrationsforge db rollback- Rollback database migrationsforge db status- Show migration statusforge db create- Create a new migrationforge db seed- Seed the databaseforge db reset- Reset the database
Build and Deployment
forge build— Build applicationsforge deploy— Deploy applicationsforge deploy docker— Build and push Docker imageforge deploy k8s— Deploy to Kubernetesforge deploy status— Show deployment status
Infrastructure
forge infra— Infrastructure deployment and managementforge infra docker deploy— Deploy using Docker Composeforge infra docker export— Export Dockerfiles and Compose configforge infra k8s deploy— Deploy to Kubernetesforge infra k8s export— Export Kubernetes manifests (Kustomize)forge infra do deploy— Deploy to DigitalOcean App Platformforge infra do export— Export DigitalOcean app specforge infra render deploy— Deploy to Render.comforge infra render export— Export Render blueprint
Forge Cloud
forge cloud— Forge Cloud managed deployment platformforge cloud deploy— Deploy services to Forge Cloudforge cloud status— Show deployment statusforge cloud login— Authenticate with Forge Cloudforge cloud logout— Log out from Forge Cloudforge cloud logs— View service logsforge cloud rollback— Rollback to a previous versionforge cloud scale— Scale service instances
Extensions
forge extension(aliases:ext) — Extension management toolsforge extension list— List available extensionsforge extension info— Show extension information
Client Tools
forge client— Client generation and management tools
Quick Start Examples
Create a New API
forge init --layout=single-module --template=api
forge gen app -n api-gateway
forge gen ctrl -n users -a api-gateway
forge gen model -n User --fields=name:string,email:string
forge db create -n create_users_table
forge db migrate
forge dev -a api-gatewayDocker Development Workflow
forge init --layout=single-module
forge gen app -n api-gateway
forge dev --docker -a api-gateway -p 8080 # Run in Docker with hot reloadMicroservices Development
forge init --layout=multi-module
forge gen app -n api-gateway
forge gen app -n auth-service
forge gen app -n user-service
forge build --production
forge deploy docker -a api-gateway -t v1.0.0
forge deploy k8s -e stagingInfrastructure Export and Deploy
forge infra docker export # Generate Docker Compose + Dockerfiles
forge infra docker deploy --build # Build and run with Docker Compose
forge infra k8s export # Generate Kubernetes manifests
forge infra k8s deploy --env=prod # Deploy to KubernetesForge Cloud Deployment
forge cloud login # Authenticate
forge cloud deploy -e prod # Deploy to production
forge cloud status --env=prod # Check status
forge cloud logs -s api-gateway -f # Stream logs
forge cloud scale -s api-gateway -r 5 # Scale to 5 replicasConfiguration
Forge Configuration File
The .forge.yaml file configures your Forge project:
# .forge.yaml
project:
name: my-project
module: github.com/me/my-project
layout: single-module # or multi-module
structure:
cmd: ./cmd
apps: ./apps
pkg: ./pkg
internal: ./internal
deployments: ./deployments
dev:
auto_discover: true
hot_reload:
enabled: true
delay: 500ms
watch:
enabled: true
paths:
- "./apps/**/internal/**/*.go"
- "./pkg/**/*.go"
exclude:
- "**/*_test.go"
- "**/vendor/**"
docker:
image: golang:1.25-alpine
network: bridge
database:
driver: postgres
migrations_path: ./database/migrations
seeds_path: ./database/seeds
build:
output_dir: ./bin
auto_discover: true
platforms:
- os: linux
arch: amd64
- os: darwin
arch: arm64
deploy:
registry: ghcr.io/myorg
docker:
network: forge-network
kubernetes:
namespace: defaultEnvironment Variables
# Set environment variables
export DATABASE_URL="postgres://user:pass@localhost/myapp"
export AUTH_SECRET="your-secret-key"
# Use in configuration
forge dev --env developmentAliases Quick Reference
| Full Command | Aliases | Example |
|---|---|---|
generate | gen, g | forge gen app |
database | db | forge db migrate |
extension | ext | forge ext list |
dev list | dev ls | forge dev ls |
db migrate | db up | forge db up |
db rollback | db down | forge db down |
db create | db new | forge db new |
deploy k8s | deploy kubernetes | forge deploy kubernetes |
infra k8s | infra kubernetes | forge infra kubernetes deploy |
infra do | infra digitalocean | forge infra digitalocean export |
extension list | ext ls | forge ext ls |
generate service | gen svc | forge gen svc |
generate extension | gen ext | forge gen ext |
generate controller | gen ctrl, gen handler | forge gen ctrl |
Tips and Best Practices
-
Tab Completion: Most shells support tab completion. Run
forge completion bashorforge completion zshto enable it. -
Help Everywhere: Add
--helpto any command to see detailed usage:forge --help forge generate --help forge generate app --help -
Interactive Mode: Most commands prompt for missing required arguments:
forge gen app # Will prompt for name forge dev # Will show app selector -
Aliases: Use shorter aliases for faster typing:
forge g app -n my-app # Instead of forge generate app forge db up # Instead of forge db migrate forge ext ls # Instead of forge extension list -
Config Search: Run commands from any subdirectory -
.forge.yamlis found automatically.
Troubleshooting
Common Issues
Command not found:
# Check if forge is in PATH
which forge
# Reinstall if needed
go install github.com/xraph/forge/cmd/forge@latestPermission errors:
# Fix permissions
sudo chown -R $(whoami) $GOPATHConfiguration errors:
# Validate configuration
forge doctor
# Check configuration
forge doctor --verboseDebug Mode
# Enable debug mode
forge dev --debug
# Verbose output
forge dev --verbose
# Log level
forge dev --log-level debugFor detailed information about specific command groups, see the individual command pages in the navigation menu.
How is this guide?