SessionPort
Docs Download

every claude code session, on one board with its live state

from a single repository to forty, running on the cli, the desktop app or vs code.

from one repository
to forty, without
opening a terminal.

Get started

3 running

of 12 repositories

Resume

Stop

Archive

Continue

claude-sessions-manager working
packdesk-macos waiting
keel-skill idle 3d

Live state comes from the documented agent interface, the history from transcripts on disk. Whether anything is running here is answered before you ask.

built on documented
claude code interfaces

claude agents --jsonclaude stop~/.claude/projectsCLAUDE_CONFIG_DIRPROGRESS.mdkeel-handoff-verifycleanupPeriodDaysisSidechain

free, and private by construction

100% free

no licence, no subscription, no paid tier waiting behind a feature.

no ads

nothing is promoted, sponsored or injected into the board.

no telemetry

no analytics, no crash pings, no account. nothing is collected.

stays on your mac

transcripts and archives never leave the machine. no server involved.

SessionPort itself sends nothing anywhere. It reads the session files Claude Code already wrote to your disk and shows them to you — it does not upload them, index them off-machine, analyse them or pass them to anyone. What Claude Code does with your prompts is between you and Anthropic.

intelligent tooling built for repositories

{{ panelLabel }}

{{ panelBig }}

{{ panelSub }}

{{ row1 }}{{ row1b }}
{{ row2 }}{{ row2b }}
{{ row3 }}{{ row3b }}

One row per git repository, sorted by what is running. The list is derived from each session's working directory, resolved to the git top level.

  • branch, dirty tree and last activity per row
  • filter to running, waiting, idle, keel-managed or archived
  • add a repository with no sessions yet and start one from it

Working, blocked, done, failed and stopped, read from the supported agent interface. A session still thinking is never blurred with one that has finished but is still alive.

  • the current session is marked, never inferred from timestamps
  • resume, rename, preview read-only, archive, delete
  • stopping calls claude stop <id>, never a signal to a pid

Claude Code deletes transcripts after cleanupPeriodDays — thirty days by default. Archiving copies the file into SessionPort's own store first, then hides the session.

  • unarchive returns the session with its transcript intact
  • bulk archive everything finished, or older than n days
  • delete is separate, confirmed, and says what it removes

For Keel-managed repositories, SessionPort reads the phase, baseline and waiting hand-off from disk, then runs the repository's own verify script before launching anything.

  • CONTINUE launches with the continuation prompt
  • STOP explains what disagreed and offers a plain session
  • add or update keel writes only between its own delimiters

Find a session by something that was said in it, not only by its title. Scope to one repository, to all of them, or include the archive.

  • match count per session, with the line in context
  • says when the index is still building instead of pretending
  • archived sessions stay searchable past the cleanup window

shaped by documented interfaces, not guesswork

supported paths only

Live state from claude agents --json, stopping through claude stop. No process inspection, no raw signals.

tolerant by design

The transcript format is internal and can change. The parser skips a malformed line, keeps unknown fields, and surfaces the version that wrote each record.

your repositories stay yours

Nothing is committed or pushed. Keel writes land between their own delimiters and stay staged for you to review.

Learn more
px;font-size:52px;line-height:1.1;font-weight:600;letter-spacing:-0.02em;color:#FFFFFF">continue refuses to launch on a stale hand-off

Acting on a stale hand-off is precisely the failure Keel's courier checks exist to prevent. SessionPort reads the verdict and behaves accordingly.

How it works
packdesk-macos — keel-handoff-verify
$ scripts/keel-handoff-verify
repo:      packdesk-macos
generated: 2026-08-13T09:41:02Z
commit:    4f9c1ab  (HEAD 4f9c1ab)
tree:      clean
position:  phase 5 · sprint 3 · slice 4 closed
handover:  docs/continuation-prompt.md
VERDICT: CONTINUE

$ claude agents --json | jq -r '.[] | .state'
working
blocked
done

smaller things that add up

5s

live polling

the board refreshes on an interval you set, and says when it last did.

cli · app · code

one inventory

sessions from every surface in a single list.

41 kept

bulk prune

archive everything finished, or older than n days, in one confirmed action.

2 skipped

diagnostics

which cli was found, which config directory is read, which lines failed to parse.

new session

start from the board

launch a session in any repository, in your terminal of choice.

ready to open
your board?

The signed build will be downloadable straight from this site — no App Store, no account. macOS only, and not released yet. It needs the Claude Code CLI on your machine and reads ~/.claude without writing to it.

requires

macOS 13+

build

universal

status

coming soon

writes to

nothing

got questions?
we've got
the answers.

Need more? The guides cover every screen.

View guides

It is not released yet — the download is coming soon. When it lands you will get the signed .dmg directly from this site, for macOS only. SessionPort is not distributed through the App Store, so there is no account and no store review in the way — just the binary and its release notes.

SessionPort writes nothing to your repositories. It reads them — branch, dirty tree, and any Keel files that already exist — and that is all.

Keel is a separate, entirely optional project, and it is a different matter: installing Keel does write into a repository. It creates its own agent directories and a docs/ folder, and it maintains a set of files inside them, because Keel is a full working protocol, not a config flag. If you ask SessionPort to add or update Keel it is Keel that writes, on your explicit confirmation, showing the diff and leaving everything staged for you to review — never committed, never pushed. Say no, or switch the Keel layer off, and your repository is never touched.

It reads the supported claude agents --json interface and groups the results by working directory. No process inspection, no pid guessing.

No. Keel is a separate skill that carries a project from its first idea through to the first release and every update after it — planning, phases, sprints, hand-offs, releases and hotfixes. If your repositories are built that way, SessionPort reads that state and gives you the Continue button. If they are not, nothing is missing: the Keel layer is a flag you can switch off, and a repository that has never heard of Keel shows its sessions and live state with no empty widgets.

In its own store under the app's application-support directory, outside ~/.claude, so the cleanup window cannot reach it. Diagnostics shows the exact path.