---
title: "A Terminal, Not a Dashboard"
description: "One local screen: load history, tune params, gated backtest, save config, deploy. Static HTML, Python backend, parquet data."
canonical: https://www.tradelogger.dev/blog/local-terminal
date: 2026-07-04
---

# A Terminal, Not a Dashboard

*FastAPI, a candle chart, and a deploy button*

We didn't want another SaaS chart with a webhook field. We wanted a terminal: load candles, edit params, backtest, save, deploy — on localhost, with files we can diff.

## Stack

- FastAPI backend — candles, indicators, backtest, live control, data sync.
- Static HTML + Lightweight Charts — no build step for the trading UI itself.
- Strategies as JSON on disk — name, run settings, params, optional last backtest gate result.
- Parquet OHLCV cache — sync once, iterate fast.

## The backtest gate

Run backtest → summary + gate pass/fail → save strategy embeds the result. Deploy checks the gate unless you force it (and you shouldn't). The UI tells you why deploy blocked you instead of silently paper trading a fantasy.

## Why local matters

Keys stay in .env. Cache stays in data/. Runs land in output/runs/. Nothing leaves the machine unless you wire a webhook. For a system that will eventually sign transactions, that's not paranoia — it's architecture.
Canonical HTML: https://www.tradelogger.dev/blog/local-terminal
