Forking Symphony: Customizing with Github and Discord Integration
As mentioned in my previous Symphony review, I forked the project to modify it for Github and Discord integration and put it into practical use. Moving away from the default Linear and Slack setup, here is how I customized it to fit my workflow.
You can find my forked repository here: https://github.com/kimjj81/symphony
Key Modifications
-
Github Labels-based Workflow I added workflow states to Github using Labels. By installing the Github CLI (
gh), I enabled Symphony to manage the workflow directly through Github issues. -
Git Worktree over Git Clone Symphony’s default behavior is to
git clonethe repository for each task. However, since the repositories already exist on my local machine, I linked the paths and changed the mechanism to usegit worktreeinstead. This saves disk space and is significantly faster. -
Automated Local Environment Setup via Worktree Scripts I configured a script to run automatically after a worktree is created. This allows me to copy environment files (like
.env), which are excluded in.gitignoreand thus missed during a typical clone. This instantly sets up a working local testing environment. If you’ve been using worktrees with Codex, you probably already have a similar setup. -
Issue & PR Driven Pipeline I structured the entire workflow to follow a standard lifecycle:
Create Issue->Create PR->Merge PR->Close Issue. -
Webhook Integration and Polling Optimization The default setting polled the Github API every 8 seconds. To optimize this, I set up ngrok to handle operations via Webhook events. However, since webhook deliveries occasionally fail, I kept the polling mechanism as a fallback but increased the interval from 8 seconds to a more reasonable 30 seconds.
Pros: Reliable History and Tracking
When relying solely on Codex, the task history and context don’t persist well beyond the chat interface. Transitioning to an Issue and PR-based workflow ensures that every instruction and resulting change is clearly documented and tracked. This is by far the biggest advantage.
Cons: Friction in Rework
There is a slight inconvenience when a task requires rework. Previously, I could just type a quick follow-up in the Codex prompt. Now, I have to go to Github, leave a comment, and manually change the label to trigger the rework. (Of course, if you have Github properly connected, you can manage comments and labels directly within Codex, which mitigates this somewhat.)
Conclusion: From Instructing to Delegating
When using Codex on its own, it felt like I was directly ‘instructing’ an AI. However, after customizing Symphony and integrating it with an issue tracking system, the experience has shifted significantly. It now feels much more like ‘delegating’ tasks to an AI teammate. It has evolved from a simple coding assistant to an asynchronous collaborator.