---
title: "Odyssey · GrepRAG"
description: "Productivity harness for Claude Code — Odyssey, Corpus, Lore, Inbox, plus the advisor skills that turn them into multitasking agents."
canonical: https://www.greprag.com/odyssey/
source: /odyssey/
---

Store · Odyssey

# Ask what you did last Tuesday.  
Or yesterday. Or last quarter.

Open a new session. Your AI already has yesterday's summary in hand.

Every turn captured. Hourlies summarize turns. Dailies summarize hourlies. Weeklies summarize dailies. The narrative thickens automatically while you work on other things.

Architecture

## Four tiers. One project anchor.

A `.claude/project.json` file in your repo holds the project UUID. Every turn, ship-event, and summary is keyed on that UUID. Two repos never see each other's memory.

The Stop hook posts each turn envelope to the API. Three crons run automatically: hourly compaction at the top of every hour, daily compaction + ship-event extraction at 03:00 UTC, weekly distillation Sunday 04:00 UTC.

weekly

daily

hourly

turn

Each tier reads the one below. No tier reads its own outputs.

Capture

## Stop hook on every turn.

The hook ships with the CLI. `/greprag` wires it into your `~/.claude/settings.json` during setup. After that, there's nothing to do. Each turn becomes a row in the `memories` table, tagged with the project UUID, with the user prompt and the assistant message scrubbed of env vars.

\# on every turn — no action needed
POST https://api.greprag.com/v1/memory/turn
  project\_id: d75850fa-...
  shape:      turn
  content:    { user: "...", assistant: "..." }

Compaction

## Crons turn raw turns into a narrative.

Hourly compaction reads turns from the past hour and writes an hourly summary. Daily compaction reads hourlies from the past day and writes a daily summary plus any atomic ship-events (a fix landed, a feature shipped, a deploy went out). Weekly reads dailies.

Each tier shapes once and stays put. Retrieval returns the stored summary verbatim. No LLM rewriting at read time, no per-query token cost.

Injection

## SessionStart recap, automatic.

Open a fresh session in any project with a GrepRAG anchor and the recap hook fires. You see yesterday's summary and recent sessions before you type a single word.

$ claude

\[GrepRAG memory: your-project\]

Yesterday's summary:
1. Shipped the new auth flow with migration 028 and updated env vars.
2. Fixed the race condition in the queue worker. Added the missing lock.
3. Refactored the API layer to use the new typed-client.

Recent sessions:

4 hours ago:
1. Started exploring the bento layout for the landing page.

1 hour ago:
1. Wired the SessionStart recap hook end-to-end.

Pull on demand

## Time-window and shape queries.

Advisor skills and explicit commands can pull any window. Last 24h, last week, the entire month of April. Each shape is queryable directly.

$ curl "https://api.greprag.com/v1/memory/by-period?projectId=$PID&period=daily&days=7"

$ curl "https://api.greprag.com/v1/memory/by-shape?projectId=$PID&shape=ship-event&limit=20"

Want it from inside the agent? An advisor skill calls `greprag discover` to see what's stored across projects and pulls the window it needs. The agent reasons; the store grep'd.

Cost

## About ten cents a month.

LLM compaction runs at write only. Three crons per project: hourly, daily, weekly. At typical activity (one to two sessions a day) the bill lands near `$0.10/month` per project. Read is free.

Use case

## "What was that bug from Tuesday?"

You spent four hours fixing a race condition Tuesday afternoon. It's Friday morning. You don't remember the file, the symptom, or what you tried before the fix landed. The session-start recap surfaces it without you asking.

The agent treats the recap as context. When you ask "what did I work on this week?", the answer is already in the window.
