Engineering Blog

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

  1. 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.

  2. Git Worktree over Git Clone Symphony’s default behavior is to git clone the repository for each task. However, since the repositories already exist on my local machine, I linked the paths and changed the mechanism to use git worktree instead. This saves disk space and is significantly faster.

  3. 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 .gitignore and 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.

  4. Issue & PR Driven Pipeline I structured the entire workflow to follow a standard lifecycle: Create Issue -> Create PR -> Merge PR -> Close Issue.

  5. 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.

Join the Investigation

Get the latest updates on my projects and indie hacking journey directly in your inbox.

No spam. Unsubscribe anytime.