
# Process Window

Devkeepr is home base for your projects. The Process Window is home base for what runs in them: dev servers, test watchers, agents mid-conversation, builds, CI runs. Everything attached to its project, everything discoverable from the same sidebar tomorrow morning.

That agent session with all the right context? Not buried in a list of 200 conversations on disk. It's pinned to the project you were working on, exit code and all. The dev server? Not behind a stack of terminal tabs you can't tell apart. The CI run? Not a browser bookmark you'll forget you opened. Same sidebar, same row layout, same status dots, all of it.

![Process Window showing projects with agents, scripts, and CI runs grouped in the sidebar](/screenshots/docs/getting-started.png)

## Organized Per Project

Instead of one flat list, processes and CI runs are grouped under the project they belong to. Each project's section is broken down further into **Terminals**, **Agents**, **Scripts**, and **GitHub** / **GitLab** runs. Switching projects is just scrolling the sidebar. No context-switching tax.

A project only appears in the sidebar when there's something relevant to show: a running or recently-finished process, a tracked workflow run, recent activity, or a pin. Quiet projects stay out of view, so the noise stays down.

When the list does fill up, search filters it down in place. Type to match by project, process, agent, or CI provider. **Open Project** on any row jumps straight to that project in the rest of the app.

## Start Anything From Anywhere

Trigger a stack action from wherever Devkeepr lives: the command palette, the menu bar, the `dk` [CLI](/docs/general/features/cli-tool), or any in-app context menu. It shows up under its project with a live status dot. Click the row to stream output in the detail pane on the right.

![Spawning a new agent from the per-row context menu](/screenshots/docs/spawn-shortcuts.webp)

## Built-In Terminals

Open a real shell on any project, colors and all, not a read-only log pane. It follows your system theme, switching between light and dark as you do, and reflows when you resize the window.

A terminal keeps up with whatever you run inside it. Start an agent in a blank shell and the row moves up to the **Agents** section. Exit back to the shell and it drops back to **Terminals**. If you ran an agent there, the row keeps a **Resume last** action to pick that session back up in one click.

## Pick Up Where You Left Off

Run `npm run dev` while you work and it stays on the row, ready to relaunch the next morning. Same for your build tool, your test watcher, that one-off script you can never remember the name of. Your whole working set is one button press per row away.

Agents come back too. Hit play on an agent row and it resumes the conversation right where you left it, context intact. Aider is the lone exception: it has no resume, so play there starts fresh from the original command.

## Run, Stop, And Dismiss

Every row has play and stop. Rerun a finished script or stop a running one without hunting for the original command. Stopping an agent gives it a moment to bow out cleanly and leave its resume hint behind, so you can pick the session back up later.

Status dots tell the outcomes apart at a glance: a clean exit, a run you cancelled, and an outright failure each read differently.

Finished rows stick around so you can come back and re-read the output. Clear one with **Dismiss**, or sweep a whole project: **Dismiss Stopped** drops the finished rows, **Exit & Dismiss All** stops everything still running and clears the lot.

## Notifications

When a process wants your attention, an agent ringing its bell or posting a notification, or a run finishing, Devkeepr surfaces it. If the app is in the background you get a desktop notification. If its window is focused you get an in-app toast instead. Click either one to jump straight to that process.

The process you're already looking at stays quiet. No notification for what's already on your screen.

Tune the volume per process from its context menu under **Notifications**:

- **All**: every bell, prompt, and exit
- **Important**: prompts that need you and finished runs, nothing chatty
- **None**: stay silent

The default for new processes is **Important**, and you can change that default in **Settings**.

## Fix A Failure In Place

When a process or CI run fails, its context menu picks up two ways to hand the problem straight to an agent. Either way, the agent arrives already briefed on the failure: what ran, how it exited, the tail of the output, and your latest commit and file changes. For a CI failure it can pull the full run logs too.

- **Fix with** opens a fresh agent aimed right at the problem, no blank prompt to fill in.
- **Fix in session** hands it to an agent you already have running in that project, so it keeps going with the context it already had plus the failure. You land on that agent, watching it work.

Which does which? **Fix with** starts a new agent, so it only covers ones that take an opening prompt. **Fix in session** drops into a running agent, so any of them will take it, Aider included.

## What Each Agent Supports

Devkeepr works with seven agents. What each one can do comes down to the agent itself.

| Agent | Resume session | Fix with | Fix in session |
|-------|:-:|:-:|:-:|
| Amp | ✓ | — | ✓ |
| Claude Code | ✓ | ✓ | ✓ |
| Codex | ✓ | ✓ | ✓ |
| Cursor Agent | ✓ | ✓ | ✓ |
| Gemini | ✓ | ✓ | ✓ |
| opencode | ✓ | — | ✓ |
| Aider | — | — | ✓ |

**Resume** picks a past session back up. **Fix with** needs an agent that can launch straight into a prompt, which leaves Amp and opencode out. **Fix in session** just needs the agent running, so every one of them qualifies.

<h2 id="ci-runs">CI Runs <span style="display:inline-flex;align-items:center;vertical-align:middle;padding:2px 10px;font-size:12px;font-weight:700;border-radius:9999px;background:linear-gradient(135deg,#6366f1,#8b5cf6);color:white;letter-spacing:0.05em;position:relative;top:-1px;margin-left:4px;">PRO</span></h2>

GitHub Actions and GitLab pipeline runs land under their project too, alongside local scripts. Trigger one from the project's quick action menu, then watch it here. The detail pane shows the full job and step breakdown: branch, trigger, commit message, run number, total duration, and a direct link to the provider on failure.

![CI workflow detail showing jobs and step breakdown with per-step durations](/screenshots/docs/ci-workflow.png)

From the row's context menu you can:

- **Cancel** a running workflow
- **Re-run all jobs** after a failure
- **Re-run failed jobs** only
- **Open on GitHub / GitLab** to open the run directly on the provider

A finished run raises the same clickable notification a local process does, and a failed run gets the same **Fix with** treatment. Stop tabbing to your browser to check if `main` is green. The Process Window already knows.

## Optional Process Tray

Want process visibility *outside* the Process Window, while you're on the Overview or in a project detail? Enable the **Process Tray** in the app's Settings. It's a small panel pinned to the bottom-right of every main window view, showing what's running across all your projects in one combined list. It can also pop open automatically when something new starts.

The tray is intentionally compact. Click an item to jump into the Process Window for full output, and the tray closes behind you. Think of it as a peripheral indicator. The Process Window is still where you actually work with running things.

![Process tray panel pinned to the bottom-right of the app window](/screenshots/docs/process-tray.webp)

## Forge Deployments

Forge deployments stay on the project detail panel rather than the Process Window. See [Deployment Watcher](/docs/general/features/deployment-watcher) for tracking deployments.
