Sessions & context
Every conversation with Slo is a session. The TUI saves each one as it goes, so you can close the terminal, come back tomorrow and pick up where you left off.
Resume where you left off
When you quit, Slo prints the command to get back:
Resume this session: slo --resume 6d01a684-b83c-4434-b7b7-2a8192ddff63
Session ids are long, so give the ones you care about a name:
/rename refunds
Then resume it by name:
slo --resume refunds
Names are unique and ignore case. A resumed session shows the most recent 30 messages. Scroll up to load older ones.
Session commands
| Command | What it does |
|---|---|
/rename <name> | Name the current session. |
/new [name] | Start a fresh session with the same folder, model and settings. |
/clear | Clear the screen. The conversation and its history are untouched. |
/tree | Browse the session as a tree of turns and tool calls. /tree markdown prints it, /tree html exports a file. |
/context-window | See how much of the model's context this session is using. |
/compact | Summarise older history now to free up context. |
/clear and /new are easy to mix up. /clear is cosmetic. /new is a clean slate.
Where sessions live
~/.slo/sessions/history/<session-id>/
├── session.json id, name, model, folder, timestamps
├── events.jsonl every message and tool call, append-only
└── transcript.md a readable copy
Set SLO_HOME to move everything under ~/.slo somewhere else.
Headless runs (slo run) don't save history unless you ask. Add --enable-history, or --resume a session (which turns it on).
What Slo reads at the start of a session
Before your first message, Slo loads your instructions from these files:
- Global: the first of
SLO.md,AGENTS.md,CLAUDE.mdordocs/RESEARCH.mdit finds in~/.slo/. Use this for preferences that apply everywhere. - Project:
SLO.md,AGENTS.md,CLAUDE.mdanddocs/RESEARCH.mdfrom the folder you launched in, then each parent folder up to the root. If the same file name appears at two levels, the one closest to you wins.
That means a monorepo can have team-wide rules at the root and package-specific rules deeper down, and both apply.
It also reads the list of skills, and tells the model where your knowledge base is if SLO_KB_DIR is set. See Give Slo a memory for how to use all of this well.
Working across several repositories
If a task spans more than one repository, give Slo a VS Code workspace file:
slo --workspace ~/code/platform.code-workspace
Slo reads the instruction files from every folder listed in the workspace, and tells the model which folders are part of it. Tools still run in the folder you launched from, so start Slo in the repository you expect to change most.
Keeping long sessions sharp
Every model has a context window. As a session grows, Slo summarises older history automatically once it reaches about 70% of the window, keeping roughly the most recent 20,000 tokens word for word. The footer shows how full it is.
You can also compact by hand with /compact when you're about to switch topics. It won't run while a prompt is in progress, and if anything goes wrong your history is left as it was.
Recent compaction updates improve reliability with ChatGPT subscription sign-in and when switching providers through a model pool. Manual compaction now shows "Compacting session history…" while it works, so you're not left guessing.
Slo also suggests /compact when the estimated history reaches 256,000 tokens, before very large histories become slow. This is a reminder, not an automatic compaction trigger. Automatic compaction still starts at about 70% of the model's context window.
Images and PDFs
Slo can read images (JPEG, PNG, GIF, WEBP) and PDFs from your project. Point at a screenshot of a bug or a design mock and ask about it. Large images are resized to 1568 pixels on the longest side. The session history keeps a short reference to the file, not the image itself, so screenshots don't bloat your context.