Your Claude Code control deck.
A local-only SvelteKit app to browse, replay, rename, pin, and resume every conversation you've had with Claude Code, across every project on your machine.
Relic reads the JSONL session logs Claude Code writes to ~/.claude/projects/ and gives you:
/rename and claude --resume picker)localStorage)All data stays on your machine — there's no server call out to anything.
corepack enable or npm i -g pnpm~/.claude/projects/ directory (Claude Code writes here automatically)git clone https://github.com/adarshpandey-cs21/relic.git
cd relic
pnpm install
pnpm dev # start the dev server
pnpm dev --open # also open it in the browser
The dev server runs at http://localhost:5757 by default.
pnpm build # production build
pnpm preview # preview the production build locally
pnpm check # typecheck + svelte-check
All env vars are optional. Copy .env.example to .env to override defaults:
cp .env.example .env
| Variable | Default | Notes |
|---|---|---|
CLAUDE_PROJECTS_DIR |
~/.claude/projects/ |
Absolute path to Claude Code's projects directory. ~ is not expanded — use absolute. |
Restart the dev server after editing .env.
src/lib/server/history.ts — reads CLAUDE_PROJECTS_DIR, walks each project folder, and parses each *.jsonl line by line. JSONL events get normalized into a typed schema (user-text, assistant-text, assistant-tool-use, user-tool-result, system, meta, …). Custom titles are read from both custom-title events (written by /rename) and ~/.claude/sessions/<pid>.json's name field, with PID JSON winning over JSONL — the same precedence Claude /resume uses.src/routes/+page.svelte — projects grid (homepage)src/routes/projects/[projectId]/+page.svelte — sessions list for a projectsrc/routes/projects/[projectId]/sessions/[sessionId]/+page.svelte — full transcript viewsrc/routes/api/rename/+server.ts — append-only rename endpoint that mirrors /rename's behavior (writes custom-title + agent-name events, also patches the PID JSON name field if one exists).src/routes/api/resume/+server.ts — opens a session in Warp / iTerm / Terminal via AppleScript or URL schemes.src/lib/pinned.svelte.ts — reactive store for pinned projects + sessions, persisted to localStorage.svelte-checkMIT — do whatever you want with it.