This guide covers local development setup and supported deployment entry points.
git clone <your-repo-url>
cd ForgeFrame- Linux (primary target)
- Python 3.11+
- Node.js 20+
- PostgreSQL 14+ (required for full runtime mode)
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"cd ../frontend
npm installFrom repository root:
cp .env.example .env
cp backend/.env.example backend/.env
cp frontend/.env.example frontend/.envThen update placeholder values, especially database URL and admin bootstrap credentials.
ForgeFrame is designed for PostgreSQL-backed storage by default.
- Local host-native example in
.env.exampleuses127.0.0.1:5442. - Docker Compose example in
deploy/docker/.env.compose.exampleusespostgres:5432from inside containers.
At minimum, PostgreSQL mode requires:
FORGEFRAME_HARNESS_POSTGRES_URLFORGEFRAME_CONTROL_PLANE_POSTGRES_URLFORGEFRAME_OBSERVABILITY_POSTGRES_URLFORGEFRAME_GOVERNANCE_POSTGRES_URLFORGEFRAME_INSTANCES_POSTGRES_URL
Run in two terminals.
cd backend
source .venv/bin/activate
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000Alternative helper script:
./deploy/scripts/dev-backend.shcd frontend
npm run dev -- --host 0.0.0.0 --port 5173Alternative helper script:
./deploy/scripts/dev-frontend.sh./deploy/scripts/forgeframe-setup.shSupported setup modes:
- Docker Compose
- Host-native (systemd)
- Dev environment
- Limited exception (file/SQLite)
Non-interactive mode example:
./deploy/scripts/forgeframe-setup.sh --compose --non-interactive \
--fqdn forgeframe.example.com \
--acme-email admin@example.com \
--pg-password "<generated-password>"cd frontend
npm run build./deploy/scripts/start-forgeframe.shBy default this runs the API on FORGEFRAME_HOST/FORGEFRAME_PORT (defaults 127.0.0.1:8080) and applies storage migrations before startup.
- Frontend (Vite):
5173 - Backend (Uvicorn):
8000
- Internal app listener:
127.0.0.1:8080 - Optional public HTTPS:
0.0.0.0:443 - Optional ACME HTTP helper:
0.0.0.0:80
- App:
${FORGEFRAME_APP_PORT:-8000} - PostgreSQL:
${FORGEFRAME_PG_PORT:-5432}
- Backend process starts without
Settings()validation errors. - Frontend dev server starts and prints a local URL.
- Opening the frontend URL loads the shell UI.
- Backend health/API routes respond on configured backend port.
- Check
.envvalues for missing required PostgreSQL URLs. - Verify
FORGEFRAME_BOOTSTRAP_ADMIN_PASSWORDis set when admin auth is enabled.
- Confirm backend is running on expected host/port.
- Confirm frontend is using the intended API base path.
- Confirm host, port, username, password, and database exist.
- Validate all
*_POSTGRES_URLvalues usepostgresql+psycopg://format.
- Change port values in environment (
FORGEFRAME_PORT,FORGEFRAME_APP_PORT,FORGEFRAME_PG_PORT) and restart.