We Hired an Intern Named Gilfoyle · AnyFrame Blog · AnyFrame<br>Our newest team member is named Gilfoyle. He's an intern, and this week he<br>shipped more code to production than most of the humans on the team. One of his<br>pull requests added an entire feature, database migration and all. We merged it<br>without anyone else touching a line. He built the page you're reading, too. And<br>he did all of it under his own commit identity.
"Gilfoyle" isn't a person: he's our internal developer agent, an AI in a cloud<br>sandbox with our codebase checked out and a shell open. We named him after the<br>Silicon Valley character, the most arrogant, deadpan systems engineer on TV,<br>demoted to intern and somehow still our most productive headcount.
The punchline: we built AnyFrame, a control plane for sandboxed AI agents,<br>then pointed AnyFrame at AnyFrame. Gilfoyle runs on the product he ships.
What AnyFrame is
You define an agent: a repo, an install command, a system prompt, skills<br>(reusable playbooks), and connections to tools like Slack, Linear, or GitHub.<br>Then you boot it into an isolated cloud sandbox that can actually do the work. Not a chatbot that<br>drafts suggestions: a real machine with your code and a terminal, that opens<br>PRs, runs your tests, and ships. If you've wished Claude Code or Codex lived on<br>a server your team could @mention and trust with private repos, that's Gilfoyle.
Hiring him took ten minutes
We onboarded him the way any customer would, in three steps.
1. Create a template. A template is the blueprint: the repo (our monorepo),<br>the install command, the skills, and a system prompt carrying our conventions<br>and his personality. Anything spun up from it inherits the lot.
The template: define the blueprint once, reuse it for every agent.
2. Create the agent. Spin an agent off that template, pick the Claude<br>runtime (the model that actually drives him), and connect GitHub so he can clone<br>and push under his own commit identity.
Gilfoyle's config: runtime, repo, skills, triggers, and permissions in one place.
3. Point Discord at him. Switch on AnyFrame's Discord integration and aim it<br>at the agent. No glue code, no service to babysit.
The whole wiring: a Discord server, pointed at the Gilfoyle agent.
Now the workflow is just @mention him in any channel. He spins up a thread,<br>boots a fresh sandbox with the repo cloned, and streams the work back. Follow-up<br>messages go to the same sandbox; if it's evicted between turns, the next message<br>silently resumes from a snapshot. One thread = one sandbox = one unit of work,<br>so three people can put him on three tasks at once. He's an intern who clones<br>himself.
A typical brief: @ him, describe the change in plain English, get back to your day.
Giving him the whole company in one checkout
Two deliberate choices gave us the leverage: what he works on, and how he<br>proves it.
AnyFrame isn't one repo: it's a backend, a dashboard, an SDK, and a few<br>integrations evolving together. Point an agent at one and it's blind to the<br>rest, so we stitched everything into a single monorepo , one checkout with<br>every repo, each still pushing to its own remote. A task spanning the API, its<br>client, and the SDK is one coherent piece of work, not three context switches he<br>can't make.
Every repo as a submodule, one place to work from.
Then there are skills . The one that earned our trust is the proof-of-work<br>skill: every sandbox ships with Chromium and Playwright baked in, so when<br>Gilfoyle changes something you can see, he boots the dev server, drives a real<br>browser to the page, and staples a screenshot to the work.<br>He doesn't say the banner's fixed; he shows it fixed, on a phone-width<br>viewport. When a picture isn't enough, AnyFrame tunnels his sandbox to the<br>public internet and he drops a live URL to his running branch, before a line has<br>merged.
A real PR comment, proving a change with a screenshot, of this very post.
That collapses the review loop: an intern who announces he's done is a<br>liability; one who hands you a screenshot and a link to try is a colleague.
What he actually does
He ships code, from one-line fixes to whole features. Small end: "the<br>first-sandbox banner wraps to three lines on mobile, fix it" (commit<br>b1a4382), or correcting a wrong TTL in the docs. At the other end, PR #128,<br>recurring agent session scheduling, was opened autonomously under his own<br>identity and merged: a database table, a background scheduler, a migration, and<br>the UI below. Nobody else wrote a line.
A feature he shipped: any agent can now carry a cron schedule. The first one we set up wakes every weekday at 9am, hunts dead code, and opens a draft PR, no human in the loop.
He answers from context , too: "where do we set the idle-reaper timeout?"<br>comes back with a file path and a commit hash, not vibes.
The plan, and what's next
This is more ambitious than "we have a neat bot": we want Gilfoyle to be the<br>only way we develop AnyFrame. Every feature, every fix, routed through the<br>intern who lives in the...