Kepler Documentation

The Kepler Interface

Last updated: October 2026

Kepler opens on your work, not on an empty editor or a blank prompt. It has one interface instead of a set of views to switch between, and you shape it to fit how you work. See Arranging Your Work.

Kepler pulls every issue and pull request assigned to you across your connected trackers and Git hosts into one list, alongside the tasks you already have in motion. To start work, pick something that’s already there instead of describing it from scratch.

Beyond this list, you’ll find a task’s own page, Settings, and remote connections. The top bar displays the following at all times, leading edge first:

  • The window switcher
  • Back and Forward, in the desktop app only
  • New task
  • Your setup progress
  • The remote indicator
  • Feedback
  • Settings
  • Your account

While an update downloads, a chip in the trailing cluster shows its progress as a ring and a percentage. Hover it for Downloading update (then Verifying update), the version, how much has arrived and about how long is left, and Keep working. Kepler will let you know when the update is ready to install.

When an update is ready, an Update available chip takes its place. It opens a popover that says what a restart would do to running work (how many agents it stops, whether terminals close) and offers Restart to update. When agents and terminals can survive the restart, the popover says Running agents and open terminals keep going through the restart. The same chip shows on every screen, so an update never waits on a banner you scrolled past.

On Windows and Linux the native title bar is gone and Kepler draws its own. The menu button at the leading edge holds the full application menu (File, Edit, View, Window, Help), including Settings, Check for Updates…, and About. macOS keeps its native menu bar, and both menus open the same About Kepler dialog.


The New task split button at the left end of the Kepler top bar, after the application menu, the window switcher and the Back and Forward buttons.
The top bar’s leading edge.

The right end of the Kepler top bar: the Local environment chip with the green Remote Access glyph, then Feedback, Settings, and the account avatar.
The top bar’s trailing cluster.

The right end of the Kepler top bar with a green Update available chip before the Local environment chip, Feedback, Settings, and the account avatar.
The trailing cluster when an update is ready.

The top bar sheds controls as the window narrows based on the room actually available, rather than at fixed widths, so a control disappears only when it will not fit.

Menu items and button tooltips show a command’s keyboard shortcut beside it, wherever the item does exactly what the key does. The full list is in Settings.

The window switcher

Windows in the top bar lists every open Kepler window and what its agents are doing, so you don’t have to go and look. Its trigger carries the reason to: Windows · {count} waiting elsewhere, or {count} running elsewhere. This window marks the one you’re in, and New window (Cmd/Ctrl+Shift+N) opens another on the same connection as the window you’re in. From a remote window, New local window opens one on this computer instead. The same list is on the tray icon.


The window switcher open under its top bar button, listing This window with a check mark, a second window named Local, and New window with its Ctrl+Shift+N shortcut.
The window switcher, open.

Each window’s own title leads with the remote it’s connected to and how many of its sessions are waiting on you. Each window keeps its own layout, and if you close the last window while Kepler keeps running, the next one opens where that window was.

New task

New task (Cmd/Ctrl+N) is a split button. The left half opens the Task Composer; the chevron holds New task from an external session, which starts a task from a conversation you began outside Kepler. See Create a Task.


Todo, Tasks in progress, and the Agent Graph

The control at the top left switches between 3 views of your work.


The control at the top left of Kepler, switching between Todo, Tasks in progress, and Agent Graph
The Todo, Tasks in progress, and Agent Graph switcher.
Segment What it shows
Todo Issues and pull requests across every connected provider that you authored, are assigned, or were mentioned in, and not yet picked up
Tasks in progress The tasks you already have running in Kepler
Agent Graph A live visualization of every task, session, turn, tool call, and file. See The Agent Graph

The Related to me chip in Todo’s header states that rule; hover it to read it. To browse issues beyond it, use New task → Issues → All visible.

Todo is where a working session starts; Tasks in progress is where it lives while underway. The Agent Graph is a segment of its own rather than a way of arranging the list, because it replaces the list instead of laying it out. It scopes over every task, narrowed by your search and filters, and the Group and View controls step aside while it’s on.

When launching the app, Kepler opens on Tasks in progress. When you start Kepler for the first time (like on a new machine), you get a Welcome to Kepler screen, with a summary of what’s already set up and 3 options:

  • Start from scratch
  • Start from issues
  • Start from pull requests

To populate the Todo tab, first connect at least one provider. See Issue Tracker Integrations and Pull Request Integrations.

External sessions

Above the list sits an External sessions section: the agent conversations running outside Kepler right now. It’s pinned rather than mixed into the groups, because it answers a different question from the rest of the list: what’s running that Kepler didn’t start?

Part What it does
The header {count} live and {count} waiting
Show past sessions Extends the section to conversations found on disk, not just ones running now
A row Opens the conversation read-only, where you can fork it, continue it here, or adopt it into a task

With detection off, the section says so rather than sitting empty: External sessions are not detected, with Turn on in Integrations, which opens the detection setting. With detection on and nothing to show, it reads No sessions running outside Kepler right now.

External sessions stay listed under a filter that has no way to answer for them, rather than vanishing because a facet couldn’t classify them.

For what those sessions are and what you can do with one, see Agent Sessions.


Reading a row

A row reads differently depending on whether it holds a tracked issue or pull request, or a task you already started. The next 2 sections cover each case.

Todo rows: issues and pull requests


The PR 2 group with pull requests #51 and #49, each marked Changes requested with the Address Feedback action, and the ISSUE 3 group with #42 (Mentioned badge), #38 and #45, each with the Plan action. Every row shows its reference, title, repository, Open status, assignee where there is one, and age.
Todo rows for pull requests and issues.

The Issue group of the Todo list: GitHub issue #42, Gift card codes are case-sensitive at checkout, with the muted Mentioned badge, then #38, Cart total ignores discounts when tax is applied, assigned to you, and #45, Add a wishlist to product pages. Each row shows its repository, Open status, age and the Plan action.
An issue listed because it mentions you, with the Mentioned badge.

Each row shows, left to right:

  • The provider
  • A type badge (Issue or PR) with the reference (issue key or PR number)
  • The title
  • Your role on a pull request
  • The repository
  • Any session activity
  • A status pill
  • The assignee
  • When it last changed
  • An Action button

An issue that’s on your list only because it mentions you carries a muted Mentioned badge, so you can tell it apart from work assigned to you.

Your role on a pull request is one of:

Role Meaning
Yours You authored the pull request
Review You’re a reviewer on it
Unattributed The provider did not say

Task rows


Two task rows grouped under Exploration. Each shows its title, repositories, the Exploration progress control, a session activity ring, the time since it last changed, and the ⋮ menu.
Task rows.

Task rows show:

  • The title
  • The repository, or every repository when the task spans several (app, api +2 beyond two)
  • Session activity
  • A progress control
  • The assignee
  • Time

Task rows carry no type badge. Everything in Tasks in progress is a task, so a chip saying so earned nothing and cost the width the timestamp needed; a narrowing row drops other cells before it drops the time.

A task that spans several repositories is listed under each of them when the list is grouped by repository, rather than under only the first one.

The task’s own operations sit behind the ⋮ menu, and on a right-click:

  • Open task page and Open in new window
  • Reopen, while the task is Done, and a Progress submenu. See Arranging Your Work.
  • Mark as unread
  • Rename task (F2 on a focused panel)
  • Copy task prompt
  • Add resource
  • Archive task, or Restore task when the task is already archived
  • Delete task

Task rows deliberately have no reference column and no Action button. A task’s reference is the head of its identifier and names nothing you’d recognize, so the title takes that cell instead. Firing an Action from a Todo row is how an untracked issue or pull request becomes a task in the first place; you manage a task that already exists from its ⋮ menu.

Status

Both segments carry a status, but they answer different questions.

Where Values What it means
Task rows Exploration, In Development, In Review, On hold, Done, Archived Where the work has got to. Kepler derives it from the task’s checkouts and pull requests unless you or an agent set it by hand. In Development reads uncommitted changes or commits ahead of the branch’s recorded base; In Review needs an open or draft pull request of the task’s own; Done needs at least one of the task’s branches to have landed, with no open pull request and no commits left unlanded. On hold and Archived are filing decisions, not evidence
Todo rows Open, Draft, Merged, Closed for a pull request; the tracker’s own state for an issue The provider’s own state on the pull request, and the workflow state your tracker uses for the issue (such as a Linear In Progress or a Jira To Verify) rather than a flat Open

Each pull request and issue state has its own icon and colour, so a column of pills reads at a glance.

Done waits for the work to land, however it got there: a pull request merged normally, by rebase, or by squash; a branch that diverged locally after its pull request merged; or a branch merged into its base with no pull request at all. A task that’s done but still has uncommitted changes or unpushed commits in a checkout reads Done · local changes, so you can decide whether to keep them before you archive.

The progress control on a task row is also a menu: click it to set the stage yourself, or put the task on hold. A stage you set holds until the evidence catches up or moves on. See Arranging Your Work.

Beside the pill sits one dot per distinct session state, with a count of each.


A task row's In Development pill beside two outlined session dots, an orange 2 and a blue 1, with a tooltip reading 2 Waiting (ended) and 1 Ready (ended).
The status pill and session-state dots, with the breakdown on hover.

This shows what the agents are doing, a separate question from where the work stands. The vocabulary is the agent’s own:

  • Spawning
  • Ready
  • Running
  • Idle
  • Unread
  • Waiting
  • Error
  • Working in background
  • Reconnecting
  • Ended

A dormant session draws as an outline rather than a filled dot. Hover the dots for a count of each state; a dormant session is marked (ended), as in 2 Waiting (ended).

Kepler places a task at the furthest stage any of its checkouts reached, except Done. Done needs at least one of the task’s branches to have landed, no open pull request of its own, and no checkout still carrying commits that haven’t landed. A sibling checkout you never touched doesn’t hold a task back.


Starting work from a row

Click the Action button on a Todo row to hand the item to an agent with its context already attached: the repository, the issue body, the branch, and the diff. One click, no copy-paste.


The Action dropdown open on a Todo row, listing Plan, Implement, Review, and Address Feedback
The Action dropdown, opened from the chevron next to the button.

The left half of the button runs your preferred Action for that kind of item; the chevron opens the full list. The defaults are:

  • Plan for issues
  • Address Feedback for pull requests you authored
  • Review for everyone else’s

All of these defaults are editable. See Actions.

Open a panel


The Todo list, with two pull requests above three issues, with GitHub issue #42 selected and its side panel open on the right: the issue header with Plan, the GITHUB, ISSUE #42 and Mentioned chips, Open in acme-web by sam-ortiz, the Summary with its labels and description, and a composer at the bottom, with #42 attached, for starting a task from it.
The side panel, opened from a row.
  • Click a row to select it and open the side panel. A plain click replaces whatever was open, except for panels you’ve pinned.
  • Shift-click a second row to open both side by side. The panel holds one column per open item, each with its own chat, so you can work several tasks at once without leaving the list.
  • Cmd-click (Ctrl-click on Windows and Linux) to add one row to the open set, or to close it again.
  • Double-click a row to open the item’s full task page. From a Todo row that’s the page of the task behind it. A row with no task yet has no page, so a double-click opens its panel with the cursor in the prompt box instead.

A new task appears in the list as soon as you press Start in the Task Composer, before its worktrees are ready. Its row shows a Preparing pill while Kepler sets it up, or a Failed pill if setup fails. You can’t drag or select a task that’s still being prepared. Its panel shows Getting your task ready, with Cloning {repo}… or Setting up worktrees…, and Cancel while a repository clones. If setup fails, the panel shows Couldn’t start this task (or Task not started after you cancel) with Edit and retry, so you can change the task and start it again, and Dismiss. When a task starts without some of its repositories, Kepler warns Some repositories weren’t added and names them.


Tasks in progress with a new task, Add a gift-card field to checkout, in Recent with the Preparing pill and its spinner. Its side panel, also marked Preparing, reads Getting your task ready and Setting up worktrees….
A new task while Kepler prepares it, in the list and in its panel.

Shift-clicking ranges from your last plain click, the way it does in Finder or VS Code. You can open up to 16 panels at once. Opening another closes the leftmost unpinned one.

Every open panel gets its own column straight away. Until its item loads, the column shows a placeholder that says it’s loading, that the item is gone, or that it couldn’t load, with Try again when retrying can help. A pull request or issue opened while you’re signed out reads Sign in to see this pull request (or issue) with Sign in, and a session panel that needs external-session detection says it’s off. Every placeholder can be closed.


Two task panels open side by side beside the Tasks in progress list: Fix the cart total (In Development, pinned) and Upgrade the payment SDK (In Review), each with its own header, worktree pill, session tab and chat.
Several panels open side by side, each with its own chat.

Resize. Drag the divider between two columns to resize the one on its left. Hold Shift as you drag to give every panel the same width at once. Double-click the divider, or press Home on it, to split the space evenly again. The list keeps a minimum width of its own, so a wide panel cannot shrink it too far. Kepler remembers the widths per window, across reloads, restarts, and segment switches.

Scroll. Once the panel strip grows wider than the window, it scrolls instead of squeezing the columns below a readable width. Scroll it sideways with Shift and the mouse wheel, or a sideways trackpad swipe, even over a terminal.

Reorder. Drag a panel by its header to a new place in the strip. A panel’s Panel actions menu (⋮) offers Move panel left and Move panel right, and so do Cmd/Ctrl+Alt+← and Cmd/Ctrl+Alt+→.

Maximize. Once two or more panels are open, Maximize panel in the ⋮ menu (or Cmd/Ctrl+Shift+M, or a double-click on empty header space) spreads one panel across the strip, leaving a sliver of each neighbour. Click anywhere outside it, or use the Restore panel button in its header, to put the layout back exactly as it was. Switching to another panel from the keyboard moves the maximize with you, so you can read panels one after another at full size.

Move between panels. Ctrl+Tab opens a switcher of your recent panels, where Delete or Backspace closes the highlighted one. Cmd/Ctrl+1 through Cmd/Ctrl+8 jump to a panel by its position from the left, and Cmd/Ctrl+9 to the last.

Starting a task from New task while you’re on the list opens the new task as a panel and leaves the list where it was, rather than throwing you onto its page.

When the list reorders under you (a session finishes, or a task moves bucket), the row you have selected glides to its new position rather than jumping, so you can see where it went.

Pin a panel


A task panel's Task actions menu open from its header, with Pin panel highlighted.
Pin panel, in a panel’s ⋮ menu.

A panel is a place you’re browsing until you pin it. Pin panel, in the panel’s ⋮ menu, holds it in place. After that:

  • A plain click on a row opens beside your pins instead of replacing them.
  • Following a link in Related swaps the panel out in place if it is not pinned, and opens the linked item beside it if it is.
  • Switching segments keeps the pinned panels and drops the rest.
  • Nothing evicts a pin when the open set is full.

One slot always stays unpinned so browsing never has to evict a pin; once every other panel is pinned, the menu row reads Keep one panel unpinned for browsing and will not take another. A pinned panel shows Unpin panel in its header to release it.


A pinned panel's header for Fix the cart total, with the Unpin panel button showing its tooltip between Terminal and the close button, above the task's worktree pill.
Unpin panel, in a pinned panel’s header.

The side panel

Selecting a row opens a panel beside the list with everything about that item, as a stack of collapsible, resizable sections.


The side panel for GitHub issue #38, Cart total ignores discounts when tax is applied, as a stack of sections: its header with the GITHUB and ISSUE #38 chips, Open, acme-web and author jo-park; Summary with the bug label and the description; Related (1) listing the task Fix the cart total, In Development; and that task's session, open in What's running with its conversation and composer.
The side panel, with its stack of collapsible sections.

Kepler does not draw a section that has nothing behind it.

Section What’s in it When it’s there
Summary The issue or pull request description, with its labels shown as badges. You can select and copy the description text An issue or pull request that has a description. Tasks carry none of their own
Related ({count}) Linked issues and pull requests, counted in the heading so a folded pane still says how many There’s at least one
What’s running Session tabs and draft session tabs. A session tab holds the live agent conversation; a draft tab holds a prompt box plus the same Actions. This is the chat Always, on an item you can start work on. Resizable, but not foldable: it’s what the panel is for
Plan The plan the conversation on screen has proposed The agent produced one
Changes The checkout’s commits, working changes, and file diffs You opened a worktree’s changes from its pill
Terminals Terminal tabs across the task’s checkouts. A shell tab shows its program’s status, such as Working, Needs you, Done or Failed, when the program reports one A terminal is open. Its ✕ takes the section away without stopping the shells; the header’s terminal control and Cmd/Ctrl+J are the way back

Kepler sizes Summary and Related to their contents and then the chat takes whatever height is left over.

To reorder the tabs in What’s running or Terminals, drag a tab to a new place.

If an agent fails after you start a session, What’s running shows {agent} couldn’t start with the agent’s message. Press Retry to launch it again, or Open agent settings to fix the problem.

For unstarted issues or PRs, the side panel’s primary button follows that item’s preferred Action (Plan, Implement vs Review, Address Feedback).

In the side panel for a Task, the primary button reads Start, and once a session exists the composer becomes that session’s chat, where it reads Send. If the preferred Action is None, no longer exists, or cannot aim at this kind of item, the button falls back to Start.

A task you created with a prompt but haven’t started reads Start with the task prompt, or describe something else…. Press Start on the empty box and the task’s prompt goes out as the first message; type something to send that instead.

The header carries:


A task's side panel header: the fold chevron, the task title Upgrade the payment SDK, Open task page, the ⋮ Task actions menu, the In Review progress control, the Terminal button and Close, above its worktree pill with the kepler/payment-sdk-v5 branch in acme-web, 1 uncommitted file and the main merge target.
The side panel’s header, on a task.
  • The item’s badges and reference
  • The title, with a dot when a session needs you: blue for an unread turn, orange for one waiting on you
  • The progress control, on a task
  • The terminal control, on a task
  • Restore panel, when the panel is maximized
  • Unpin panel, when the panel is pinned
  • Close
  • Panel actions (⋮): Close, Open task page, Open on {provider} for an issue or pull request, Pin panel, Maximize panel, Move panel left, and Move panel right. On a task, these rows join its Task actions menu. Maximize panel and the moves appear only once more than one panel is open

Each pull request, issue, or artifact linked to a task has a chip under the header; hover one for its card, or click it to read it in the panel. A pull request whose branch name was used before reads Opened from an earlier branch with the same name. The Resources chip lists the task’s notes, files, folders, and links, and a note opens in the panel with Copy note.


The artifact attached to the task as a link chip, Acme gift cards, under the task's worktree pill, with its hover card open showing the artifact's title, its link, Open and Copy link.
A linked item’s chip under the header, with its hover card.

Hover a task’s title to read its prompt, with a button to copy it. The prompt is a context item of its own, labelled Prompt, shown first among the task’s notes in the card, the preview, and the task page’s rail, and it can’t be deleted.

To rename a task, choose Rename task from its ⋮ menu or press F2 on its focused panel, and edit the name in place. Enter commits the change; Escape or clicking away discards it.

The header folds down to its title row with the chevron beside it, for a task, a pull request, or an issue. A folded pull request still shows its number and review decision. Each segment remembers its own fold.

A Done task with no unpushed work and no agent working or waiting on you shows Ready to archive? in its header. See Arranging Your Work.

An archived task reads Archived where its progress control would be, in both its preview and its detail header, so you can’t mistake a filed task for a live one.

The worktree pill

Below the header, each of the task’s checkouts is a pill with two rows: who it is on top, and what’s in it below.


A task's side panel header: the fold chevron, the task title Upgrade the payment SDK, Open task page, the ⋮ Task actions menu, the In Review progress control, the Terminal button and Close, above its worktree pill with the kepler/payment-sdk-v5 branch in acme-web, 1 uncommitted file and the main merge target.
A task’s worktree pill, below the header.
Row What it shows What it does
Top The branch and repository, the worktree’s own pull request, and the upstream control The branch opens the worktree’s menu: copy branch or path, open its changes, detach, delete. The upstream control runs the verb its counts call for: Pull when behind, Push when ahead, Publish when the branch isn’t on a remote yet, and Force push behind a confirmation when the branch has diverged or after you apply a rebase. Fetch is in its chevron
Bottom Chips for uncommitted files, commits, and the merge target, plus Open in and Run Each chip opens what it counts: the working changes, the commits, or how the branch compares with its merge target. The merge target chip’s menu also offers Rebase onto {target} and Merge {target} into this branch, which open the update view. See Review Changes. Open in opens the checkout in your default editor, with the rest in its chevron. Run runs one of the repository’s commands

The pill says what needs doing rather than just counting: unpushed commits, a paused rebase or merge you can continue or abort from the pill, a merge target it couldn’t read with a retry, a detached HEAD explained, and No changes only when there really are none. Hover any chip for a card that leads with what a click does; right-click it for its own menu. As the panel narrows, the chips shrink to their icons and counts rather than disappearing, and the branch name is cut last.

More than one worktree. A task’s worktrees collapse into one pill, led by a count such as 1/3. Step through them with the switcher on the branch name, or with the up and down arrow keys on the pill. Until you pick one, the pill follows the worktree with the latest changes. The toggle on the pill’s leading edge (Show all {count} worktrees) lays them all out at once. Worktrees whose branches have merged share a single row, with a way to delete them through the same cleanup list archiving uses.

From the keyboard, a pill is two tab stops (its changes and its actions), with the left and right arrows moving inside each.

The terminal strip’s + becomes a chooser listing the task’s checkouts by branch when the task has more than one.

An issue or pull request keeps a status line as well, with its provider state, session dots, repository, assignee, and last activity. A task does not, because the row you clicked already showed that information.


Back and forward

Back follows one rule: it leaves the place or mode you’re in. It never retraces a search you typed, a filter you set, or a change of view mode, so pressing it after narrowing the list takes you out of the list rather than walking back through every keystroke.

Mac Windows / Linux
Back ⌘ [ Alt + ←
Forward ⌘ ] Alt + →

The Back and Forward buttons in the top bar do the same, as do a mouse’s side buttons. On macOS, a two- or three-finger sideways swipe on a trackpad or Magic Mouse goes back and forward too, wherever nothing under the pointer scrolls sideways. A sideways scroll or a mouse’s tilt wheel never goes Back on Windows and Linux, so a stray scroll can’t throw you out of what you were reading.

Each set of open panels gets its own history entry, so Back closes the set you just opened rather than the whole visit. Moving between Settings sub-pages replaces a single entry, so Back from Settings returns you to what you were doing before you opened it.


Empty states

What you see What it means
Welcome to Kepler / You’re all caught up Nothing in motion. The welcome panel stands in for the Tasks list, with 3 ways to start one
No tasks yet Nothing in motion, before the welcome panel resolves
No assigned PRs or issues Providers are connected, but nothing is assigned to you
Nothing matches these filters Your search or filters exclude everything. Use the button beneath it: Clear search, Clear filters, or Clear search and filters
Nothing here One column of the Columns arrangement is empty while its neighbours are not
No provider integrations Connect a provider to see assigned PRs and issues here.
Sign in to see your assigned work Connect a GitKraken account to load the PRs and issues assigned to you.

Have feedback about this article? Did we miss something? Let us know!
On this page