DataMind Oda saves every chat as a session log file on your computer as you work. This page shows where those files live, how Oda keeps them from being half-written or overwritten, and what the cached details in the chat list mean. Copying the files or reading a log yourself is covered in Chat logs on disk.
Oda keeps every chat under one folder on the computer; this page calls it the log folder.
--._no-cwd.<log folder>/
--<working folder>--/
<chat folder>/
session.jsonl.zstd
session.v4.jsonl.zstdsession. jsonl. Later formats add their version to the name, as in session. v4. jsonl.. zstd. With compression off, a log is plain text: one JSON object per line.session. v1. backup. jsonl, is not treated as a log.Each chat's log has one writer at a time, so two copies of Oda cannot write into the same chat at once.
session. lock in the chat's folder. If a chat stays locked because the copy of Oda holding it cannot continue, removing that file frees the chat for the next writer; do this only when you are sure that copy will not write the chat again.The chat list can serve a chat's details without reading its whole log. When it serves them from a saved checkpoint, it labels the block cached.
Oda refuses to work from a log it cannot read rather than guess, and it leaves the file as it is. The message names the reason and, for many of these cases, the file itself as a raw log: <path> note. For the messages you may meet and what to do about each, see Session log problems.
All chats live under one folder, the log folder, which is set when Oda is set up on the computer; it has no default. Inside it, chats are grouped by the folder they work in, and every chat has a folder of its own. If you do not know which folder was chosen for this computer, ask your DataMind OS administrator.
A chat reaches the disk only when it first has content. Until then it lives only in Oda, and a chat you never used leaves no files at all, even if Oda stops suddenly. Working in the chat creates its folder and its first log file.
session. is the oldest log format; later formats add their version, as in session.. With the default compression, the name ends in .; with compression off, the file is plain text, one JSON object per line. A folder keeps one form, so it holds either compressed logs or plain ones.
When Oda updates a log written by an older format, the new file is added beside the old one, so a chat can have several generations side by side. The newest file is the chat's current state, and the older files stay exactly as they were: Oda never renames, replaces or deletes them.
Oda allows one writer per chat at a time, so while the copy that holds a chat is saving to it, a second writer is refused with session "<id>" is already owned by an active write handle. Reading the chat is never blocked, so you can view it in two places; the lock ends with its program, so closing the copy that holds the chat frees it for writing.
The chat list can serve a chat's saved details from a checkpoint instead of reading its whole log; when it does, the block is labelled cached. Cached values can be as old as the last checkpoint, but they are never wrong: a value that does not fit the log is discarded and rebuilt from the log. A chat's log always leads its cached values, so after a crash the cache can be behind, never ahead.
You can copy the log folder to keep a backup; Chat logs on disk covers that. Keep the folder shape and the saved form when files come back, because Oda refuses a log that sits in the wrong place or the wrong form. If the same chat appears in two places under the log folder, Oda refuses to choose between the copies.
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.