Get Started

Archive your coding sessions locally as plain text JSONL. 18 harnesses in, one dashboard out.

SDKs

Client libraries for building your own integrations. Our JSONL schema is open — a client in any language is a file writer.

TypeScript

@unturf/unfirehose

Core SDK. Session ingestion, querying, and export.

bash
$npm install @unturf/unfirehose
Go

unfirehose-sdks/go

Native Go logger. Sessions, messages, tool calls, todos, metrics, projects, and throttle records for every way a provider refuses a call. Writes straight to our on-disk format, so a Go harness needs no adapter.

bash
$go get git.unturf.com/engineering/unturf/unfirehose/unfirehose-sdks/go

npm Packages

Additional TypeScript packages under the @unturf scope. Used internally by the dashboard.

@unturf/unfirehose-router

Express/Next.js route handlers for webhook ingestion and SSE streaming.

@unturf/unfirehose-schema

JSONL event schema definitions and Zod validators.

@unturf/unfirehose-ui

React components for session timelines, diff viewers, and analytics.

Build Your Own

No API to call. A harness writes unfirehose/1.0 JSONL to disk and our dashboard discovers it on its next ingest.

# One session, one file. Directory name = your harness, then a slug of the working directory.
~/.myharness/unfirehose/home-you-git-project/<session-uuid>.jsonl

# One JSON object per line. A session header, then messages; a throttle record when a provider says no.
{"$schema":"unfirehose/1.0","type":"session","id":"…","cwd":"/home/you/git/project"}
{"$schema":"unfirehose/1.0","type":"message","role":"assistant","model":"…","content":[{"type":"text","text":"…"}],"usage":{"inputTokens":120,"outputTokens":40}}
{"$schema":"unfirehose/1.0","type":"throttle","kind":"rate_limit","upstream":"openrouter","httpStatus":429}

Full spec, JSON Schema files and 18 adapter docs ship in @unturf/unfirehose-schema.