docs/internal/TERMINOLOGY.md
Status: active convention. This is the source of truth for what we call things in user-facing docs, UI strings, and (where non-breaking) code. The word "session" is being retired because it meant nine different things; see the history at the bottom.
| Word | Layer | Means |
|---|---|---|
| daemon | user-facing | The background process that outlives a client connection — you attach / detach / reattach to it (tmux-like). One daemon hosts many workspaces. |
| workspace | user-facing | One project/root the editor manages: its files, layout, terminals, buffers, trust level, and saved state all belong to it. The thing the Orchestrator lists and switches between. |
| backend | user-facing | Where a workspace runs: local, SSH host, dev container, or k8s environment. |
Authority | internal only | The code implementation of a backend (routes filesystem, process spawning, terminal, trust, env). Not exposed to users. |
One sentence: A daemon hosts workspaces; each workspace runs on a backend.
docs/features/*.md, docs/getting-started/, etc.):
"session" → daemon (persistence) or workspace (the editor unit),
per meaning. The persistent-process feature is "daemon mode."daemon alias for the session subcommand; keep session working.locales/en.json) values.There is a tenth use of "session" that is not the daemon and not a
workspace: the config layer. Settings merge across layers
System → User → Project → Session, where the Session layer is
temporary per-run overrides stored in .fresh/session.json (surfaced in
the Settings UI as the [ Session ] layer button and a (session)
indicator). A good future name is the Runtime (or Temporary) layer.
The rename is deferred because it is coupled to the Settings UI label
and the on-disk .fresh/session.json filename (breaking). Docs keep the
"Session" layer name for now but add a note distinguishing it from the
daemon/workspace.
createWindow, listWindows, setWindowState,
attachRemoteAgent, window_created/window_closed/active_window_changed
events, setSessionState/getSessionState. (Public contract.)SESSION_MODE key string).workspaces/,
session-workspaces/, workspace-JSON field names). Renaming orphans
users' saved state without a migration.claude --session-id / --resume etc. are not
ours; docs keep "session" when describing agent resume.Window/WindowId type names stay for now (they are the
code name for a workspace; renaming is a large breaking churn deferred
to a later pass)."session" previously meant all of: the daemon; the editor unit (Window);
a terminal/PTY; hot-exit/recovery state; a backend/authority; agent resume
(--session-id); the saved-state file; the session_mode daemon flag; and
plugin per-unit state. "workspace" separately meant: the saved-state file;
WorkspaceTrust; the k8s pod env; devcontainer workspaceFolder; the SSH
remote root. This document fixes one word per concept.