A complete autonomous development system that enables AI agents to work on coding tasks independently, with full Git integration for committing and pushing changes. The system uses CloudFlare Workers for orchestration, Fly.io for running Claude Code CLI instances, and includes a full-featured web UI for fleet management.
This system enables fully autonomous software development using the Noderr methodology by:
- Running Claude Code CLI on Fly.io containers with persistent sessions
- Using CloudFlare Workers with Claude API for intelligent orchestration
- Automatically progressing through the Noderr 4-step Loop
- Maintaining context and state across development cycles
βββββββββββββββββββββββββββββββββββββββ
β CloudFlare Worker β
β (Intelligent Orchestrator) β
β β
β β’ Uses Claude Opus 4.1 API β
β β’ Analyzes agent output β
β β’ Determines next Noderr step β
β β’ Queues and executes tasks β
ββββββββββββββββ¬βββββββββββββββββββββββ
β
β HMAC-authenticated
β commands
βΌ
βββββββββββββββββββββββββββββββββββββββ
β Fly.io Container β
β (Claude Code CLI Instance) β
β β
β β’ Runs Claude with --dangerously- β
β skip-permissions flag β
β β’ Persistent tmux sessions β
β β’ Pre-authorized via config β
β β’ Executes Noderr prompts β
βββββββββββββββββββββββββββββββββββββββ
noderr-autonomous/
βββ cloudflare-worker/ # CloudFlare Worker for orchestration
β βββ worker.js # Main worker with API endpoints
β βββ orchestrator.js # Intelligent orchestration using Claude API
β βββ wrangler.toml # CloudFlare Worker configuration
β βββ package.json # Node.js dependencies
β
βββ fly-app-uncle-frank/ # Fly.io application
β βββ Dockerfile # Container definition
β βββ fly.toml # Fly.io configuration
β βββ inject_agent.py # HMAC-authenticated command injection
β βββ completion_monitor.py # Monitors Claude output changes
β βββ supervisor.conf # Process management
β βββ scripts/ # Initialization and management scripts
β βββ init-claude.sh
β βββ start.sh
β βββ save-claude-config.sh
β
βββ tests/ # Test scripts
βββ noderr-test.py
βββ test-auto-loop.py
βββ test-command-execution.py
βββ test-intelligent-orchestration.py
βββ test-real-loop.py
- CloudFlare account with Workers enabled
- Fly.io account
- Claude API key (Anthropic)
- Claude Code CLI subscription or API access
- Node.js and npm installed locally
- Python 3.x for running tests
cd cloudflare-worker
# Install dependencies
npm install
# Configure secrets
npx wrangler secret put CLAUDE_API_KEY --name noderr-orchestrator
# Enter your Claude API key when prompted
npx wrangler secret put HMAC_SECRET --name noderr-orchestrator
# Enter a secure secret for HMAC authentication
# Deploy the worker
npx wrangler deploycd fly-app-uncle-frank
# Create a new Fly.io app
fly launch --name your-app-name
# Set secrets
fly secrets set HMAC_SECRET="same-secret-as-cloudflare"
# Create persistent volume for Claude config
fly volumes create claude_data --size 1 --region ord
# Deploy the application
fly deploy
# Scale to ensure the volume is attached
fly scale count 1You need to authenticate Claude once. This can be done by:
- SSH into the Fly.io instance:
fly ssh console- Start Claude manually and follow authentication:
sudo -u claude-user tmux new-session -s claude-code
claude --dangerously-skip-permissions
# Follow the authentication prompts- Save the config:
/app/save-claude-config.shThe authentication will persist across deployments.
Edit cloudflare-worker/wrangler.toml to set your Fly.io endpoint:
[vars]
FLY_ENDPOINT = "https://your-app-name.fly.dev"Deploy the update:
cd cloudflare-worker
npx wrangler deployThe system can automatically start Noderr sessions:
curl https://your-worker.workers.dev/api/start-noderrTrigger orchestration to analyze state and send next command:
curl https://your-worker.workers.dev/api/orchestrateQueue a specific Noderr prompt:
curl -X POST https://your-worker.workers.dev/api/queue \
-H "Content-Type: application/json" \
-d '{"command": "Start a Noderr work session and review the project status"}'View system status and recent tasks:
curl https://your-worker.workers.dev/api/statusOpen the web dashboard:
https://your-worker.workers.dev/
The system automatically progresses through the 4-step Noderr Loop:
-
LOOP_1A: Propose Change Set
- Analyzes request and identifies affected NodeIDs
- Pauses for approval
-
LOOP_1B: Draft Specifications
- Creates detailed specs for each NodeID
- Pauses for approval
-
LOOP_2: Implement Change Set
- Builds all components
- Performs ARC verification
- Pauses for authorization
-
LOOP_3: Finalize and Commit
- Updates specs to "as-built" state
- Updates tracker and logs
- Creates git commit
The CloudFlare Worker uses Claude API to:
- Detect which Loop step is complete
- Generate appropriate approval/continuation commands
- Maintain context across the entire cycle
Run the test suite to verify functionality:
cd tests
# Test basic connectivity
python3 noderr-test.py
# Test intelligent orchestration
python3 test-intelligent-orchestration.py
# Test automatic loop continuation
python3 test-auto-loop.py
# Test command execution
python3 test-command-execution.py
# Test real Noderr loop
python3 test-real-loop.py- All communication uses HMAC-SHA256 authentication
- Claude runs with
--dangerously-skip-permissionsflag (required for autonomous operation) - Secrets are stored in CloudFlare and Fly.io secret stores
- Persistent storage is isolated per instance
cd cloudflare-worker
npx wrangler tailfly logs -a your-app-namefly ssh console -a your-app-name- Check supervisor status:
fly ssh console --command "supervisorctl status"- Check error logs:
fly ssh console --command "tail -50 /var/log/supervisor/tmux-claude.err.log"- Fix line endings if needed:
fly ssh console --command "tr -d '\r' < /app/start.sh > /tmp/start.sh && mv /tmp/start.sh /app/start.sh && chmod +x /app/start.sh"- Ensure Claude config exists:
fly ssh console --command "ls -la /data/.claude.json"- Restore config:
fly ssh console --command "/app/init-claude.sh"- Check CloudFlare Worker logs for errors
- Verify CLAUDE_API_KEY is set correctly
- Ensure HMAC_SECRET matches between services
CLAUDE_API_KEY: Anthropic API key for Claude Opus 4.1HMAC_SECRET: Shared secret for command authenticationFLY_ENDPOINT: URL of your Fly.io application
HMAC_SECRET: Same secret as CloudFlare WorkerSESSION_NAME: tmux session name (default: claude-code)CF_WORKER_URL: CloudFlare Worker URL for callbacks
This is an experimental system for autonomous development. Contributions are welcome!
MIT
- Built using Claude Code CLI by Anthropic
- Orchestrated with Claude Opus 4.1 API
- Based on the Noderr development methodology
- Deployed on CloudFlare Workers and Fly.io
Note: This system enables fully autonomous code execution. Use with appropriate caution and monitoring.