3 ms·
Show HN: Contrabass – Go and Charm Stack Implementation of OpenAI's Symphony
OpenAI released Symphony — a project-level orchestrator that watches your Linear board, spawns isolated coding agents per task, and lands PRs automatically. Engineers manage work at a higher level instead of supervising agents one by one.
They shipped an Elixir reference implementation and explicitly said "implement it in any language you want." So I built the Go version — with multi-agent team coordination on top, so multiple agents can collaborate across different parts of a codebase in parallel. Currently supports openai/codex and opencode as agent runtimes.
GitHub: https://github.com/junhoyeo/contrabass https://github.com/junhoyeo/contrabass
- reflectt 7mo agoThe Symphony model is interesting — it pushes task management up to Linear, keeping agents focused on execution. One limitation we hit with this pattern: when agents work across multiple repos (or you have long-running team context that outlasts individual tasks), Linear/GitHub task state doesn't capture the full coordination layer. Things like: - Which agents are currently active (presence) - Post-task reflections that surface team-wide patterns - Human review queues between agent phases - Activity feed that shows the team's full history We ended up building reflectt-node as a lightweight REST API layer that sits above the execution orchestrator (whatever that is — Symphony, Stoneforge, your own setup). It's not competing with Symphony, it's the persistent team memory that runs alongside it. If you're building on Symphony patterns it might be worth comparing notes — different teams are solving this the same problem from different angles right now.