The repo IS the agent. Every action is a git commit. Fork the repo to clone the agent. Free compute via GitHub Actions. Self-evolving through its own PRs. It's like OpenClaw but with git as the backbone instead of a persistent process.
| Field | Value |
|---|---|
| Title | The Pope Bot — Autonomous AI Agent |
| Link | https://github.com/stephengpope/thepopebot |
| Tags | popebot, ai-agent, autonomous, github-actions, docker, pi-agent |
| Date Downloaded | 2026-02-25 |
The repo IS the agent. Every action is a git commit. Fork the repo to clone the agent. Free compute via GitHub Actions. Self-evolving through its own PRs. It's like OpenClaw but with git as the backbone instead of a persistent process.
Want to clone your agent? Fork the repo.
— PopeBot design philosophy
Every change is auditable and reversible. The git log IS the agent's memory.
— Stephen G. Pope
One task or hundreds in parallel
— all on GitHub Actions free tier. — PopeBot architecture
PopeBot by Stephen G. Pope is an autonomous AI agent framework where the repo IS the agent. Every action is a git commit. Want to clone your agent? Fork the repo. It uses a clever two-layer architecture: a Next.js Event Handler (chat, Telegram, cron, webhooks) creates job branches on GitHub, which trigger GitHub Actions to spin up Docker containers running the Pi coding agent. The agent works, commits results, opens a PR, and auto-merges. Free compute via GitHub Actions. Self-evolving through its own PRs. 780 stars, 393 forks, MIT licensed. It's like OpenClaw but with git as the backbone instead of a persistent process.
| Layer | Technology | Purpose |
|---|---|---|
| Event Handler | Next.js | Webhooks, Telegram chat, cron scheduling, web UI |
| Docker Agent | Pi coding agent in Docker | Autonomous task execution |
| Persistence | SQLite via Drizzle ORM | Users, chats, messages, API keys, notifications |
| Compute | GitHub Actions | Free cloud compute for agent jobs |
job/uuid branch via GitHub APIrun-job.ymlauto-merge.yml checks merge policy → squash merges| File | Purpose |
|---|---|
SOUL.md | Agent identity, personality, values |
EVENT_HANDLER.md | Event handler system prompt |
AGENT.md | Agent runtime environment config |
CRONS.json | Scheduled recurring jobs |
TRIGGERS.json | Webhook trigger definitions |
HEARTBEAT.md | Self-monitoring behavior |
JOB_SUMMARY.md | Prompt for summarizing completed jobs |
| Type | Uses LLM? | Runtime | Cost |
|---|---|---|---|
agent | Yes — full Docker container with Pi | Minutes to hours | LLM API + GH Actions minutes |
command | No — runs shell command directly | Milliseconds to seconds | Free |
webhook | No — makes HTTP request | Milliseconds to seconds | Free |
AGENT_*) are exported as env vars but filtered from LLM's bash via the env-sanitizer extensionAGENT_LLM_*) are available to the agent for things like browser logins and skill API keysecho $ANTHROPIC_API_KEY returns empty — the agent can use the SDK but can't read the keyALLOWED_PATHS — by default only /logs can be auto-merged| Method | Description |
|---|---|
| Web Chat | Built-in Next.js UI with streaming, file uploads, chat history |
| Telegram | Chat + voice notes (Whisper transcription) |
| Webhooks | POST to /api/create-job with API key |
| Cron | Scheduled jobs via CRONS.json |
| Swarm page | Monitor active/completed jobs, cancel/rerun |
Skills live in .pi/skills/ and extend the agent's capabilities. Bundled skills include Brave Search and browser tools (Puppeteer + headless Chrome). The Pi skill guide is in config/PI_SKILL_GUIDE.md.
Three steps:
mkdir my-agent && cd my-agent && npx thepopebot@latest init — scaffolds Next.js projectnpm run setup — wizard handles prerequisites, GitHub repo, PAT, API keys, secretsdocker compose up -d — starts the agentRequires: Node.js 18+, Git, GitHub CLI, Docker, ngrok (for local dev).
Event Handler and Docker Agent can run different LLMs independently. Mix providers per role — Claude for chat, cheaper model for long-running jobs. Supports Anthropic, OpenAI, Google, and custom OpenAI-compatible endpoints (Ollama).
| Aspect | PopeBot | Sam (samir-bot) |
|---|---|---|
| Agent backbone | Git repo + GitHub Actions | Local process + Mongo |
| Compute | GitHub Actions (free) | Local machine |
| Job execution | Docker containers per job | Cursor sub-agents |
| Persistence | SQLite (Drizzle) | MongoDB |
| Chat interface | Web + Telegram | Slack + Dashboard |
| Scheduling | CRONS.json + node-cron | Dashboard cron (disc golf notifier) |
| Skills format | .pi/skills/ with SKILL.md | skills/ with SKILL.md (same pattern) |
| Self-evolution | Agent opens PRs to modify itself | Agent edits its own AGENTS.md |
| Task coordination | Branch per job, auto-merge | Orchestrator with planner/worker queue |
| Cost | Free (GH Actions) + LLM API | Free (local) + LLM API |
env-sanitizer pattern is worth adopting. SDKs can read env vars but the LLM can't echo them.agent/command/webhook distinction is clean. Our orchestrator could benefit from lightweight command tasks that don't need a full agent.PopeBot is Stephen G. Pope's open-source autonomous AI agent framework that uses a clever insight: make the git repository the agent itself. Every action the agent takes is a git commit. Want to back up your agent? It's already version controlled. Want to clone it? Fork the repo. Want to see what it did at 3am? Check the git log.
The architecture is a two-layer system. A Next.js Event Handler runs persistently and handles all inbound communication — web chat, Telegram messages, webhook calls, and cron schedules. When a task needs autonomous execution, the Event Handler creates a job branch on GitHub. GitHub Actions detects the branch and spins up a Docker container running the Pi coding agent (with Puppeteer for browser automation). The agent works, commits its results, opens a PR, and the auto-merge workflow handles the rest. The user gets a Telegram notification when it's done.
The setup is polished — a three-step wizard handles everything from GitHub repo creation to API key management. The security model is thoughtful: secrets are exported as env vars but filtered from the LLM's bash environment via a custom extension, so the agent can use SDKs but can't leak keys. Auto-merge respects configurable path restrictions.
What makes it interesting compared to OpenClaw: it's git-native (not just a persistent process), it gets free compute via GitHub Actions, and every change is auditable/reversible. The tradeoff is latency — spinning up a Docker container per job takes longer than a persistent agent. But for tasks that take minutes to hours, that overhead is negligible.
The community is smaller than OpenClaw (780 stars vs 140k) but the architecture is arguably more elegant for developer use cases. Stephen Pope runs an "AI Architects" community on Skool and has an active YouTube presence teaching people to build with it.
For our setup, the most transferable ideas are: git-as-audit-log, the secret filtering pattern, and the clean agent/command/webhook action type distinction. We already share the SOUL.md and SKILL.md patterns.