Documentation
Feathers
Extensions on the Perch — the Claude Feather, subprocess plugins, and building your own.
Feathers are toowl's extension system. They render in the Perch (left sidebar), respond to palette commands, and can spawn panes or show banners — all without restarting the terminal.
The Claude Feather
Ships built in via toowl-plugin-claude. Bring your own claude binary; the Feather handles the rest.
- Session list — every Claude Code conversation in the active pane's cwd, labeled by title or last user prompt.
- Live badge — running sessions show
live; the list updates via filesystem watch on~/.claude/projects/. - One-click resume — click a row to spawn or focus a Claude session in the current directory.
- Crash recovery — unexpected exit shows a
[R] Resume / [X] Dismissbanner with one-key restart. - Palette integration — Claude commands appear alongside terminal actions in
Cmd+Shift+P.
Subprocess Feathers
Drop a Feather in ~/.config/toowl/plugins/<id>/ with a
plugin.toml manifest and a binary. The host speaks newline-delimited
JSON-RPC over stdio. Capabilities are declared in the manifest and enforced on
every host API call.
# ~/.config/toowl/plugins/my-feather/plugin.toml
id = "my-feather"
name = "My Feather"
version = "0.1.0"
program = "./my-feather"
capabilities = ["spawn_pane", "set_sidebar_dirty"]
Enable / disable
[plugins.my-feather]
enabled = true
Changes hot-reload. Toggle Feathers in Settings, the hamburger Feathers…
manager, or config.toml.
Developer env vars
| Variable | Effect |
|---|---|
TOOWL_DEV_PLUGINS=dummy | Adds a test Feather (palette counter + echo pane). |
TOOWL_DEV_PLUGINS=none | Disables all Feathers (bisect helper). |
TOOWL_PERF=1 | Logs a 1s frame-loop summary (skipped frames, render time). |
Build your own
Read the wire protocol and
the Aviary for install and publish workflows.
In-process Feathers implement toowl_plugin::Plugin directly;
out-of-process Feathers use JSON-RPC.
Want to contribute a Feather? Open a PR or issue on GitHub.