A personal AI assistant that runs entirely through GitHub Issues and Actions. Like OpenClaw, but no servers or extra infrastructure.
Powered by the pi coding agent. Every issue becomes a chat thread with an AI agent. Conversation history is committed to git, giving the agent long-term memory across sessions. It can search prior context, edit or summarize past conversations, and all changes are versioned.
Since the agent can read and write files, you can build an evolving software project that updates itself as you open issues. Try asking it to set up a GitHub Pages site, then iterate on it issue by issue.
How it works
- Create an issue → the agent processes your request and replies as a comment.
- Comment on the issue → the agent resumes the same session with full prior context.
- Everything is committed → sessions and changes are pushed to the repo after every turn.
The agent reacts with 👀 while working and removes it when done.
Repo as storage
All state lives in the repo:
state/
issues/
1.json # maps issue #1 -> its session file
sessions/
2026-02-04T..._abc123.jsonl # full conversation for issue #1
Since sessions are in git, the agent can grep its own history and edit or summarize past conversations.
Setup
- Fork this repo
- Add your Anthropic API key - go to Settings → Secrets and variables → Actions and create a secret named
ANTHROPIC_API_KEY. - Open an issue - the agent starts automatically.
- Comment on the issue - the agent resumes where it left off.
Security
The workflow only responds to repository owners, members, and collaborators. Random users cannot trigger the agent on public repos.
If you plan to use gitclaw for anything private, make the repo private. Public repos mean your conversation history is visible to everyone, but get generous GitHub Actions usage.
Configuration
Edit .github/workflows/agent.yml to customize:
- Model: Add
--providerand--modelflags to thebunx picommand. - Tools: Restrict with
--tools read,grep,find,lsfor read-only analysis. - Thinking: Add
--thinking highfor harder tasks. - Trigger: Adjust the
on:block to filter by labels, assignees, etc.
Acknowledgments
Built on top of pi-mono by Mario Zechner.
Thanks to ymichael for nerdsniping me with the idea of an agent that runs in GitHub Actions.
