Extensions for Paseo, organized in a pnpm workspace.
| App | Description |
|---|---|
| Claude TTY ACP | Run genuine interactive Claude Code sessions in Paseo's native agent view. |
| Plugin | Description |
|---|---|
| Discord Rich Presence | Show your current Paseo activity on Discord. |
| Catppuccin theme | Add all four Catppuccin flavours as app themes. |
| Claude TTY | Offer the Claude TTY ACP adapter as a Paseo provider, and manage it on the daemon host. |
Each app and plugin has its own README with installation, settings, and development details.
Install dependencies and check every package from the repository root:
pnpm install
pnpm typecheck
pnpm testEnable Paseo plugins, then install each plugin by its directory in this repository:
paseo plugin add sleeyax/paseo-plugins --path plugins/discord-rich-presence
paseo plugin lsPaseo clones the repository itself and tracks the default branch, so paseo plugin update <id> and paseo plugin status keep an installation current. claude-tty is the one that asks something of the host: it runs an adapter that has to be built, so installing and updating it run the build commands in its manifest and it needs pnpm on the daemon's PATH — or a path to an adapter built elsewhere, in its own Adapter executable setting.
To work on a plugin, install it from the working copy instead. A directory installation runs no build, so build what it needs first:
paseo plugin add "/absolute/path/to/paseo-plugins/plugins/discord-rich-presence"After making changes, run paseo plugin reload <id>. Paseo does not hot-reload plugins, and reloading is the compile check for the client and server bundles built from index.client.tsx and index.server.ts.
A plugin's version in its own package.json is its update identity: Paseo Cafe compares it against the installed copy's, and only a higher version offers an update.
Until it moves, installations stay on the old code however many commits land here.
release-please does the bumping, from the conventional commits on main: a feat takes a minor, a fix takes a patch, and a chore or docs releases nothing.
It keeps a single release pull request open and adds to it as more commits land, so a release can cover one pull request or a batch of them.
Merging it is the release: the new versions and each package's CHANGELOG.md are written, tagged, and published as GitHub releases.
Nothing reaches npm, since every package here is private.
Which package a commit bumps comes from the files it touches rather than its scope, so keep a change inside the plugin it belongs to.
claude-tty and the claude-tty-acp adapter it runs are versioned together, because a change to the adapter changes what the plugin ships.
skills/ holds agent skills for working on this repository, in the Agent Skills format, so any harness that reads them can use them.
.claude/skills/ and .agents/skills/ are symlinks into it — the first is where Claude Code looks, the second is where Codex, Cursor, OpenCode and GitHub Copilot do — and editing the file under skills/ updates every harness at once.
| Skill | Description |
|---|---|
update-plugins |
Rebuild the apps and reload the plugins this host has installed from this checkout. |
Working in this repository needs no installation; the symlinks are committed. To use a skill from another checkout, install it by name:
npx skills add sleeyax/paseo-plugins --skill update-pluginsPlugins keep their settings in $PASEO_HOME/plugin-settings/<plugin-id>/, managed by Paseo and removed with the plugin.
Versions from before Paseo 0.9 used ${XDG_CACHE_HOME:-~/.cache}/paseo-plugins/<plugin-id>/ instead; each plugin's README says whether it carries those settings over.