{"id":48565411,"url":"https://github.com/spencermarx/orc","last_synced_at":"2026-04-28T21:35:47.333Z","repository":{"id":345526117,"uuid":"1185429076","full_name":"spencermarx/orc","owner":"spencermarx","description":"A lightweight orchestration framework that piggybacks your local Agentic CLI setup. Intentionally simple. Yet powerful... like an army of Orcs 👹","archived":false,"fork":false,"pushed_at":"2026-04-01T20:01:56.000Z","size":2890,"stargazers_count":16,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-24T05:02:20.213Z","etag":null,"topics":["agentic-ai","agentic-framework","agentic-workflow","ai","ai-agent","ai-agents","ai-orchestration","ai-orchestrator","ai-tools","claude","claude-ai","claude-code","claude-code-skills","codex","codex-cli","opencode","orchestrator"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spencermarx.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"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":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-03-18T15:17:22.000Z","updated_at":"2026-04-21T04:55:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"001abe11-1972-4b8d-b46e-dff426c2f02d","html_url":"https://github.com/spencermarx/orc","commit_stats":null,"previous_names":["spencermarx/orc"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/spencermarx/orc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spencermarx%2Forc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spencermarx%2Forc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spencermarx%2Forc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spencermarx%2Forc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spencermarx","download_url":"https://codeload.github.com/spencermarx/orc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spencermarx%2Forc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32400868,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","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":["agentic-ai","agentic-framework","agentic-workflow","ai","ai-agent","ai-agents","ai-orchestration","ai-orchestrator","ai-tools","claude","claude-ai","claude-code","claude-code-skills","codex","codex-cli","opencode","orchestrator"],"created_at":"2026-04-08T13:00:22.271Z","updated_at":"2026-04-28T21:35:47.314Z","avatar_url":"https://github.com/spencermarx.png","language":"Shell","funding_links":[],"categories":["Multi-Agent Swarms"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/orc-cover.png\" alt=\"orc\" width=\"800\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eTurn one prompt into a team of AI agents that plan, build, review, and ship.\u003c/strong\u003e\n  \u003cbr /\u003e\n  \u003cem\u003eYour tools. Your workflow. Your rules. No daemon, no server, no lock-in.\u003c/em\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#quick-start\"\u003e\u003cimg src=\"https://img.shields.io/badge/get_started-5_minutes-00ff88?style=flat-square\" alt=\"Get Started\" /\u003e\u003c/a\u003e\n  \u003ca href=\"#configuration\"\u003e\u003cimg src=\"https://img.shields.io/badge/config-TOML-8b949e?style=flat-square\" alt=\"Config\" /\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/runtime-bash_3.2+-d29922?style=flat-square\" alt=\"Bash 3.2+\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/build_step-none-30363d?style=flat-square\" alt=\"No Build Step\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/framework_lock--in-zero-30363d?style=flat-square\" alt=\"No Lock-in\" /\u003e\n\u003c/p\u003e\n\n\u003e **orc** */ork/* — a creature known for strength in numbers, brutal efficiency, and an unwavering commitment to getting the job done. Also: an **orc**hestration layer for AI agents. Coincidence? Absolutely not.\n\n---\n\n## The Problem\n\nYou ask an AI agent to build a feature. It works for 20 minutes, dumps a half-finished diff, and you spend the afternoon cleaning up. Try three agents at once and you get merge conflicts, duplicated work, and zero visibility into what's happening.\n\nAI agents are powerful. But without structure — a plan, isolated workspaces, code review, and a delivery pipeline — they're chaos.\n\nOrc gives them structure.\n\n## Key Concepts\n\nFour ideas are all you need to understand orc:\n\n| Concept | What it is | Think of it as... |\n|---------|-----------|-------------------|\n| **Goal** | A deliverable with its own git branch. \"Add rate limiting\" is a goal. | A ticket on your board |\n| **Bead** | A focused work item within a goal. One engineer, one worktree, one bead. | A subtask — small enough to complete and review in one pass |\n| **Orchestrator** | An AI agent that coordinates work but never writes code. Three tiers: root (cross-project), project (manages goals), goal (manages beads). | A tech lead who delegates but never opens an IDE |\n| **Worktree** | An isolated git checkout. Every agent — engineers, goal orchestrators, and project orchestrators — works in its own copy of the repo. No conflicts, no pollution of your main workspace. | Each agent gets their own sandbox |\n\nEverything else is configuration. [Deep dive \u0026rarr;](docs/concepts.md)\n\n## The 30-Second Version\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/orc-30-sec-diagram.png\" alt=\"Orc lifecycle — one prompt fans out to parallel goals, each with its own plan, engineers, review loop, and delivery\" width=\"800\" /\u003e\n\u003c/p\u003e\n\nYou describe the work. Orc fans it out to parallel goals — each runs its own lifecycle: plan, decompose into work items, dispatch engineers in isolated worktrees, review every piece, merge, and deliver. Every phase is a configurable hook. [Deep dive into the lifecycle \u0026rarr;](docs/concepts.md#the-lifecycle)\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/orc-in-action.png\" alt=\"Orc in action — goal orchestrator managing beads while an engineer implements in an isolated worktree\" width=\"900\" /\u003e\n  \u003cbr /\u003e\n  \u003csub\u003eA goal orchestrator (left) dispatches and monitors engineers working in isolated worktrees (right).\u003c/sub\u003e\n\u003c/p\u003e\n\n## What Happens When You Run Orc\n\n```bash\norc myapp\n\u003e \"Add rate limiting to all public API endpoints. Use Redis for the token bucket.\"\n```\n\nHere is what happens next:\n\n1. **The project orchestrator investigates** — spawns scout agents to explore your codebase, understands the architecture, identifies relevant files and patterns.\n2. **It creates goals** — \"add-rate-limiting\" gets a dedicated branch (`feat/add-rate-limiting`).\n3. **The goal orchestrator plans** — if configured, a planner sub-agent creates design docs or specs using your tool (OpenSpec, Kiro, or plain markdown). You review if you want to.\n4. **It decomposes into beads** — the plan becomes focused work items: \"rate-limiter-middleware\", \"config-endpoint\", \"rate-limit-tests\".\n5. **Engineers dispatch** — each bead spawns an engineer in an isolated worktree. Three agents working in parallel, zero conflicts.\n6. **Worktrees bootstrap** — if configured, each worktree runs your setup instructions first: install deps, copy `.env` files, run codegen. Every agent starts with a working environment.\n7. **Review runs automatically** — each bead is reviewed before merging to the goal branch. Not approved? The engineer gets feedback and fixes it.\n8. **Delivery executes** — your configured pipeline runs: push the branch, create a PR, update the Jira ticket, archive the spec.\n9. **You come back to a clean goal branch** ready to merge — or an open PR ready to review.\n\n## Quick Start\n\n### Prerequisites\n\n| Tool | Purpose | Install |\n|------|---------|---------|\n| [Beads](https://github.com/thefinalsource/beads) (`bd`) | Work tracking (Dolt-backed) | See Beads repo |\n| [tmux](https://github.com/tmux/tmux) 3.0+ | Session management | `brew install tmux` / `apt install tmux` |\n| `git` | Worktrees and branching | Pre-installed on most systems |\n| `bash` 3.2+ | CLI runtime | Pre-installed on macOS and Linux |\n| Agent CLI | Your AI coding agents — `auto` detects what's installed | [Claude Code](https://docs.anthropic.com/en/docs/claude-code), [OpenCode](https://opencode.ai), [Codex](https://github.com/openai/codex), or [Gemini CLI](https://github.com/google-gemini/gemini-cli) |\n\nOptional: [`fzf`](https://github.com/junegunn/fzf) for the command palette and window chooser (graceful fallback without it). [`gh`](https://cli.github.com/) for auto-creating PRs.\n\n### Install\n\n```bash\ngit clone https://github.com/thefinalsource/orc.git\ncd orc \u0026\u0026 pnpm install\npnpm orc:install\n```\n\n\u003e This symlinks `orc` to your PATH, creates config files, and installs slash commands for your agent CLI.\n\n### Register a project\n\n```bash\norc add myapp /path/to/myapp\n# → registers the project, then prompts:\n#    Run guided config setup now? [Y/n]\n```\n\nPressing Enter launches `orc setup myapp` — a conversational agent that discovers your tools (planning, review, CI, ticketing) and assembles a tailored `.orc/config.toml`. Type `n` to skip and configure later.\n\n\u003e **What this touches in your project:** `orc add` initializes a `.beads/` directory for work tracking (via `bd init`) and adds orc runtime paths (`.beads/`, `.worktrees/`, `.goals/`, `.worker-status`, etc.) to your repo's `.git/info/exclude` so they're invisible to git. No files in your project are modified — orc uses git's built-in per-repo exclude, not your `.gitignore`.\n\n### Launch\n\n```bash\norc myapp             # Start the project orchestrator\norc myapp --yolo      # Full autonomy — no confirmation prompts\n```\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/orc-splash-screen.png\" alt=\"Orc splash screen\" width=\"700\" /\u003e\n\u003c/p\u003e\n\n[What does `orc add` touch in my project? \u0026rarr;](docs/setup.md) | [YOLO mode \u0026rarr;](docs/yolo-mode.md)\n\n## Usage\n\n### Multi-project orchestration\n\n```bash\norc                   # Root orchestrator — coordinates across all projects\n```\n\nTell it what you need across projects. It routes each piece to the right project orchestrator.\n\n### Single-project\n\n```bash\norc myapp             # Jump straight to one project\n```\n\nDescribe the work. The orchestrator decomposes, dispatches, reviews, and delivers.\n\n### Jump into a worktree\n\n```bash\norc myapp bd-a1b2     # Attach to an engineer's tmux pane\n```\n\nGive context, take over, or just watch. You're never locked out.\n\n[Configuration guide \u0026rarr;](docs/configuration.md) | [Planning lifecycle \u0026rarr;](docs/planning.md) | [Delivery pipeline \u0026rarr;](docs/delivery.md)\n\n## Architecture\n\n### The Lifecycle\n\nEvery goal follows the same configurable lifecycle:\n\n```\nInvestigate -\u003e Plan -\u003e Decompose -\u003e Dispatch -\u003e Setup -\u003e Build -\u003e Review -\u003e Deliver\n```\n\n| Phase | What happens | You configure |\n|-------|-------------|---------------|\n| **Investigate** | Scouts explore the codebase | (automatic) |\n| **Plan** | Planner creates design docs, specs, task lists | `plan_creation_instructions` |\n| **Decompose** | Goal orchestrator maps plan to beads | `bead_creation_instructions` |\n| **Dispatch** | Engineers spawn in isolated worktrees | `assignment_instructions` |\n| **Setup** | Worktree bootstrapping (deps, env, codegen) | `setup_instructions` |\n| **Build** | Engineers implement in parallel | (automatic) |\n| **Review** | Two-tier review loop | `review_instructions` |\n| **Deliver** | Push, PR, ticket updates | `on_completion_instructions` |\n\nEvery field is natural language. Empty = sensible default. [Full lifecycle deep dive \u0026rarr;](docs/concepts.md#the-lifecycle)\n\n### Agent Hierarchy\n\n```\nRoot Orchestrator --- cross-project coordination, message routing\n  +-\u003e Project Orchestrator --- creates goals, monitors progress (isolated worktree)\n        +-\u003e Goal Orchestrator --- owns one goal, manages the full lifecycle\n              +-\u003e Planner (ephemeral) --- creates plan artifacts\n              +-\u003e Scouts (ephemeral) --- investigate codebase\n              +-\u003e Worktree --- isolated git worktree per bead\n                    +-- Engineer (persistent) --- implements the bead\n                    +-- Reviewer (ephemeral) --- reviews the work\n```\n\nEach orchestrator tier routes user messages to the correct level — engineering feedback flows down to goal orchestrators, project-level decisions stay at the project tier, and cross-project coordination happens at root. [Concepts deep dive \u0026rarr;](docs/concepts.md) | [Supported agent CLIs \u0026rarr;](docs/agent-clis.md)\n\n## TUI Navigation\n\nOrc provides a navigation layer on top of tmux so you can move between agents without memorizing tmux keybindings. All features are enabled by default when `tui.enabled = true`.\n\n| Shortcut | Feature | Description |\n|----------|---------|-------------|\n| `^b Space` | **Command Palette** | Fuzzy-search any window or pane by name, role, or status. Live preview. |\n| `^b w` | **Window Chooser** | Hierarchical tree view — projects, goals, engineers — with live status indicators. |\n| `^b m` | **Context Menu** | Role-aware actions for the current pane (also: right-click or click the `⚔` logo). |\n| `^b ?` | **Help Overlay** | All keybindings, status icons, and role legend at a glance. |\n\n**Compact tabs** — Goal window tabs auto-abbreviate: `wrkbelt/WEN-949-booking-flow-builder-mobile-responsiveness` becomes `WEN-949`. Jira-style ticket prefixes are extracted automatically.\n\n**Breadcrumbs** — The status bar shows your position in the hierarchy: `⚔ orc ▸ myapp ▸ fix-auth ▸ bd-a1b2`.\n\n**Opt-in Alt shortcuts** — Set `keybindings.enabled = true` for prefix-free navigation (`Alt+[/]` prev/next, `Alt+p` palette, `Alt+w` chooser, `Alt+s` dashboard). All remappable.\n\nRequires `fzf` for palette and chooser popups — falls back to tmux `choose-tree` without it. Set `tui.enabled = false` to disable everything and use raw tmux. [Full TUI docs \u0026rarr;](docs/tmux-layout.md)\n\n## CLI Reference\n\n### Navigation\n\n```bash\norc                            # Root orchestrator\norc \u003cproject\u003e                  # Project orchestrator\norc \u003cproject\u003e \u003cbead\u003e           # Jump to an engineer's worktree\n```\n\n### Commands\n\n| Command | Description |\n|---------|-------------|\n| `orc init` | First-time setup |\n| `orc add \u003ckey\u003e \u003cpath\u003e` | Register a project |\n| `orc remove \u003ckey\u003e` | Unregister a project |\n| `orc list` | Show registered projects |\n| `orc status` | Dashboard |\n| `orc setup \u003cproject\u003e` | Guided config setup |\n| `orc doctor [--fix\\|--interactive]` | Validate config / migration |\n| `orc notify [--all\\|--clear\\|--goto N]` | View notifications |\n| `orc halt \u003cproject\u003e \u003cbead\u003e` | Stop an engineer |\n| `orc teardown [project] [bead]` | Cleanup |\n| `orc config [project]` | Edit config |\n| `orc board \u003cproject\u003e` | Board view |\n| `orc leave` | Detach from tmux |\n\nExit codes: `0` success, `1` usage error, `2` state error, `3` project not found.\n\n## Slash Commands\n\nSlash commands are how agents coordinate within orc. Each role has access to specific commands:\n\n| Command | Role | What it does |\n|---------|------|----------|\n| `/orc` | Any | Orientation |\n| `/orc:status` | Any | Dashboard |\n| `/orc:plan` | Orchestrator | Decompose into goals or beads |\n| `/orc:dispatch` | Orchestrator | Spawn workers |\n| `/orc:check` | Orchestrator | Poll statuses, clean orphan panes |\n| `/orc:complete-goal` | Goal Orch | Trigger delivery |\n| `/orc:view` | Orchestrator | tmux layouts |\n| `/orc:done` | Engineer | Signal review |\n| `/orc:blocked` | Engineer | Signal blocked |\n| `/orc:feedback` | Engineer | Address review feedback |\n| `/orc:leave` | Any | Detach |\n\n## Configuration\n\nConfig uses TOML with three-tier resolution (most specific wins):\n\n```\n{project}/.orc/config.toml -\u003e config.local.toml -\u003e config.toml\n```\n\nQuick examples:\n\n```toml\n# Planning — plug in your tool\n[planning.goal]\nplan_creation_instructions = \"/openspec:proposal\"\nbead_creation_instructions = \"Decompose from tasks.md. Each bead = one or more tasks.\"\nwhen_to_involve_user_in_plan = \"when the plan involves more than 3 beads\"\n\n# Delivery — describe your pipeline\n[delivery.goal]\non_completion_instructions = \"Push the branch, create a PR targeting main, update the Jira ticket.\"\nwhen_to_involve_user_in_delivery = \"always\"\n\n# Review — use your own tools\n[review.goal]\nreview_instructions = \"/ocr:review\"\nhow_to_determine_if_review_passed = \"No must-fix items in the review output\"\n\n# Worktree — project-specific bootstrapping for every new workspace\n[worktree]\nsetup_instructions = \"Run pnpm install. Copy .env from {project_root} to this directory.\"\n```\n\n[Full configuration reference \u0026rarr;](docs/configuration.md)\n\n## Troubleshooting\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e\u003ccode\u003ebd: command not found\u003c/code\u003e\u003c/strong\u003e\u003c/summary\u003e\n\nInstall [Beads](https://github.com/thefinalsource/beads). It's the work tracking layer orc depends on.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003etmux session died or agents are unresponsive\u003c/strong\u003e\u003c/summary\u003e\n\nJust run `orc` or `orc \u003cproject\u003e` again — it recreates the session and reattaches. To clean up stale state: `orc teardown`.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eEngineer is stuck or blocked\u003c/strong\u003e\u003c/summary\u003e\n\nThe `.worker-status` file in the worktree will say `blocked: \u003creason\u003e`. Options:\n- Provide context to unblock the engineer\n- Tear down and respawn: `orc teardown \u003cproject\u003e \u003cbead\u003e`, then re-dispatch\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eMerge conflict on bead merge\u003c/strong\u003e\u003c/summary\u003e\n\nOrc escalates merge conflicts to you — it never force-pushes or auto-resolves. Resolve manually on the goal branch, then continue.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eToo many workers / spawn blocked\u003c/strong\u003e\u003c/summary\u003e\n\nIncrease the limit: `orc config` then set `max_workers = 5` under `[defaults]`.\n\nOrc will notify you when an agent hits the worker limit — check `orc notify` for pending capacity alerts.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eAgents using the wrong CLI\u003c/strong\u003e\u003c/summary\u003e\n\nSet `agent_cmd = \"auto\"` to let orc detect the first installed CLI, or set it explicitly: `orc config` then `[defaults] agent_cmd = \"opencode\"`. Per-project overrides go in `{project}/.orc/config.toml`. See [Supported Agent CLIs](docs/agent-clis.md) for all options.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eHow do I know which CLI orc picked?\u003c/strong\u003e\u003c/summary\u003e\n\nWhen `agent_cmd = \"auto\"`, orc logs which CLI it detected on first use (e.g., `Auto-detected agent CLI: claude`). This appears once per orc command invocation. To check your resolved config at any time, look at the startup output or set the CLI explicitly to remove ambiguity.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCustom CLI not launching correctly\u003c/strong\u003e\u003c/summary\u003e\n\nIf your agent CLI uses non-standard flags, set `agent_template` to control the exact launch command:\n\n```toml\n[defaults]\nagent_cmd = \"my-agent\"\nagent_template = \"my-agent --system {prompt_file} --input {prompt}\"\n```\n\nCheck `packages/cli/lib/adapters/generic.sh` for the full template placeholder reference.\n\n\u003c/details\u003e\n\n## Learn More\n\n| Topic | Link |\n|-------|------|\n| Core concepts (goals, beads, orchestrators, worktrees) | [docs/concepts.md](docs/concepts.md) |\n| Full configuration reference | [docs/configuration.md](docs/configuration.md) |\n| Planning lifecycle | [docs/planning.md](docs/planning.md) |\n| Review loop | [docs/review.md](docs/review.md) |\n| Delivery pipeline | [docs/delivery.md](docs/delivery.md) |\n| Notifications | [docs/notifications.md](docs/notifications.md) |\n| Project setup \u0026 config doctor | [docs/setup.md](docs/setup.md) |\n| Supported agent CLIs | [docs/agent-clis.md](docs/agent-clis.md) |\n| tmux layout \u0026 TUI navigation | [docs/tmux-layout.md](docs/tmux-layout.md) |\n| Customizing personas | [docs/personas.md](docs/personas.md) |\n| YOLO mode | [docs/yolo-mode.md](docs/yolo-mode.md) |\n\n---\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eShell over runtime. Markdown is the control plane. Beads are the only state.\u003c/strong\u003e\n  \u003cbr /\u003e\n  \u003cem\u003eNow go. Release the horde.\u003c/em\u003e\n\u003c/p\u003e\n\n---\n\n## License\n\nSee [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspencermarx%2Forc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspencermarx%2Forc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspencermarx%2Forc/lists"}