Changelog

Kelp updates itself. Betas are built from main ahead of a release and install beside Kelp, as Kelp Beta.

Kelp 0.13.0

November 11

Download: Kelp.dmg (macOS 14+).

What's new

  • Skills & MCP: a new panel shows what the chat on screen got (skills, MCP servers, plugins, instruction files) and who brought each one. Add a Skill or MCP Server is one sheet. An MCP server added once goes to both Claude Code and Codex. A skill, server or plugin can be turned off for a single project. Your own skills can be created, copied in, linked and moved to the Trash. On the command line: kelp mcp and kelp skill.
  • Kelp's skills for every agent: Codex, Antigravity, Grok and any other agent without a plugin flag now get Kelp's skills inside the project.
  • Dock strip: tiles show their branch's CI and a spinning mark while working. News flashes in, one item after another. You can throw or swipe the strip to where you want it. It stays still under the pointer and hides behind the screen edge during a call. Its card handles every state and takes the keyboard.
  • Artifacts: designs are canvases of boards that Kelp draws from the project's design system and checks. Pick, marks, tweaks and Edit change a board by hand, using the system's tokens. Dashboards are canvases too, and any canvas can be presented or printed one board per page. The panel shows one line per page, grouped by day, with a preview on hover and what the chat spent on each page.
  • Browser: sign-in popups complete. A dev server's page opens as soon as the server starts. The address bar completes from history, new-window links open and ⌘F finds text on the page. The agent's pointer is drawn in the agent's colour and says what it's doing. Agents get shorter answers, can run several steps in one call, and can drag.
  • Databases: groups of databases in All My Databases, with folders that fold and drag-and-drop. Dragging a group onto a project gives the project all of its databases. Databases and groups can take a colour.
  • Sidebar: the counts above the projects are buttons that show which agents they count and what just happened.
  • Inspector: panel icons can sit in a column down the right edge, where every panel fits. The » menu opens when the pointer rests on it.
  • Git: the branch popover says each thing once: CI under the branch's standing, commits without hashes, the changed files, and when it last fetched.
  • Extensions: a row's icon can be an app's or a file's icon, and dragging a row drags its file.

Security

  • An agent's tab can't name another workspace in its address, and it never opens a page signed in as you.
  • The trust settings and port forwardings the daemon relies on are kept out of the app's own state.
  • A database statement can't slip past the checks with Unicode-escaped names, Postgres E'…' strings or MySQL's access to the server's files.

Fixes

About 90 more, among them: Extensions opens from the sidebar again; panels slide without the editor area changing width; a booting iOS simulator keeps booting; editing a database keeps its name; a folded project's +N count no longer loses its last digit.

Thanks @fliplafe for the DataGrip import fix (#48).

What's coming in Kelp, ahead of a release: Kelp-Beta.dmg (macOS 14+). Kelp Beta installs beside Kelp, as an app of its own (its settings, projects and agents in ~/.kelp-beta), starts with a copy of Kelp's (Claude Code agents continue a fork of their conversation) and updates itself with each new beta. It can break: for work, use Kelp.

  • feat(extensions): a row's icon can be an app's or a file's, and drag names the file the row drags (1f01cc6f)
  • fix(artifacts): the check skips text hidden for screen readers and a box's wider child, a Mac app keeps the M… (2ee9fd0e)
  • feat(artifacts): a page's bar says what its chat spent on it (3f2e37dc)
  • feat(artifacts): marks, Pick and tweaks on a design's canvas, and its versions keep the boards (4848711e)
  • feat(artifacts): a design is a canvas of boards Kelp draws from the project's design system, and checks (1984bdbc)
  • fix(ui): the last jumps move: a server's fold, the ended bar, focus mode's buttons, and borderless menus answ… (f4ea61db)
  • fix(ui): Issues waits with the spinner every panel has, and a SwiftUI tab's bar buttons are the quiet plate (7e18234b)
  • fix(ui): a web page has the browser's icon in Quick Open and Reopen too (6181dde6)
  • fix(ui): every empty state's title is in title case, and the renamed ones keep their translations (c623ca50)
  • fix(ui): a SwiftUI page's empty state is the block every panel shows, with Kelp's own glyph where it has one (0dfad5b2)
  • feat(agents): the Dock strip's tiles show their branch's CI (ec19c32a)
  • fix(quickopen): what's typed starts after the magnifier, not over it (9c9c5f5c)
  • fix(settings): a panel's and an extension's icon is the one the inspector shows, in a column of one width (b7da2417)
  • fix(git): the branch popover sits on the popover's own glass like every other, and Push is a rounded rectangl… (4a763bfd)
  • feat(cli): kelp mcp and kelp skill: list what a chat loaded, add or remove a server, switch for the project (ee8f4a97)
  • feat(agents): an MCP server added once goes to Claude Code and Codex (64027897)
  • fix(agents): Skills & MCP rows keep their names: three agent icons, Claude Code first, weight only from a cha… (b1734bf5)
  • fix(ui): a text button in a bar is one quiet plate (TextButton), and Commit is a rounded rectangle like its f… (ec7cb3db)
  • test(architecture): the opacity ceiling counts every match, 23 (586adca9)
  • feat(agents): a skill, an MCP server or a plugin goes off for one project (be98a2fa)
  • fix(ui): a tinted fill is fillTint everywhere, and hand-typed opacities and text sizes are counted down (f8329aae)
  • feat(agents): Skills & MCP panel: what the chat on screen got, by who brought it (f9bbb752)
  • fix(ui): gaps of 3, 5, 10 and 14 pt move onto the scale's 2, 6, 8 and 12 (00a3f1e2)
  • fix(ui): big text has two sizes, title 20 and heading 15, instead of five typed in by hand (3ef4baa3)
  • feat(agents): addons.list says what a chat's agent got: skills, MCP servers, instruction files (c850698a)
  • fix(git): the diff's file rows are as tall as every list's and follow Text size (0c096caa)
  • fix(settings): Extensions' Installed / Library sits on the left over the list, as the Agent Catalog's filter (8474ad3a)
  • fix(ui): emphasis is semibold; bold stays for marks of 10 pt and under (bfa6b39f)
  • fix(ui): empty states name themselves in title case (c9a1cc27)
  • fix(databases): the panel's header is the one every inspector panel has, with its hairline (44ce3aad)
  • feat(browser): actions say what they did, a covered element isn't clicked, and kelp browser drags (22ce6691)
  • perf(shell): a panel that stops hiding comes in over its opening column and is moved into it afterwards (197fd269)
  • fix(agents): a dragged or swiped Dock strip goes to its place and springs into it (f6b61a9d)
  • perf(shell): the editor area keeps its width while a panel slides, and a project's name asks the disk once (4525eb35)
  • fix(ui): what hides goes after its motion, not before it (27103047)
  • fix(browser): ⌘R reloads the page while the browser tab has the focus, Run everywhere else (5d66563b)
  • perf(shell): a sliding panel keeps its width and a floating one moves by its layer (94be9ab6)
  • fix(ui): rows stay inside their panel, hover fills don't flicker, and hand-made controls spring like the rest (36f81c02)
  • fix(agents): a thrown or swiped Dock strip flies as far as it goes that way (9afa977f)
  • fix(build): the DMG's disk is let go of when Finder is done with it, not on the first try (c643087c)
  • chore(strings): Russian for the Dock strip card's permission kinds and Hide Strip (88242b0a)
  • feat(agents): news flashes on the Dock strip, and comes out of the edge one after another (2415a6a0)
  • feat(agents): the Dock strip can be thrown and swiped to its places (e384fd1f)
  • feat(agents): in a call the Dock strip goes behind the edge by itself (102be921)
  • feat(agents): a strip tile's right-click menu starts with its own agent (6a48d1f3)
  • feat(agents): the Dock strip's card answers every state and takes the keyboard (80746e8e)
  • feat(daemon): a question's answers travel with its session, and session.choose picks one by its label (e9d86a3e)
  • feat(agents): the Dock strip stands still under the pointer (ffad7c09)
  • feat(agents): behind the edge the question breathes and work stands still (4732d69f)
  • feat(agents): a working tile on the Dock strip carries the spinning mark (2cb85ba1)
  • refactor(core): ~/.ssh/config's hosts are read in Core, beside RemoteHost (b3892475)
  • refactor(core): the turn methods have a file of their own (4fe4fa28)
  • docs: paths in comments and docs follow the files into their folders (d912f893)
  • refactor(daemon): virtual machines in Machines/ (3c667521)
  • refactor(daemon): databases in Databases/ (7e4cbcd7)
  • refactor(daemon): extensions and language servers in Extensions/ and LSP/ (f3e6afe8)
  • refactor(daemon): git, forges and remote hosts in SourceControl/, Forges/ and Hosts/ (8ea3c8e7)
  • refactor(daemon): workspaces in Workspaces/, what a project's files say in Project/ (08b92298)
  • refactor(daemon): agents' usage in Usage/ (61bd4ac9)
  • refactor(daemon): sessions in Sessions/, a running one's own files in Sessions/Live/ (77104934)

Kelp 0.12.0

November 9

Download: Kelp.dmg (macOS 14+).

What's new

  • Databases: a Databases panel and a database tab for Postgres, MySQL, SQLite, DuckDB and Appwrite. kelpd speaks Postgres and MySQL itself, so no psql or mysql is needed. Add Database reads any pasted address and finds what's on this Mac, in Docker, in compose files, Prisma, .idea and VS Code SQLTools. Import from TablePlus, DBeaver, DataGrip, Sequel Ace, Beekeeper, DbGate, pgAdmin, Navicat and libpq/MySQL files. The table tab has types and keys, sorting on the server, pages, a row inspector, and edits saved in one transaction, even on tables without a primary key. Environments, with Production only where you say so; a copy of a database for a workspace's branch; remote projects' databases through a forwarded port. Open Database is ⌃⌘K.
  • Agents and databases: agents reach a project's databases through kelp db without seeing its passwords. A change waits for your Allow in the agent's own pane; reads run in a read-only transaction with a time limit and a row cap.
  • Agents: Fork Chat starts a new chat beside an agent from a copy of its conversation. Continue and Looks Good, Go On are one click from an agent's card or banner. A turn that ended on an API error that passes goes on by itself, twice in a row at most. Codex on a remote host reports its state through hooks. Codex can take over a Claude Code chat as its own thread.
  • Tabs: Tab height (Regular / Compact) and Tab width (Regular / Compact / Automatic), so more agents fit.
  • ⌃Tab: its rows are the sidebar's, the screen you're on comes first, and servers are screens too.
  • Git: a file that another folder of the project also changes is marked, on its row and in Source Control.
  • Markdown: TeX math in previews and notebooks, drawn by the bundled KaTeX.
  • App: the icon follows macOS 26's icon styles (Default, Dark, Clear, Tinted). General › Ask before quitting. Settings' section tiles look like System Settings'. A Homebrew cask.

Security

  • An agent's database statement can't run a shell, slip a second statement past the read-only transaction, or run Postgres COPY, DO or server-reaching functions. A MySQL trial never makes the change on tables that can't roll back.
  • A project's files can't aim a password or a connection at a host they name, and an agent's call doesn't dial an address from them before you open it. Only a loopback address or this Mac's own name counts as this Mac.
  • What you let agents do with a database stays with its address, not its name; an agent reaches only its own project's databases.

Fixes

About 30 more, among them: ⌃Tab finds its workspaces by id again; a long name truncates inside its sidebar card; the sync popover's edges and arrow line up; a deleted machine goes to the Trash; Codex, Gemini, Hermes and Antigravity logos draw whole.

Kelp 0.11.0

November 9

Download: Kelp.dmg (macOS 14+).

What's new

  • Machines: copy and paste between the Mac and a macOS machine, and Type Password right where the dialog asks for it. A machine's row says what it takes of the Mac: CPU and memory while it runs, its disk while it sleeps. A machine's menu deletes it, after asking. Android's Show boots with its window and leaves no emulator behind.
  • Projects from other tools: a project made by Conductor, Codex, Cursor and others works with no .kelp.yaml; VS Code and Zed tasks show up in the Run menu.
  • Agents: Codex reports its status through Kelp's hooks, not only its screen; a Codex or pi session hands off its conversation, not its terminal's text.
  • Start: the "+" menu and the empty workspace offer one list in one order, with keys as you rebound them.
  • Files: the trust question is a bar over the code; Markdown's modes sit in the status bar; a missing file has a way out; a preview follows its file when it's written over.
  • Sidebar: a coloured project's group glows under the pointer; colour dots grow with a spring; a server's header is one line like a project's, with its stripes as a setting (Appearance › Servers); No Project sits apart at the end.

Security

  • Whatever runs under an agent — in any terminal, a tmux pane, or what it starts — is held to the agent's rules, and by default only in its own workspaces. Who may do what is one tested table.
  • An agent doesn't type into a question on screen, and its sends to a session that asks are refused.
  • Staging a hunk counts as a write; review comments from an agent say so.
  • An unrecorded extension runs nothing; a preview's link out of the projects asks first.

Faster

  • The editor applies only what differs (⌘S's tidying, a format, a review pick); find follows edits once typing pauses.
  • Replace in Files finds matches off the main thread; the name filter folds the listing once.
  • Spinners turn at 30 fps; rows and tabs that didn't change aren't redrawn; plan limits are read only for agents used in the last two weeks.

Fixes

About 80 more, among them: kelpd ends when its home is deleted or moved; a kelp:// link opens in its workspace when paths differ by /private; a file reached through a symlink is the tab already open; an agent that asks stays in the sidebar's count while its tab is on screen.

Kelp 0.10.0

November 6

Download: Kelp.dmg (macOS 14+).

What's new

  • Review: read an agent's change like a file: unchanged lines open in place, named by their function, whitespace can be hidden, and find goes across every file. Write a comment in a card under its line, mark files viewed (an agent's change brings them back), pick which findings go to the agent, or hand the whole change to another agent with Review with. Every turn of an agent can be read again by its prompt, and undone after a look at what goes back.
  • Machines: Linux and macOS virtual machines on Apple Virtualization, Android on the SDK's emulator and iOS on your Xcode, in the sidebar with a tab each. kelp vm run <name> -- <command> runs an agent's command there in the project's folder; a machine's files are in Finder under ~/Kelp, a macOS machine's screen needs nothing allowed inside it, and Type Password types its password for you.
  • Artifacts: any agent makes docs, reviews, slides, designs and dashboards with kelp artifact, shown in a tab with a version per turn and a bar to step through them. A review is answered on its page and the picks go back to the chat; select text on a page to ask its agent about it. Make tiles sit on the start page and in +, and an Artifacts panel lists them.
  • Sidebar: a folded project or group stacks its chats' agents in one row and says what's inside; marks are quieter, with colour only where an agent needs you. Park an agent out of the way until it needs you, or Mark as Read by hand. The changes dot turns into +610 −23 under the pointer.
  • Agents: logos from Lobe Icons, one look everywhere. Allow and Deny given in Kelp answer through Claude Code's hook. Status says how sure it is and how long the agent has been quiet; a finished agent counts as read only with someone at the Mac, and a recap comes from a fork when nobody's there.
  • Worktrees: New Chat on Branch… names the branch, takes one that's there or a PR; worktrees can live in a folder of your choice, and clone: in .kelp.yaml copies paths into a new one as APFS clones. Every folder has ten ports of its own in KELP_PORT.
  • Servers: a server is a screen of its own, not a tab in its first project.
  • Settings: one look across the pages, a General section (language, updates, background service), choices shown as pictures, live previews for Terminal, Editor and Plan limits, a line under each row with the rest behind ⓘ. The first-run screen picks the theme, text size and default agent.
  • Window: a title bar that shows only what's on, the inspector's icons in the title band, real empty and loading states.
  • GitHub: merge in any of GitHub's three ways, with why it can't yet; Merge lands only the commit on screen. Discard has Undo.
  • Browser: page dialogs, uploads, downloads, typing by key, the agent's pointer and a glow on the element it acts on; take over at any time; kelp browser viewport WxH for a phone's or tablet's width.
  • Extensions: a page sees the agents and runs Kelp's commands; one that runs commands waits for you to allow it; the library shows community extensions apart, as not reviewed.
  • Usage: kelp usage prints each agent's plan limits, and a limit's pace comes from one reading.
  • Accessibility: Increase Contrast strengthens Kelp's own fills and edges its tabs.

Security

  • An agent's program calls only the methods agents use and runs only the app's commands that show something; a caller that can't be told apart isn't taken for the user.
  • An agent's HTML preview runs none of its own scripts and can't leave its file; a committed artifact can't open other apps or stall the daemon.
  • Allow on a banner answers only the question it showed.

Fixes

About 130 more, among them: a discard keeps its Undo before it changes files, and queued input is checked again when it runs; a status change queued before a question's hook doesn't end its wait; port forwardings are saved in order.

Kelp 0.9.0

November 4

Download: Kelp.dmg (macOS 14+).

What's new

  • The editor grew up: the language server's errors and warnings show in the file, with hover, a call's parameters, a completion list of Kelp's own, find references, rename a symbol and the server's fixes. Folding goes by the code, the scopes you're in stay pinned, breadcrumbs sit over the editor, brackets are coloured by depth, with indent guides, rulers and visible whitespace. Selection grows by syntax, cursors go above, below and to line ends, snippets come from VS Code files, indentation is read from .editorconfig, and a language can have its own editor settings. Lines that differ from HEAD are marked beside the line numbers.
  • Find: a find bar of Kelp's own with regex and replace, Find in Project with case, whole word and regex, replace across files seen first, and every open file's problems in one list. Quick Open goes to a line, a column, a symbol of the file or the whole project.
  • Dock: Kelp's Dock icon shows the agents or the plan, and its menu answers a permission. A strip of workspaces above the Dock answers an agent with Kelp behind: drag it anywhere, choose when it comes up, or let it hide behind a side of the screen, where a sliver says how things are and a question comes out of the edge.
  • CI Runs: the panel opens on what broke, read from the whole log, with the log a click away or in a tab of its own. Runs can be cancelled or re-run, whole or a job at a time, and show their commit, attempts, times and a running run's clock.
  • Servers: SSH projects stand on their server's hatched card. A server opens as a tab with its CPU, memory, disk, ports and processes, each agent's own too.
  • No Project: chats outside any project live on the sidebar's last row, each in a folder of its own. The Scratch panel is gone.
  • Agents drive the browser: kelp browser opens a page tab with its own cookies and clicks, types, presses keys, hovers, scrolls, goes back and reloads; it reads the page's console and network too. The browser skill goes to chats in web projects, and each project can choose.
  • Sidebar: who needs you takes the search field's place, the line over the list says how many finished unread, every row starts with one slot that also closes a chat, and plan limits sit in the foot as two lines with each agent's icon and an even-pace tick.
  • Agents: an agent's card says when its cache goes cold and offers Compact Now. ⇧⌘T brings a closed tab back in its place, an agent with its conversation. Ctrl+G opens an agent's prompt in a Kelp tab. An agent's tab shows the sidebar's card under the pointer.
  • Notifications: an agent that needs you can reach your phone, and a question nobody answered is reminded of once.
  • Updates: downloaded quietly, then a pill in the title bar says one is ready.
  • Settings: eleven sections read at a glance, search that finds groups and sections, row labels that make sense alone, and a reset asks first.
  • Liquid Glass: a hiding panel slides in on macOS's own glass.
  • Git: a merged PR offers to switch its folder to the base branch.

Security

  • An agent types into, stops, restarts, attaches to and answers for only the sessions it started.
  • kelp browser drives only a page an agent opened; --shared asks you first.
  • Markup an extension's page shows runs no script.
  • Allow on the strip's card answers only the question the card shows.

Fixes

  • Esc on Claude's question ends the turn instead of leaving it "working"; an agent with hooks pauses by its status, not by what it last printed.
  • A launch prompt waits out "trust this folder?".
  • A refused file write writes nothing: renames are all or none, and Undo never writes over a newer version.
  • ⌘+ and ⌘− change every terminal and the editor together, and a held ⌘+ loses no step.
  • A terminal left with exit closes its tab.
  • An SSH host gone quiet is given up on in 30 s, not 90.
  • A child agent's reports reach its parent in order and survive an upgrade.
  • Codex's free plan shows its month-long window, and usage prices cover every current model.

Kelp 0.8.0

November 2

Download: Kelp.dmg (macOS 14+).

What's new

  • Chats: one row of the sidebar is a chat now. ⌘N starts the default agent in the screen you're on. New Group (⇧⌘N) makes a screen with its own heading, and a chat moves to a group with its agent running. New Chat on Branch (⌃⌘N) opens a chat on a new worktree without asking for a name: the first prompt names both, from any script. Closing a chat's last tab closes its row, and a branch with work of its own asks first.
  • Agents working with agents: kelp session new --agent from inside an agent starts a child, and what it finishes with, asks or fails with comes back to the parent as its next prompt. Children and subagents stand on the parent's row as dots: filled at work, hollow finished, orange asking. The hover card says what each does, and a subagent's journal opens as a tab.
  • Commands stay out of the way: a command an agent starts runs on one line under its terminal instead of taking a pane. Click to see its terminal, Stop to end it, Open in Tab to keep it. A command's tab is named after what it runs (swift build), not "Custom".
  • Status you can trust: most of this release's fixes went here, checked against what a real Claude Code does. A finished, failed or asking agent reads as such through updates, dropped connections, sleep and hooks that don't run. Waiting on a command is a slower ring of dots, what runs beside an agent is one symbol, and light means it needs you. kelp why says where a row's status came from, and every session keeps a trail of its changes.
  • Routines: agents on a schedule. A Routines tab shows a project's week, a mark a run, with what each run did. One missed while the Mac slept runs when it's back. kelp routine does the same from the CLI.
  • Plan limits: an agent stopped by a limit says so on its row, and can go on in another agent now or by itself at the reset. The sidebar's footer is one line, the fullest limit.
  • Usage: a row per agent, for 12 agents: plan, days, tokens and what they'd cost at API prices. A click narrows the totals and charts to that agent, and a GitHub-style board shows the year.
  • Context: an agent's card shows what filled its context, split as /context splits it, with each part's biggest items and Compact Now from 90%.
  • Notifications: a question and a failure sound different, a finished turn is a silent banner, and one under 20 s has only its row. Banners wait while you type. Mute a project, a workspace or an agent for an hour, for today or until you unmute it. Levels are in Settings › Agents › Notifications.
  • Ports: a capsule in the title bar says localhost:5173 for any server on the screen, an agent's too; a click or ⇧⌘O opens the page beside you. A remote host's servers show up too and are forwarded when you click, copy or open a link.
  • Themes build the window: a theme now sets the surface, the card, the accent and the chrome's face. Nine Looks differ in what they're made of: Glass, Frost, Aurora, Neon, Deep Sea, Phosphor, Blueprint, Paper and Mono. Terminal opacity opens up any theme, and two shaders come with Kelp, crt and bloom.
  • Right-click: rows that had no menu have one, files, folders and the empty space each have their own, and a part of the window sets how it looks from its right-click: pointing at a choice shows it, a click keeps it.
  • Motion: Source Control's buttons show their work and what they did, new commits slide into the graph, tabs slide when one opens, closes or moves, and what closes leaves softly.
  • Project colours: a project can take a colour, shown on its icon or as a filled card.
  • Your work is safe: unsaved text comes back in its tab after a crash or a force quit.
  • Idle Claude Code updates itself: an idle agent restarts into a version it has installed (/restart: same terminal and conversation), only when nothing can be lost. Settings › Agents turns it off.
  • Remote: Claude Code on a host reports its exact status, in tmux too.
  • CLI and extensions: kelp agents shows who waits and answers from a narrow terminal, a phone over SSH for one. kelp shot writes the window to a PNG, and kelp schema shows the daemon's API. An extension can run a command when an agent asks, finishes or fails.
  • Installer: Kelp.dmg opens as a window: Kelp beside Applications, with an arrow.
  • Kelp Beta: builds of main to try ahead of a release, an app of its own beside Kelp, here. It starts with a copy of Kelp's projects and agents.

Security

  • The hidden /context copy runs none of a project's hooks or MCP servers, and doesn't open a folder whose agent config differs from the base branch or that belongs to no project.
  • A repository's git filters don't run from Kelp's automatic status or a turn's snapshots.
  • Opening a link only shows it: a self-hosted forge's link can't run a command.
  • A theme's colours can't add lines to the terminal's config.

Fixes

  • A permission dialog can't be answered by accident: text waits while an agent asks, and a banner's Allow answers only the question it showed.
  • Closing a terminal can't freeze the app.
  • Updates don't leave kelpd deaf while the login shell starts, and an unresponsive kelpd is reported in seconds.
  • oh-my-pi no longer pegs the app at 100% CPU, and ⌘V pastes into programs that take paste events.
  • Plan limit readings leave no session or prompt history behind in any agent.
  • Scrolling a long file runs at 73–86 fps instead of about 36, big files stop costing per keystroke, a file with a very long line opens read only, and a very long diff line no longer stalls.
  • The sidebar, tab strips and hover cards redraw only what changed, and network checks slow down while nothing changes.
  • An agent gets at most ten terminal sizes a second, always the last, so a sliding panel doesn't redraw it for sizes already gone.
  • Launch no longer waits on the login item or remote lookups.
  • A quote copied from Claude Code's output leaves its bar behind.
  • Each workspace keeps its own Source Control work, and Save in the close sheet does what it says.
  • Stop on a chat's row asks first.
  • Issues shows a list that arrives after an empty start, and without a remote it offers what CI Runs offers.
  • A long diff line keeps its last wrapped line, and a long "Asks:" line ends with "…".
  • A narrow Usage pane scrolls instead of cutting both sides.

Kelp 0.7.0

October 28

Download: Kelp.dmg (macOS 14+).

What's new

  • Run: a run chip in the title bar. ▶ runs what last ran in the project (⌘R), its name opens what the project's files offer to run, and the port opens the page a run serves. It reads package.json, Makefile, justfile, compose, Dockerfile, Python, cargo, go, swift, gradle, maven, mix and Procfile, on remote hosts too. The menu groups commands by program and by what they do (install, run, test, build, deploy), lists what's already running (an agent's dev server, one typed in a terminal) and keeps a short list when a project has many commands. A run's tab shows its purpose's symbol, a glow and its port. Choose What to Run… is ⌃⌘R, and the empty workspace and the "+" menu offer the same choices. Opening a project runs nothing.
  • What agents run: the command an agent is running shows on its row (chip and hover card). Under its terminal, a line shows the last command and opens the list of them, with how each one went. Commands read as what they do: the words first, then the program in grey.
  • Agent sessions:
    • reply to a finished agent from its notification or banner;
    • a permission request says what it would run ("Allow npm test?");
    • when a plan limit resets, the sessions it stopped can go on.
  • CI on the branch: a branch's CI shows on the branch chip, beside its folder in the sidebar and in the ⌃Tab switcher, with a run per workflow in the popover.
  • A new look: one design system across Kelp. Controls answer the pointer (fills fade in, presses spring, rows light up), and tabs glow instead of showing a line. Panels share one header and one empty state, lists share row heights, and every editor has a status bar. Banners come in at the editor area's top right on Liquid Glass. The palettes look like Spotlight. Text size covers all of Kelp except code.
  • Sidebar: click a project's row to fold or unfold it in one movement (double-click still renames). A project's line counts and PR number sit on pills. Project icons are found in Android modules and under the project's own name.
  • Settings: Integrations has one card per service, with fields and Connect for Jira, Bitbucket and Linear. Keyboard shortcuts are text you click to record. Extensions are grouped Built-in and Installed. The Ghostty theme card shows your terminal's colours.
  • Files: file icons default to Colorful, symbols tinted by kind that read on a light theme. Finder's icons stay a choice.
  • Diff: each file opens on a band (icon, path, +/−), long lines wrap at the pane's width, and a fully staged file offers Unstage.
  • Source Control: Commit is one split button; Fetch and Publish share pull's and push's arrows. The header has the branch, Pull and Push with their counts.
  • Russian: more of Kelp reads in Russian: the editor's and Markdown's menus, the sync popover, agent descriptions, palettes and new words.
  • App icon redrawn, kept at full size on macOS 26.

Fixes

  • On a light theme, tabs, chips, rows and buttons show their fills again (they stayed white).
  • A full tab strip no longer widens the window, and the chosen tab scrolls back into view.
  • Rows scrolled under a still pointer no longer stay lit.
  • The commit graph isn't pushed two lanes out by one crossing far down.
  • CI Runs: the log pane shows once a job is picked, and a project with no GitHub remote gets a quiet empty state instead of a red failure (Issues too).
  • Quick Open says where each tab is, with its own icon, and doesn't list terminals as agents or the system's Services as commands.
  • Markdown: a badge inside a link ([![CI](badge.svg)](url)) shows the image.
  • The title bar names the folder, not its path.

Kelp 0.6.0

October 27

Download: Kelp.dmg (macOS 14+).

What's new

  • A new code editor: Kelp's own, built on the system text view. Long lines scroll sideways, and you get the find bar with Replace, input methods, VoiceOver and spelling. It also has:
    • code folding: ⌥⌘[ / ⌥⌘], Unfold All, chevrons in the gutter;
    • the matching bracket marked;
    • VS Code's Selection menu: ⌘D next occurrence, ⇧⌘L all of them, ⌥↑↓ move lines, ⇧⌥↑↓ copy them, ⇧⌘K delete, ⌥-click adds a cursor;
    • languages inside a file colored on their own (fenced code blocks, <script>/<style>, JSDoc);
    • a code editor's context menu: Jump to Definition, Send to Agent, Copy Path and Line, Toggle Comment.
  • Markdown: a small bar over the selection (bold, italic, code, link) and a compact formatting strip. ⌘B / ⌘I / ⌘K and the lists are in Edit › Markdown. The preview renders GitHub's alerts (> [!NOTE]…), footnotes and the safe HTML READMEs use (details, kbd, sup/sub, images with width, dark/light logos, centered blocks).
  • Command palette: ⇧⌘P starts with a "Commands ›" token and your recently used commands and settings. Typing > in ⌘P switches to commands, and ⌫ switches back. Rows take one line, and the palettes grow out of the title bar's Search pill.
  • Agent tabs: an agent waiting on a build or test it started shows the command on its tab, with a cyan line along the top. The context ring turns yellow, orange and red as the context fills (by tokens, before compaction) and shows the percent from orange.
  • Commit graph: a commit's branch or tag leads its line (+N for more). A ↑ marks commits that aren't pushed yet, instead of graying out the pushed ones.
  • Sidebar: Rename Project (in the menu, or double-click the name). A remote project that shares a name with another shows its machine ("infra · beet").
  • Remote projects: images and PDFs open in their tab, and the project's own icon shows in the sidebar. Thanks @fliplafe!
  • Extension Library: search, and categories (Tools, Integrations, Languages, Agents, Themes, Icons).
  • Terminal accessibility: the terminal reports the cursor as the caret, the way Terminal.app does, so writing and completion tools can find an agent's prompt.

Fixes

  • A remote agent whose connection dropped keeps its tab across a relaunch: Reconnect reaches it, and closing the tab ends its tmux session. Thanks @fliplafe!
  • Codex keeps its conversation in its own process, which ends with its tab. Thanks @fliplafe!
  • A stopped remote agent reads as ended, not as a lost connection.
  • A peeking side panel stays open while the pointer crosses the gap between the window's edge and the panel.

Kelp 0.5.0

October 26

Download: Kelp.dmg (macOS 14+).

What's new

  • ⌃Tab switcher, like ⌘Tab: hold ⌃ and press Tab to walk the workspaces in the order you were last in them (kept across launches); the one on screen isn't listed, so a quick ⌃Tab flips back. Each row shows the agent's status, the project, changes, pull request and what the agent last said; the pointer and a click work too, and long lists scroll. Thanks @fliplafe!
  • Sidebar redesign: two levels as in Finder (workspaces as headings in their project's card, agents under them); an agent's status leads its row, and one that asks or failed says what ("Asks: …"). The line over the projects is one capsule ("2 need you · 1 working") that goes to the next agent as ⇧⌘U does. Needs You can show as a count, tabs, or Automatic; projects with agents can go first.
  • Agent catalog: its own Settings section lists every agent, installed or not, with a card that follows the install (npm/Homebrew checked first). New installers for Pi, Grok, Antigravity, Kilo, Goose and Kiro; Kimi, Hermes and Droid (hooks) added.
  • Plan limits: GitHub Copilot, Cursor Agent and Kimi limits; a banner when a limit passes 80 % or 95 % (Settings › Agents › Warn about limits at), a warning when it will fill before it resets, stale readings marked with ~.
  • Source Control: the branch chip opens a sync popover that offers the one sync that matters (Push / Pull / Pull then push / Publish); the bar has Commit, Pull, Push (with counts), Fetch, Stash as icons; the branch's CI is one quiet line.
  • Inspector: every panel's bar is the same 36 pt (Files, Issues, CI, extension lists), with real empty and error states.
  • Language: Appearance › Language (Match System, English, Русский).
  • Settings can sit under headings, extensions' too.

Fixes

  • Claude Code's idle compaction no longer leaves its row "working"; notifications that ask nothing aren't questions.
  • An Esc or ⌃C that cuts a turn short is idle at once, also for agents without hooks.
  • Grok's plan limits read again; Cursor reads 100 % once a session hits its limit.
  • Claude Code's artifact links in the terminal are ⌘-clickable.
  • A long list of changes or the commit graph no longer stretches the window past the screen.
  • An agent pane's glow fades in and out instead of switching at once.

Kelp 0.4.0

October 24

Download: Kelp.dmg (macOS 14+).

What's new

  • Needs You, over the list: every agent waiting for you gets a row of its own above the projects (project, agent, when, its mark); a click opens it, resting the pointer shows its last lines, the chevron folds the zone. The dock badge counts only agents waiting for an answer. Thanks @fliplafe!
  • Updates keep your agents: an update hands running sessions to the new background service, the text you just sent included (Enter too), and what was waiting to be typed. Work in progress (a clone, a worktree being made) finishes first; if the update can't go ahead, Kelp says why.
  • More agents report their status: Qwen Code (hooks), Kilo Code and OpenCode (plugin), fx, oh-my-pi, Pi and Antigravity. A Mac with no agent can install one from the empty workspace.
  • Extensions: a command can read any value by name ("$KELP_title", "$KELP_workspace_path") with nothing to quote. Installing from GitHub (CLI) or from a VSIX/folder (Settings) shows what the extension can run and asks first.
  • A pane whose agent needs you glows inward and breathes while it waits.

Fixes

  • A question guessed before an update is checked again after it (Grok no longer sits in Needs You for hours). Thanks @fliplafe!
  • Values from issues, PRs or branches stay data in extension commands, also inside sh -c, eval, here-documents and over ssh.
  • Removing worktrees never loses work: commits on a detached HEAD and locked worktrees are kept; a remote project's files are moved aside on its host.
  • A remote save cut off mid-way no longer overwrites the file with part of it.
  • Status reading: a character or escape sequence split between two reads, tmux redraws, Claude's context window (1M for current models).
  • Language servers and watches stop cleanly; the background service caps what one client can make it hold.
  • Remote projects work in their folder; new worktrees there are refused instead of half-working.

Kelp 0.3.0

October 23

Download: Kelp.dmg (macOS 14+).

Agents

  • Updates no longer end your agents: the background service takes the new version over in place and every session keeps running. Restart Background Service works the same way and no longer asks first. This update itself still restarts the service the old way (0.2.0's service can't hand over), so agents running now will end once more. From 0.3.0 on, they keep going.
  • A paused agent that wakes draws at the size of its terminal, without leftover frames or stray letters.
  • A woken agent no longer shows as paused when its old status arrived late.

Files

  • Gitignored files show in the tree, dimmed. A folder ignored as a whole (.build/, node_modules/) is one closed entry and is read when you open it. Quick Open still lists only tracked and untracked files.

Clone

  • "Clone into" is a path you can type or paste, with Choose… to pick any folder, including one above the last. The folder name follows the URL until you change it.

Thanks to @fliplafe for the clone destination fix.

Install

Kelp › Check for Updates…, or download Kelp.dmg below and drag Kelp to Applications. Requires macOS 14 or later.

Kelp 0.2.0

October 22

Download: Kelp.dmg (macOS 14+).

Git

  • A commit's card opens on hover: its message, its author (with their GitHub or GitLab picture), its size and hash.
  • A commit's type shows as a mark, and its branches get a line of their own.

Agents

  • Codex's plan limits come from Codex itself: every 10 minutes and half a minute after a turn. They no longer vanish after Codex Desktop imports conversations, and an old reading is dimmed and says how old it is.
  • The agent that needs you stands out when it sits beside another.
  • Pausing is more reliable: a paused agent wakes when you write to it, a hidden agent pauses when idle, and when one can't wake Kelp says why.
  • Restarting an agent keeps it in its own workspace. A paused agent's unread result counts everywhere in the sidebar.
  • Stopping the daemon starts no new agent and stops only the processes it was asked to.

Terminal

  • Dictation apps (MacWhisper, Superwhisper…) type into Kelp's terminals, and VoiceOver can read them.
  • File links an agent prints open from its folder, including files in another project.

Other

  • An extension's window stays on its own pages.
  • Changes in ignored folders no longer make Kelp read git again.

Thanks to @fliplafe for the Codex limits and dictation fixes.

Install

Kelp › Check for Updates…, or download Kelp.dmg below and drag Kelp to Applications. Requires macOS 14 or later.

Kelp 0.1.0

October 22

First public release of Kelp: a native macOS IDE where CLI coding agents work side by side with the code they touch.

  • Agents first. Run Claude Code, Codex, Gemini or any CLI agent in real terminals (libghostty), see who's working and who needs you, review each change as a diff. Agents keep running after you quit the app.
  • Code at hand. Editor with language servers, file tree, Source Control, browser; any tab in any split.
  • Workspaces. Several desks per project, each with its own agents, terminals and tabs; .kelp.yaml for per-repo setup.
  • Extensible. Panels, commands, settings and themes come from extensions — a JSON file is enough. Browse the library in Settings › Extensions.
  • Native. Swift + AppKit. No Electron, no cloud, no telemetry.

Install

Download Kelp.dmg below, open it and drag Kelp to Applications. Requires macOS 14 or later. Signed and notarized; later versions arrive through Kelp › Check for Updates…

For the kelp CLI outside Kelp's own terminals: ln -s /Applications/Kelp.app/Contents/MacOS/kelp /usr/local/bin/kelp