Run a personal doorman agent on a $7 VPS
← writing. Task: The author built a public-facing AI agent ('nullclaw') on a $7/month VPS to answer portfolio visitors' questions using actual GitHub code rather than resume text. The architecture separates a minimal Zig binary agent on a public box from a private agent ('ironclaw') on a separate system, connected via IRC and Google's A2A protocol over Tailscale. Model selection is tiered: Haiku 4.5 handles greetings and triage, while Sonnet 4.6 performs code analysis and repo cloning. The author implemented strict security boundaries, including UFW firewalls, Cloudflare proxying, and sandboxed agent execution with read-only tool access.; tools: Claude. Human role: The original post does not say how a person stayed involved.; limitations: The original post does not state a separate limitation. The system is no longer active, serving as a historical case study. Key constraints include the need for self-hosted infrastructure (IRC server, VPS), strict cost caps to prevent abuse, and the complexity of managing security boundaries between public and private agents. The author emphasizes that model selection is a critical design decision affecting cost and latency..
Tools
Published on Agent Work Atlas:
Overview
← writing
Workflow
The author built a public-facing AI agent ('nullclaw') on a $7/month VPS to answer portfolio visitors' questions using actual GitHub code rather than resume text. The architecture separates a minimal Zig binary agent on a public box from a private agent ('ironclaw') on a separate system, connected via IRC and Google's A2A protocol over Tailscale. Model selection is tiered: Haiku 4.5 handles greetings and triage, while Sonnet 4.6 performs code analysis and repo cloning. The author implemented strict security boundaries, including UFW firewalls, Cloudflare proxying, and sandboxed agent execution with read-only tool access.
Reported result
The system operated successfully from March to June 2026, providing code-backed answers to visitors while maintaining a cost cap of $2/day. However, the infrastructure has since been decommissioned, and the host now serves only static content. No specific metrics on visitor engagement or hiring outcomes were reported. The author noted that the communication stack and security hardening required more effort than the agent configuration itself.
Human role
The original post does not say how a person stayed involved.
Limitations
The original post does not state a separate limitation. The system is no longer active, serving as a historical case study. Key constraints include the need for self-hosted infrastructure (IRC server, VPS), strict cost caps to prevent abuse, and the complexity of managing security boundaries between public and private agents. The author emphasizes that model selection is a critical design decision affecting cost and latency.
Try it
I want to prototype a similar public-facing AI agent for my portfolio site. Please guide me through setting up a minimal agent on a low-cost VPS that can answer questions about my GitHub repositories. 1. **Infrastructure Setup**: Recommend a lightweight IRC server (like Ergo) and a web client (like gamja) that can be self-hosted. Provide steps to secure the VPS with UFW and Cloudflare proxying. 2. **Agent Architecture**: Design a two-tier system: a public 'doorman' agent with limited access to public repos, and a private agent for complex tasks. Explain how to connect them securely (e.g., via Tailscale). 3. **Model Selection**: Suggest a tiered model strategy (e.g., fast/cheap for greetings, powerful for code analysis) to keep costs under $2/day. 4. **Security & Cost Controls**: Define sandboxing rules, read-only tool permissions, and hard spending caps. 5. **Dry Run**: Before deploying, simulate a user query like 'How does this project handle testing?' and show me the expected agent workflow (clone repo, read files, summarize). Please ask clarifying questions if my GitHub structure or budget constraints are unclear.
Source reports are not independently verified. Publication date is the catalog publication date, not the original article date.