Skip to content

Projects and sessions

A project is a local directory used as the context for OpenCode operations. A session is a conversation and task history within that context.

The app uses one OpenCode runtime for all projects. Each project request carries its directory context, so opening another project does not start another server.

You can switch projects while sessions continue running. The app monitors known projects for completion, errors, permission requests, and questions.

Use File → New Window (Command-Shift-N on macOS) for another full app window, or choose File → Open Project in New Window… to select its project immediately. Each window keeps its own active project, session, panels, editor buffers, Browser tabs, and current agent/model selection.

All windows share the same OpenCode runtime, durable sessions, provider configuration, task monitor, Compact Chat, and Supe. Opening a Compact Chat or Voice task focuses a window already showing that project and session when one is available. Closing an additional window does not stop its OpenCode task; the app warns before discarding unsaved editor changes.

Depending on the current session state, you can:

  • rename or archive a session;
  • fork it to explore a different direction;
  • move it to another project context;
  • compact a long session;
  • share, revert, or edit supported messages.

OpenCode owns the durable session and message record. Superapp navigation and unsent drafts are app-owned convenience state.

Parallel sessions share the app-wide runtime but remain independently scoped. When tasks touch the same files, use separate worktrees or coordinate the changes to avoid conflicts.