Seshat AIDocumentation

Documentation / Concepts

Storage and data

Where Seshat keeps your sessions, files, credentials and indexes on disk, what the database holds, and what is deleted when you delete a session.

Everything Seshat remembers is on your machine, under one folder: the runtime folder. This page says what is in it, what the database holds, where the files made by the agent go, and what happens when you delete a session. Nothing here is sent anywhere by Seshat itself: only the requests to the model provider you chose leave your machine.

The runtime folder

Runtime folder~/.config/seshat-cli/or SESHAT_RUNTIME_ROOTseshat.jsonthe configuration fileseshat.db and secret.keySQLite, and the key for credentialsdata/sessions, hnsw, rag.sqlite3,permissions/{session}.jsonmemory/, skills/, plans/notes, your skills, saved planslogs/, cache/, tmp/, models/app.log, caches, bash outputworkspaces/{session}/uploads/ what you attachedartifacts/ screenshots, images, audio, webpastes/ text, images, otherplans/ plan modetools/ downloads, outputsession.logOne folder per session. Deleting the sessionremoves it, with its permissions file.
Everything Seshat remembers is under one folder. The session folder holds what the agent produces for that session.
ProgramRuntime folder
The seshat binary~/.config/seshat-cli/ (or $XDG_CONFIG_HOME/seshat-cli/, and %APPDATA%\seshat-cli\ on Windows)
A Go program that uses the SDK~/.config/seshat/
Either one, if SESHAT_RUNTIME_ROOT is setThe folder it names

The folder holds:

PathContent
seshat.jsonThe configuration file of the terminal interface. See Configuration file
seshat.dbThe SQLite database. See below
secret.keyThe key that encrypts the stored credentials. Keep it private: it is created next to the database
data/sessions/The saved sessions
data/hnsw/, data/rag.sqlite3The vector indexes of the knowledge base. See Retrieval and knowledge
data/permissions/{session}.jsonWhat you allowed during a session, for example “always allow this tool”. It is kept outside the session folder on purpose: the agent can write inside that folder, and a grant it could edit would be a grant it could give itself
workspaces/{session}/The folder of one session: see next section
memory/Long-term notes. SESHAT_MEMORY_PATH moves it
skills/Your skills. See Skills and MCP
plans/Saved plans
cache/, tmp/Caches, and the output of background commands (tmp/bash-tasks)
logs/The logs
models/Small local models, for example for session titles

Other variables move parts of it: see Environment variables.

The database

Sessionssession_metadatasession_transcript_entriessession_checkpointsThe work of a sessionsession_filessession_taskssession_goalsLong-term memorymemory_entitiesmemory_relationsRetrievalvector_recordsvector_chunksSchedulingautomation_jobsautomation_runsSecrets and migrationscredentials (encrypted)schema_migrations
seshat.db holds what has to be queried or kept together. The credentials table is encrypted with secret.key.

seshat.db is a SQLite file. It holds what has to be queried or kept together:

TablesContent
session_metadata, session_transcript_entries, session_checkpointsThe sessions: their titles, every message, and checkpoints
session_files, session_tasks, session_goalsThe files, tasks and goals of a session
memory_entities, memory_relationsThe long-term memory, a small knowledge graph
vector_records, vector_chunksVectors for retrieval, when the SQLite store is used
automation_jobs, automation_runsScheduled jobs and their runs
credentialsThe provider keys you entered in the interface, encrypted with secret.key (AES-256-GCM). They are never written in seshat.json
schema_migrationsWhich migrations were applied

By default secret.key is created the first time it is needed. To keep the same key on several machines, or to not depend on the machine at all, set SESHAT_MASTER_KEY.

What a session leaves on disk

All the files that belong to a session are in workspaces/{session}/:

workspaces/{session}/
├── uploads/          files you attached
├── artifacts/
│   ├── screenshots/  browser screenshots
│   ├── images/       generated images
│   ├── audio/        speech made or transcribed
│   └── web/          pages fetched from the web
├── pastes/           pasted text, images and other files
├── plans/            plans written in plan mode
├── tools/            browser downloads and tool output
└── session.log

This is also the folder a host such as SeshatOS uses as the working area of the session. Older versions kept this under sessions/{id}/: The seshat binary moves it for you when it starts.

Files that the agent produces go through an artifact store. By default it is a local folder, and it can be an S3 bucket: SESHAT_STORAGE_PROVIDER=s3 and the SESHAT_S3_* variables, or the StorageConfig field in Go. See ClientConfig reference and Environment variables.

Cleaning up

  • Deleting a session (client.DeleteSession(id), or from the interface) removes its record in the database, its folder workspaces/{session}/, its permissions file, and its artifacts in the store, including in S3. The cleanup of the files and the artifacts is best effort: a failure there does not make the deletion fail.
  • Expired artifacts are cleaned up in the background when StorageGCEnabled is on, which is the default. StorageGCInterval (one hour by default) sets how often, and StorageGCLimit (512 by default) how many items one pass handles.
  • Knowledge-base documents you uploaded on purpose are not part of a session. They stay until you remove them.

Updated on 2026-10-14