Forge Studio
The native macOS cockpit for LLM training
Train language models from scratch on Apple Silicon without opening a terminal — dataset prep, run supervision, and live loss dashboards for Forge.
200k
CSV rows ingested in ~1.1 s
<250 ms
chart snapshot at any size
0
third-party dependencies
30 s
stall watchdog threshold
Overview
Forge Studio is the native GUI companion to Forge, the from-scratch C++20 + Metal LLM training framework. It wraps the entire train-a-model workflow — prepare data, design an architecture, launch and monitor runs, compare experiments, and generate from checkpoints — as a first-party-feeling Mac app built in Swift, SwiftUI, and Swift Charts with zero third-party dependencies.
The centerpiece is a loss dashboard built to the TensorBoard/W&B standard: raw and EMA-smoothed loss, hover crosshairs with full callouts, pinch-zoom and pan with a follow-live pill, best-val markers, and secondary charts for LR schedule, tokens/sec, and gradient norm. Raw data is never discarded — the UI reads LTTB-downsampled snapshots sized to pixel width.
Runs cannot lie: a single-writer state machine makes illegal transitions unrepresentable, the registry persists atomically so you can kill -9 the app at will, crash recovery truthfully resolves interrupted runs, and a watchdog flags stalls. Studio never reimplements training — it drives the real forge binary and reads its structured metrics.
Key Features
TensorBoard-grade loss dashboard
Raw train loss under a bias-corrected EMA with TensorBoard semantics, val loss points, hover crosshair, and a best-val marker annotation.
Hitch-free at 100k steps
LTTB downsampling to ~2x pixel width keeps hover interactions smooth; 200,000 CSV rows ingest in about 1.1 seconds.
Runs that can't lie
A single-writer state machine with an explicit legal-transition table makes illegal run states unrepresentable.
Honest crash recovery
Atomic temp-file-then-rename persistence plus launch-time resolution of interrupted runs — including detecting a forge process still alive.
Dataset prep built in
TinyStories or streamed Hugging Face mixtures like FineWeb-Edu, DCLM, and Cosmopedia, prepared with a live console.
Full config editor
Every Forge config field from n_layers to DeepSeek-style MoE routing, with live validation, presets, derived math, and an LR preview.
Compare runs honestly
Multi-run overlays plotted on the tokens axis — the honest one — for apples-to-apples experiment comparison.
Generate and eval in-app
Sample text and run evaluation from any checkpoint directly inside the app, no terminal required.
Finish-line notifications
Local notifications deliver the final loss when a run finishes or fails, plus a possibly-stalled badge after 30 s of silence.
How It Works
ProcessRunner + LogParser
An actor streams the real forge binary's output incrementally, parsing header-driven CSV metrics and stdout events off the main thread.
MetricsStore
An actor-isolated store tails logs incrementally and serves LTTB-downsampled snapshots to the charts — raw data is never discarded.
Run state machine
queued, launching, running through finished, failed, or stopped — with an explicit legal-transition table and atomic registry persistence.
ForgeConfig models
A Codable mirror of every Forge config field with validation and derived math, round-tripped byte-compatible against the real configs/*.json.
RunSupervisor + watchdog
Supervises live processes, flags stalls after 30 seconds of silent metrics, and handles SIGTERM stops with honest UI messaging about checkpoint loss.
Tech Stack
Core
Data pipeline
Release
Highlights
- Never reimplements training — drives the real forge binary and reads its structured metrics, so what you see is exactly what the framework did
- The Swift parameter-count formula is tested to match forge info for every shipped config
- RESEARCH.md documents the full Forge contract — config schema, CLI, log.csv grammar, signal behavior — extracted from source and enforced by tests
- kill -9 safe: atomic temp-file-then-rename persistence for the run registry
- Measured performance: 200,000 CSV rows ingest in ~1.1 s and snapshot to chart width in under 250 ms
- Zero third-party packages — pure Swift, SwiftUI, and Swift Charts
Explore Forge Studio
macOS cockpit for Forge LLM training — the full source is on GitHub.