Forge

Your training.
Your server.
Your numbers.

Forge is a self-hosted tracker for weight training — live logging with ghosts and rest timers, a progression engine with written-down rules, and charts computed from documented formulas. One container, one SQLite file, zero cloud.

No cardio, by design.

Live workout logging: Push Day with bench press sets, previous-workout ghosts, progression suggestion and rest timers

The actual app, mid-session. Not a render.

What ships

Live logging

Ghost sets you tap to accept, warm-up ramps off the working weight, RPE when you want it. Sets queue offline and sync when the gym wifi gives up.

offline-first

Progression engine

Double progression on rep targets; three stalled sessions suggest the deload. Documented, not vibes.

rules in docs

Programs

5/3/1 and linear-block schemes with training maxes — one tap starts the prefilled session.

periodization

Supersets & rest

Rest fires after the group, not between partners. The timer survives reloads and rings your lock screen.

https push

Muscle map

Front/back anatomy on all 278 movements and your custom ones; equipment glyphs keep the picker scannable at 22:00.

278 movements

Your data, portable

Strong & Hevy import, JSON export, REST API with scoped tokens, webhooks, Prometheus metrics.

never locked in
Stats page: training streak, weekly volume, muscle split and form chart

Analysis no tracker ships, with no black boxes

Form & fatigue — the lifting version of a performance-management chart. Recovery sweet spot, strength standards, detraining half-life, push/pull balance. All deterministic math on your own sets — no AI, no cloud, and if a chart is hidden it's because your data can't support it yet.

Every formula lives on one docs page with its thresholds and reasons, and 49 tests hold the code to it.

e1RM = w × (1 + r / 30) — Epley, best working set
form = fitness₄₂ − fatigue₇ — EWMA daily load

Runs on your box in a minute

One container, one volume. SQLite in WAL mode holds everything — back up a single directory and you own your entire training history. Nightly snapshots, OIDC single sign-on and multi-user come in the box.

Installation guide
# docker-compose.yml
services:
  forge:
    image: ghcr.io/bndct-devops/forge:latest
    ports: ["8081:8081"]
    volumes: ["./data:/data"]
    restart: unless-stopped
$ docker compose up -d