{"id":35419761,"url":"https://github.com/neiii/bridle","last_synced_at":"2026-01-13T19:50:42.036Z","repository":{"id":331710759,"uuid":"1123850399","full_name":"neiii/bridle","owner":"neiii","description":"TUI / CLI config manager for agentic harnesses (Amp, Claude Code, Opencode, Goose)","archived":false,"fork":false,"pushed_at":"2026-01-10T22:41:52.000Z","size":8309,"stargazers_count":333,"open_issues_count":7,"forks_count":12,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-01-11T06:52:44.545Z","etag":null,"topics":["ai","ampcode","claude-code","cli","configuration","mcp","opencode","rust","terminal","tui"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/neiii.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-27T19:02:08.000Z","updated_at":"2026-01-11T00:59:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/neiii/bridle","commit_stats":null,"previous_names":["neiii/bridle"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/neiii/bridle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neiii%2Fbridle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neiii%2Fbridle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neiii%2Fbridle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neiii%2Fbridle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/neiii","download_url":"https://codeload.github.com/neiii/bridle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/neiii%2Fbridle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28397943,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T14:36:09.778Z","status":"ssl_error","status_checked_at":"2026-01-13T14:35:19.697Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","ampcode","claude-code","cli","configuration","mcp","opencode","rust","terminal","tui"],"created_at":"2026-01-02T16:16:12.465Z","updated_at":"2026-01-13T19:50:42.031Z","avatar_url":"https://github.com/neiii.png","language":"Rust","funding_links":[],"categories":["MCP Clients","🚀 AI Tools for Vim, Neovim, and Terminal","📚 Projects (2474 total)"],"sub_categories":["CLI Tools","Tools \u0026 Libraries"],"readme":"![Bridle](assets/bridle_header.png)\n\n# Bridle\n\nUnified configuration manager for AI coding assistants. Manage profiles, install skills/agents/commands, and switch configurations across Claude Code, OpenCode, Goose, and Amp.\n\n\u003e [!WARNING]\n\u003e If you're on a version before 0.2.2, please update immediately. Older versions had a critical bug that could cause data loss during profile switches.\n\n## Installation\n\n```bash\n# Homebrew\nbrew install neiii/bridle/bridle\n\n# Cargo\ncargo install bridle\n\n# From source\ngit clone https://github.com/neiii/bridle \u0026\u0026 cd bridle \u0026\u0026 cargo install --path .\n```\n\n## Quick Start\n\n```bash\n# Launch the TUI\nbridle\n\n# See what's configured across all harnesses\nbridle status\n\n# Create a profile from your current config\nbridle profile create claude work --from-current\n\n# Switch between profiles\nbridle profile switch claude personal\n```\n\n![Screenshot](assets/screenshot.png)\n\n## \"Package Manager\" for your harness\n\nWith Bridle, you're able to install skills, agents, commands, and MCPs from any GitHub repository, similar to how Claude Code does it. With Bridle, however, you're not limited to just one harness; we auto-translate all the paths, namings, schemas, and configurations for you. \n\n```bash\n# Install from GitHub\nbridle install owner/repo\n\n# What happens:\n# 1. Bridle scans the repo for skills, agents, commands, and MCPs\n# 2. You select which components to install\n# 3. You choose target harnesses and profiles\n# 4. Bridle translates paths and configs for each harness automatically\n```\n\n**Why this matters:** A skill written for Claude Code uses `~/.claude/skills/`. The same skill on OpenCode lives at `~/.config/opencode/skill/`. MCPs follow different JSON/YAML schemas. Bridle handles all these differences for you.\n\n| Component | Claude Code | OpenCode | Goose |\n| --------- | ----------- | -------- | ----- |\n| Skills    | `~/.claude/skills/` | `~/.config/opencode/skill/` | `~/.config/goose/skills/` |\n| Agents    | `~/.claude/plugins/*/agents/` | `~/.config/opencode/agent/` | — |\n| Commands  | `~/.claude/plugins/*/commands/` | `~/.config/opencode/command/` | — |\n| MCPs      | `~/.claude/.mcp.json` | `opencode.jsonc` | `config.yaml` |\n\n## Core Concepts\n\n**Harnesses** are AI coding assistants: `claude`, `opencode`, `goose`, `amp`\n\n**Profiles** are saved configurations. Each harness can have multiple profiles (e.g., `work`, `personal`, `minimal`). Bridle copies the active profile's config into the harness's config directory when you switch.\n\n## Commands\n\n### Status \u0026 TUI\n\n| Command         | Description                                |\n| --------------- | ------------------------------------------ |\n| `bridle`        | Launch interactive TUI                     |\n| `bridle status` | Show active profiles across all harnesses  |\n| `bridle init`   | Initialize bridle config and default profiles |\n\n### Profiles\n\n| Command                                                 | Description                                 |\n| ------------------------------------------------------- | ------------------------------------------- |\n| `bridle profile list \u003charness\u003e`                         | List all profiles for a harness             |\n| `bridle profile show \u003charness\u003e \u003cname\u003e`                  | Show profile details (model, MCPs, plugins) |\n| `bridle profile create \u003charness\u003e \u003cname\u003e`                | Create empty profile                        |\n| `bridle profile create \u003charness\u003e \u003cname\u003e --from-current` | Create profile from current config          |\n| `bridle profile switch \u003charness\u003e \u003cname\u003e`                | Activate a profile                          |\n| `bridle profile edit \u003charness\u003e \u003cname\u003e`                  | Open profile in editor                      |\n| `bridle profile diff \u003charness\u003e \u003cname\u003e [other]`          | Compare profiles                            |\n| `bridle profile delete \u003charness\u003e \u003cname\u003e`                | Delete a profile                            |\n\n### Installing \u0026 Uninstalling\n\n| Command                                | Description                                           |\n| -------------------------------------- | ----------------------------------------------------- |\n| `bridle install \u003csource\u003e`              | Install skills/MCPs from GitHub (`owner/repo` or URL) |\n| `bridle install \u003csource\u003e --force`      | Overwrite existing installations                      |\n| `bridle uninstall \u003charness\u003e \u003cprofile\u003e` | Interactively remove components [experimental]        |\n\n### Configuration\n\n| Command                           | Description          |\n| --------------------------------- | -------------------- |\n| `bridle config get \u003ckey\u003e`         | Get a config value   |\n| `bridle config set \u003ckey\u003e \u003cvalue\u003e` | Set a config value   |\n\n**Config keys:** `profile_marker`, `editor`, `tui.view`, `default_harness`\n\n### Output Formats\n\nAll commands support `-o, --output \u003cformat\u003e`:\n- `text` (default) — Human-readable\n- `json` — Machine-readable\n- `auto` — Text for TTY, JSON for pipes\n\n## Configuration\n\nBridle stores its config at `~/.config/bridle/config.toml`:\n\n```toml\n[active]\nclaude = \"work\"\nopencode = \"default\"\n\nprofile_marker = false  # Create marker files for debugging\neditor = \"code --wait\"  # Editor for `profile edit`\n\n[tui]\nview = \"Dashboard\"      # Will add more later :P \n```\n\n## Supported Harnesses\n\n| Harness     | Config Location         | Status       |\n| ----------- | ----------------------- | ------------ |\n| Claude Code | `~/.claude/`            | Full support |\n| OpenCode    | `~/.config/opencode/`   | Full support |\n| Goose       | `~/.config/goose/`      | Full support |\n| Amp         | `~/.amp/`               | Experimental (ish) |\n\n## Honorable Mentions\n- Thank you Melvyn for [pointing out my stupidity](https://x.com/melvynxdev/status/2007312037920289275?s=20)\n- Thank you Theo for [giving me a chance to show my work](https://x.com/theo/status/2007255666256425431)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneiii%2Fbridle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneiii%2Fbridle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneiii%2Fbridle/lists"}