Loading the documentation…

Session logs on your computer

DataMind Oda keeps every chat's lasting record as session log files on your computer: a log that grows as the chat works. This page shows where the files live, how Oda names and keeps them, what a log records, and how to open, back up or inspect them. For the messages Oda shows when a log has a problem, see Session log problems.

Where session logs live

All of your session logs sit under a single folder on the computer; this page calls it the log folder.

A chat with more than one generation of its log, compression on, looks like this:

text
<log folder>/
  --<working folder>--/
    <chat folder>/
      session.jsonl.zstd
      session.v4.jsonl.zstd

A chat with compression off keeps the same names without .zstd.

How log files are named and kept

Opening a chat written by a different version of Oda is covered in Opening older chats.

When a chat first reaches disk

What a log records

A log holds one event per line, each line a JSON object, after the first line that identifies the chat. Every event carries the same small envelope:

PartWhat it carries
typeWhat the event records
seqThe event's position in the log
timeWhen the event happened
dataThe event's payload
ignorable (optional)Marks the event as safe to skip when a reader does not know its type
surfaceOp, sourceEventSeqs (conditional)For a surface event: the history change it applies and the recorded events it is built from

The full format of a log, and what its records hold, is covered in Chat log format.

Compressed and plain logs

One writer at a time

Nothing is deleted automatically

Keep a copy of your chats

Reading part of a log

Values Oda keeps to reopen a chat quickly

Besides the log, Oda keeps small current values built from it, so it can show a chat's state, for example in the chat list, without reading every event again.

Upgrade a whole log folder at once

Opening an older chat in Oda converts it as you use it. For a whole log folder at once, maintainers use a one-time command, pnpm run migrate:sessions-to-v4.

Questions, answered

Where are my session logs kept on this computer?

All of a chat's logs live under one log folder on the computer. Inside it, chats are grouped by the folder they work in, and every chat has a folder of its own. The log folder has no default: it is set for the installation, so if you are not sure which folder was chosen, ask your DataMind OS administrator.

Why is there no file for a chat I just created?

A chat writes its first file only after it first has content to save. Until then nothing exists for it, and a chat you never used leaves no files even if Oda stops suddenly. The first save writes the file's first line and the first events; later saves add to the end.

Which file is my chat's current state, and what are the others?

A chat can have several generations of its log side by side: session.jsonl from the oldest format, and session.v<N>.jsonl files from later ones, with .zstd added when compression is on. The newest file is the chat's current state, and the older ones stay exactly as they were; Oda never renames, replaces, moves or deletes them.

Can two copies of Oda work on the same chat?

Only one can write to it at a time. While the copy that holds a chat is alive, a second writer is refused with session "<id>" is already owned by an active write handle. Reading the chat is never blocked, and the lock ends with its program, so closing the copy that holds the chat frees it for writing.

What is the session.lock file?

On some systems, Oda keeps a small file named session.lock in a chat's folder while the chat is being written, to keep one writer at a time. It can stay there after the writer releases it. If a chat stays locked because the process holding it cannot continue, deleting this file frees the chat for the next writer; do this only when you are sure that process will not write the chat again.

Does Oda ever delete or trim old log files?

No. Oda keeps every generation, and there is no cleanup, no retention limit and no delete-all action. Log files stay until someone removes them, so remove what you no longer need yourself and keep copies of what matters.

How do I keep a safe copy of my chats?

Copy the whole log folder to a safe place. Every chat folder is complete on its own, older generations included, so the copy holds whole chats. To use the copy, restore it keeping the folder shape and the same form; Oda refuses a log kept in the wrong place or the wrong form rather than reading it wrongly.

Can I open or edit a log file in a text editor?

You can read it when compression is off: the log is plain text, one JSON object per line. With the default compression, read the chat in Oda, because the compressed form is built to be read by Oda. Do not edit a log file by hand: Oda checks the log files it opens and refuses one that changed outside Oda rather than guess, so a hand edit can leave a chat that will not open.

I renamed or moved a log file and Oda does not see it. Why?

Oda reads a log only under its exact generation name and inside its chat's folder, in the shape and form it saved. A renamed copy, such as session.v1.backup.jsonl, is not treated as a log, and a file moved out of place is refused. If the same chat appears in two places, Oda refuses to choose between them. Restore the original name and place from your backup, or keep the file for support.

How does Oda reopen a long chat without reading its whole log?

Oda keeps small current values built from the log and saves checkpoints of them, so opening a chat, or showing it in the chat list, does not work through every event again. Details served from a checkpoint are marked as cached. A checkpoint that no longer fits the log is not served as current; Oda builds the values again from the start. A cached value can trail the log, but it is never wrong.

I moved my chat files. Why did the chat's details rebuild?

The cache binds a chat's details to its identity: its id, when it was created, the folder it works in, and whether it continues another chat. When a chat no longer matches its cached record, for example after its working folder changed, Oda rebuilds the details from the chat's log. Nothing in the chat itself is lost.

Does everything in my chat's log reach the model?

No. The model's history is built from your messages, Oda's answers, and its tool calls and results. Records kept for the file only never enter it, such as approval decisions, your feedback, permission and plan choices, the changed-files list, file-restore notes, scheduled-run markers and hook records.