Skip to content

Sessions, history & transcripts

A Nori session is a conversation with an agent plus everything that happened in it — messages, tool calls, patches, and approvals. Nori records it all on the host side, independent of whatever the agent stores for itself.

Everything lives under the Nori home directory: $NORI_HOME if set, otherwise ~/.nori/cli. Transcripts are organized by project:

~/.nori/cli/transcripts/by-project/{project-id}/
├── project.json # project metadata
└── sessions/
└── {session-id}.jsonl # one file per session

Message history — every prompt you’ve typed, recallable from the composer in any session — is a separate global file, ~/.nori/cli/history.jsonl.

Transcripts are what make sessions durable: nori resume (or /resume in the TUI) brings one back, and /fork, /compact, and /undo rewind and reshape it — see the sessions guide.

Each session file is JSONL: one JSON object per line, each carrying a timestamp, a schema version (currently 2), and one of seven entry types — session_meta, user, assistant, tool_call, tool_result, patch_apply, and client_event. The format is documented as a stable contract, so external tools — analysis scripts, other hosts, other ACP implementations — can read and write Nori transcripts without depending on Nori’s internals.

  • Sessions guide — resume, fork, compact, and undo in practice
  • Architecture — where transcripts sit in the nori-harness runtime layer

this page as markdown: /cli/concepts/sessions-and-transcripts.md· index for agents: /llms.txt