Projects
Cola's coding workspace — read code, edit files, run commands and tests, with every change visible in the files, changes, and diff panes.
Projects is Cola's workspace for programming tasks. It reads the repository you open, analyzes problems, edits files, runs commands and tests, and keeps digging based on what actually happened.
Unlike ordinary conversation, Projects gives each task a workspace: a working directory, a set of panes (files, editor, terminal, changes, diff, preview), and its own conversation thread. Cola is the default engine, with Codex and Claude available when their local CLIs are installed and ready.
Start a coding task
- Click Projects in the app bar.
- In the launcher, click Open folder and pick your project directory, or click New session.
- Say what you need in plain language.
Find out why this project fails to start.Add a mobile layout to this React page and run the related tests.Review the changes on the current branch; prioritize anything that could regress production.Projects roughly follows this arc: confirm the working directory and goal → read the relevant files, config, and project state → state what it intends to change → make the change → run whatever tests, type checks, lint, or build the risk warrants → report which files changed, what was verified, and what's left.
One complete workspace
Every session has a full workspace made up of the session list, the chat, and a customizable area. The chat is always there; the files, changes, editor, terminal, diff, and preview panes live in the customizable area, where you can drag, split, and resize them freely.
A session opens with that area collapsed and the focus on the chat. Opening a file or other workspace content expands it, and collapsing it puts the focus back on the chat. Expanded or collapsed is remembered per session, so the next time you come back it is the way you left it.
The session list can be resized as well as collapsed, and its width is remembered across the desktop app. Once collapsed, hovering near its edge reveals it as a temporary overlay for quick session switching; dismissing the overlay returns the focus to the pane you were working in, or the chat if there isn't one.
The layout belongs to the session: the pane arrangement and widths you set are remembered for that session, survive switching away and back, and survive restarting the app.
The chat behaves the same way: scroll position, the active tab, and the preview pane's width all stay as you left them when you switch sessions and come back. If you were already at the bottom, you come back to the bottom rather than being dropped somewhere in the middle.
Opening a file: read first, edit second
Click a file in Files or Changes and anything previewable opens in the preview pane — text, Markdown, HTML, CSV, PDF, and images all take that path, and only types that cannot be previewed open in the editor. Each row in Changes also has two buttons of its own: open in the editor, and view the diff.
- While a preview is open the reading pane widens temporarily; closing the preview or switching to the diff restores the previous split ratios.
- Clicking the file that is already open closes its preview.
- The preview pane also offers Refresh preview, Show in Finder, and Open in system app; handing a file to a system app still respects the session's workspace boundary.
A preview pane also remembers how far you had read — return to the same file and you land where you left off, even if the file was rewritten in the meantime. File previews in both Projects and chat keep reading positions only while the app is running; those positions are lost when you restart it.
Background commands
In a Projects session, if a command runs longer than expected, Cola converts it to a background session rather than stopping it. The command keeps running, and Cola notifies you with the result when it finishes. This means long-running builds, tests, and similar tasks are not lost to a timeout.
Sessions and workspaces
A session is the unit of work, and each one remembers its own working directory, pane layout, model selection, and conversation.
- Switch, rename, pin. Pinned sessions stay at the top in an order you drag.
- Fork. Branch off the current session, inheriting its context and visible chat history, then diverge.
- Delete. Irreversible, and it removes the chat history; you're warned if the editor has unsaved changes. There is no archive — deleting is deleting.
- While a session is running, you can't create or delete sessions; stop the run first.
- An untouched blank draft behaves as if it doesn't exist until you start work, so empty sessions don't pile up.
The command palette (⌘K on macOS, Ctrl+K on Windows) supports global search across commands, conversations, skills, and deliverables; in Projects it also searches sessions, engines, panes, and font sizes. Use Select engine there to switch between Cola, Codex, and Claude; the top bar does not show an engine selector. Panes can be moved, zoomed, closed, and reset to the default layout. The font size setting applies to Projects only. The command palette is available on every page in Cola — see Voice Input and Shortcuts for full details.
Model selection
When a session uses Cola, it picks its own Cola model. A new session takes a copy of your current default as its starting point, and the choice belongs to that session from then on: changing the default in the main conversation leaves it alone, and changing it here leaves the default and every other session alone. A session started from another session's working directory, or from a folder you opened, is still a new session — it takes the current default, not the other session's choice. Fork is the exception: a forked session inherits the source session's model along with its context.
The model picker stays available while a session is running — you don't have to stop the run first.
Codex and Claude use the model and authentication from their local CLI configuration.
A few limits:
- If a session's stored model is no longer available, the composer asks you to pick an available one before continuing — only for that session, while other sessions and the default keep working.
- If there is no usable default when you create a session, it starts with nothing selected, and you pick a model before you can send.
Memory is shared
A session running the Cola engine shares one memory with Cola chat: the name you go by, your language preferences, and the long-term rules you set in chat all apply here without repeating them. Anything worth keeping long term from a project goes back into the same memory and applies in chat afterwards.
This does not turn a project session into a chat. It keeps its own way of working and starts with just the memory index and your profile, reading the rest only when it is relevant to the task. Sessions on the Codex or Claude engine don't use this path — they run on their local CLI's own configuration.
To control what is remembered or forgotten, see Memory and Preferences.
Related
- Cola Skill — how skills participate in code review, testing, and frontend work
- Tasks and permissions — directory authorization and confirmation of risky actions
- Troubleshooting — log locations and what to include in a report
Platforms: macOS and Windows desktop. Status: stable.
Cola
The main conversation space — everyday tasks, questions, and collaboration all happen here.
Imprints
Imprints is the trace your conversations leave on Cola — the content it picks for you each day, the reflections it writes at night, the understanding that accumulates in the Awareness Tree, and the moments it thinks of you on its own.