High-volume reference application

Signal Forge

A polished observability explorer that pushes Trestle's SQLite backend through deterministic batch ingestion, typed telemetry and bounded server-side queries using only the public HTTP API.

Signal Forge overview showing 1.11 million seeded events, ingestion metrics and recent operational signals

What it proves

Volume

Repeatable scale tests

One command appends exactly 10k, 100k or 1m deterministic events in atomic 1,000-record transactions.

Boundary

Public API only

The CLI and same-origin Node server use a scoped service credential. Neither opens SQLite nor imports Trestle internals.

Product

Real query UX

The dashboard filters, sorts, paginates and inspects structured signals across services, hosts and deployments.

Run the example

git clone https://github.com/trestle-cv/dogfood-signal-forge
cd dogfood-signal-forge

# Start a disposable SQLite-backed Trestle instance first.
export TRESTLE_URL=http://127.0.0.1:17433
export TRESTLE_ADMIN_EMAIL=admin@example.test
export TRESTLE_ADMIN_PASSWORD='choose-a-real-password'

npm run bootstrap
npm run seed -- events 10000
npm start

Open http://127.0.0.1:4174. Increase the seed count to 100000 or 1000000 when you are ready to test sustained ingestion. The repository commits no generated data.

Architecture and authority

browser -> Signal Forge server -> Trestle HTTP API -> Trestle SQLite
CLI ---------------------------> Trestle HTTP API

The browser sees only a narrow same-origin /api/ surface. Bootstrap creates five typed collections and saves a copy-once service credential with owner-only permissions. Large overview totals are materialized during ingestion because The dogfood run targets Trestle without aggregate queries, so large overview totals are materialized during ingestion.

Measured dogfood run

The initial exercise seeded 10,000, 100,000 and 1,000,000 events for 1.11 million total records. Signal Forge records elapsed time and throughput for each seed, while its status command verifies collection counts without bypassing Trestle's API boundary.