spoon helps you explore open source repos and dependencies with agents.
It removes friction from finding a repo, cloning or opening it, and launching your preferred agent CLI in the project immediately.
- Fast interactive repo selection from local clones.
- Search GitHub and pick a repo with fuzzy selection.
- Open exact repos directly with
org/repoor full URL. - Launch with configurable aliases (
claude,codex, custom commands). - Keep your local cache clean with TTL-based purge.
Requirements:
- bun
- fzf
- GitHub CLI (
gh) - Agent CLI commands you want to launch (
claude,codex, wrappers, etc.)
bun install
bun link| Command | Description |
|---|---|
spoon |
Open a local repo interactively. |
spoon <org/repo> |
Open by exact match. |
spoon <url> |
Open by full GitHub URL. |
spoon <search> |
Search GitHub and select interactively. |
spoon <org/repo> [-l <alias>] [-b <branch>] |
Open with launch alias and/or branch override. |
spoon <org/repo> [-- <command...>] |
Override launch command for one run. |
spoon ls |
List local repos and history entries. |
spoon add <repo> [-b <branch>] |
Resolve or clone a repo without launching. |
spoon context |
Interactively select history repos to link into .spoon/. |
spoon context <repo> [--name <name>] |
Link repo context into the current project's .spoon/. |
spoon context ls |
List context links in the current project. |
spoon context remove [<repo-or-name>] |
Remove context links by ref or interactive picker. |
spoon remove |
Interactively select local repos to remove. |
spoon config |
Open config file in your system default app. |
spoon help [command] |
Show help. |
spoon <command> --help |
Show command-specific help. |
Open local repo interactively
Description: Open a local repo from an interactive picker.
Syntax:
spoonExample:
spoonOpen by exact repo or URL
Description: Open or clone directly using exact org/repo or full URL.
Syntax:
spoon <org/repo>
spoon <url>Examples:
spoon sveltejs/kit
spoon https://github.com/sveltejs/svelteSearch and select from GitHub
Description: Search GitHub repos, then pick one interactively.
Syntax:
spoon <search>Example:
spoon svelteUse launch, branch, and command overrides
Description: Control how the selected repo is launched.
Syntax:
spoon <org/repo> -l <alias>
spoon <org/repo> -b <branch>
spoon <org/repo> -- <command...>Examples:
spoon sveltejs/kit -l x
spoon sveltejs/kit -b next
spoon sveltejs/kit -- claude --continueAdd repo without launching
Description: Resolve or clone a repo using the same lookup flow as spoon <query>, but do not launch an agent process.
Syntax:
spoon add <org/repo>
spoon add <url>
spoon add <search>
spoon add <org/repo> -b <branch>Examples:
spoon add sveltejs/kit
spoon add https://github.com/sveltejs/svelte
spoon add svelte
spoon add sveltejs/kit -b nextLink repo context into this project
Description: Create a symlink in the current working directory under .spoon/ that points to a locally cached repo. Default links use .spoon/<org>_<repo>; --name uses .spoon/<name>.
Syntax:
spoon context
spoon context <org/repo>
spoon context <repo> --name <name>Examples:
spoon context
spoon context sveltejs/kit
spoon context sveltejs/kit --name kitList context links
Description: Show context links currently present in this project's .spoon/ directory.
Syntax:
spoon context lsExample:
spoon context lsRemove context links
Description: Remove one or more context links from this project's .spoon/ directory.
Syntax:
spoon context remove
spoon context remove <repo-or-name>Examples:
spoon context remove
spoon context remove sveltejs/kit
spoon context remove kitList repos
Description: Print locally available repos and historical repos no longer present.
Syntax:
spoon lsExample:
spoon lsRemove repos
Description: Interactively select one or more local repos to remove.
Syntax:
spoon removeExample:
spoon removeOpen config
Description: Open spoon config file in your default system app.
Syntax:
spoon configExample:
spoon configShow help
Description: Show global help or command-specific help.
Syntax:
spoon help [command]
spoon <command> --helpExample:
spoon ls --helpConfig path:
~/.config/spoon/config.jsonExample config:
{
"launch": {
"c": "claude",
"x": {
"name": "Codex",
"command": "codex"
},
"t": {
"name": "AI Tmux",
"command": "tmux new -A -s ai && claude"
}
},
"ttlMs": 1209600000,
"baseDir": "~/ai-scratch/gh"
}Notes:
- Default launch alias is the first key in
launch. - Launch entries support both
alias: commandandalias: { "name": "...", "command": "..." }. - For
alias: command, the launch name is inferred from the command (for example,"x": "codex"showsCodex). - Repos are purged by TTL on invocation after local repo count grows (10+ repos).
MIT