Autonomous AI Consulting Agency β Business in a Box
A fully autonomous AI consulting agency powered by a swarm of specialized LLM agents, a Starlette REST API, and a Next.js client portal with a subscription-credit billing model.
Agent-Puter is a self-contained, production-ready AI consulting agency platform. A client visits the portal, describes their project in plain English, receives an AI-generated proposal, and uses subscription credits to kick off the autonomous agent swarm. A team of specialized AI agents handles everything β research, engineering, QA β then delivers a live demo.
Client visits portal
β
βΌ
/consult βββ Sales Agent (live AI chat, scopes the project)
β
βΌ
/proposal βββ Proposal (problem/solution, plan, ETA, credit cost)
β
βΌ
Execute with credits βββ Deduct credits from subscription balance
β
βΌ β Agent Swarm kicks off autonomously βββββββββββββββββββββββ
β β
β CEO βββΊ PM βββΊ Engineer / Researcher βββΊ QA βββΊ CEO approvesβ
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
/demo βββ Auto-deployed sandbox delivery
β
βΌ
/status βββ Real-time task progress tracker (auto-refreshes every 8s)
Three components, one docker compose up:
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β frontend/ Next.js 16 (port 3000) β
β βββ / Landing page β
β βββ /consult AI consultation chat (SSE) β
β βββ /dashboard User dashboard & projects β
β βββ /proposal/[id] Proposal + credit CTA β
β βββ /billing Subscription & credit mgmt β
β βββ /demo/[id] Sandbox demo viewer β
β βββ /status/[id] Live progress tracker β
β β
β lib/api.ts Typed REST API client β
β lib/auth.ts GitHub OAuth session β
β lib/billing.ts Client-side billing mock β
βββββββββββββββββββββββ¬ββββββββββββββββββββββββββββ
β REST / JSON
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β src/agent_puter/swarm/ Starlette (port 9999) β
β β
β ββ Client API ββββββββββββββββββββββββββββββββ β
β GET /api/auth/github β
β GET /api/auth/callback β
β GET /api/auth/me β
β POST /api/auth/logout β
β POST /api/consult/start β
β POST /api/consult/{id}/message β
β POST /api/consult/{id}/stream (SSE) β
β GET /api/consult/{id} β
β POST /api/consult/{id}/complete β
β GET /api/projects β
β GET /api/projects/{id} β
β GET /api/projects/{id}/proposal β
β POST /api/projects/{id}/demo-url β
β GET /api/projects/{id}/demo β
β GET /api/projects/{id}/usage β
β POST /api/projects/{id}/push-github β
β POST /api/payments/deposit β
β POST /api/payments/final β
β POST /api/payments/webhook β
β GET /api/payments/{id}/status β
β GET /api/admin/* (X-Admin-Key required) β
β β
β ββ Agent A2A Endpoints βββββββββββββββββββββββ β
β / CEO Agent (root) β
β /sales/* Sales Agent β
β /pm/* Project Manager β
β /product-manager/* Product Manager Agent β
β /researcher/* Researcher β
β /engineer/* Engineer β
β /qa/* QA Agent β
β /deliveries/* Static sandbox files β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
Seven specialized agents, each a self-contained A2A ASGI app:
| Agent | Mount | Role | Key Tools |
|---|---|---|---|
| CEO | / |
Strategic goals, token budgets, final approval | allocate_budget, approve_delivery, publish_goal |
| Sales | /sales |
Client intake, project brief creation | create_project_brief, send_proposal |
| PM | /pm |
Task decomposition, milestone tracking | create_task_list, update_task_status |
| Product Manager | /product-manager |
User stories, acceptance criteria | write_user_stories, prioritize_features |
| Researcher | /researcher |
Web research, document summarization | web_search, summarize_docs |
| Engineer | /engineer |
Code generation, file I/O, sandbox deploy | write_file, read_file, run_tests, deploy_to_sandbox |
| QA | /qa |
Output review, PASS/FAIL verdicts | review_output, check_standards |
All inter-agent calls use the A2A protocol (HTTP via fasta2a.A2AClient). No direct Python .run() calls between agents β every agent is addressed only by its mounted HTTP URL.
Project execution is billed in credits drawn from a subscription balance. All billing state is managed client-side via localStorage (frontend mock β no backend billing calls).
| Plan | Price | Credits / Month |
|---|---|---|
| Free | $0 | 0 β purchase credits to execute |
| Starter | $49/month | 30 |
| Pro | $149/month | 100 |
| Business | $399/month | 300 |
Credits roll over; they do not expire. Monthly grants accumulate on top of your existing balance.
Top-up credits are available on Starter, Pro, and Business plans. The Free tier cannot purchase packs.
| Pack | Credits | Price |
|---|---|---|
| Starter pack | 10 | $12 |
| Standard pack | 30 | $32 |
| Power pack | 100 | $99 |
Credits are calculated from the proposal's estimated hours using the same per-million-token structure as LLM providers:
| Token type | Rate |
|---|---|
| Input tokens | 3 credits / 1M tokens |
| Output tokens | 15 credits / 1M tokens |
| Throughput estimate | 75,000 tokens / hour of agent work |
| Input/output ratio | 70% input, 30% output |
Formula: totalCredits = (inputTokens / 1M Γ 3) + (outputTokens / 1M Γ 15)
- uv β Python package manager
- Node.js 20+ and npm
- A Puter.js account for free LLM inference (or any OpenAI-compatible API)
- A Stripe account (test keys work fine)
- A GitHub OAuth App (optional β required for the login button and GitHub delivery features)
git clone https://github.com/vizionik25/agent-puter.git
cd agent-puter
cp .env.example .env
# Edit .env: fill in PUTER_AUTH_TOKEN, PUTER_MODEL, PUTER_API_BASE,
# Stripe keys, and (optional) GitHub OAuth varsGitHub login (optional): Create an OAuth App at github.com/settings/developers. Set the callback URL to
http://localhost:3000/api/auth/callback. Copy the client ID and secret intoGITHUB_CLIENT_IDandGITHUB_CLIENT_SECRETin.env. SetSESSION_SECRETto any strong random string.
uv sync
uv run agent-puter
# β http://localhost:9999
# β http://localhost:9999/health (swarm status)
# β http://localhost:9999/docs (CEO agent interactive docs)Or install from PyPI and run globally:
uv tool install agent-puter
agent-putercd frontend
npm install
npm run dev
# β http://localhost:3000stripe listen --forward-to localhost:9999/api/payments/webhookcp .env.example .env # fill in secrets
docker compose up --build -d
# Frontend: http://localhost:3000
# Backend: http://localhost:9999| Variable | Required | Default | Description |
|---|---|---|---|
PUTER_AUTH_TOKEN |
Yes | β | Puter.js session token (used as LLM API key) |
PUTER_MODEL |
Yes | β | LiteLLM model string, e.g. openai/claude-sonnet-4-5 |
PUTER_API_BASE |
Yes | β | LLM endpoint, e.g. https://api.puter.com/puterai/openai/v1 |
STRIPE_SECRET_KEY |
No | β | Stripe secret key (sk_test_...) |
STRIPE_PUBLISHABLE_KEY |
No | β | Stripe publishable key (pk_test_...) |
STRIPE_WEBHOOK_SECRET |
No | β | Stripe webhook signing secret (whsec_...) |
NEXT_PUBLIC_API_URL |
No | "" |
Frontend β backend URL. Empty = relative /api/* (Docker). Set to http://localhost:9999 for local dev. |
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY |
No | β | Stripe publishable key for frontend Stripe Elements |
STORAGE_BACKEND |
No | memory |
memory, json_file, or puter_kv |
STORAGE_PATH |
No | ./data/store.json |
Path for json_file backend |
PUTER_KV_BASE |
No | https://api.puter.com/kv |
Override for puter_kv backend endpoint |
ADMIN_API_KEY |
No | β | Protects all /api/admin/* routes. Unset = admin disabled. |
AGENCY_API_KEYS |
No | β | Multi-tenancy: key1:tenant1,key2:tenant2 |
SMTP_HOST |
No | β | SMTP server for email notifications |
SMTP_PORT |
No | 587 |
SMTP port |
SMTP_USER |
No | β | SMTP login |
SMTP_PASS |
No | β | SMTP password or app password |
FROM_EMAIL |
No | SMTP_USER |
Sender address for notifications |
FRONTEND_URL |
No | http://localhost:3000 |
Base URL for email action links |
GITHUB_CLIENT_ID |
No | β | GitHub OAuth App client ID. Required for GitHub login. |
GITHUB_CLIENT_SECRET |
No | β | GitHub OAuth App client secret. Required for GitHub login. |
SESSION_SECRET |
No | random | HMAC key for signing session tokens. Set to a strong random string in production. |
MCP_SERVER_URL |
No | β | MCP server URL; enables MCP tools on Researcher + Engineer |
agent-puter/
βββ src/agent_puter/
β βββ __init__.py
β βββ agent-logic-example.py Single-agent reference example
β βββ swarm/
β βββ main.py Starlette app β mounts agents + API
β βββ server.py uvicorn launcher
β βββ agency.py Agency orchestrator (business loop)
β βββ models.py Pydantic data models
β βββ base_agent.py LiteLLMModel factory
β βββ middleware.py Multi-tenancy (X-Agency-Key)
β βββ notifications.py SMTP email notifications
β βββ ceo_agent.py
β βββ sales_agent.py
β βββ pm_agent.py
β βββ product_manager_agent.py
β βββ researcher_agent.py
β βββ engineer_agent.py
β βββ qa_agent.py
β βββ api/
β βββ __init__.py Aggregates all API routes
β βββ _store.py Legacy alias (delegates to store.py)
β βββ store.py Pluggable storage backends
β βββ auth.py /api/auth/* routes (GitHub OAuth)
β βββ consultation.py /api/consult/* routes
β βββ github_delivery.py Push deliverables to GitHub repo
β βββ projects.py /api/projects/* routes
β βββ payments.py /api/payments/* routes
β βββ admin.py /api/admin/* routes
β
βββ frontend/
β βββ app/
β β βββ layout.tsx Root layout + nav + UserMenu
β β βββ page.tsx Landing page
β β βββ consult/page.tsx Consultation chat (SSE streaming)
β β βββ dashboard/page.tsx User dashboard & project management
β β βββ proposal/[id]/page.tsx Proposal + credit execution CTA
β β βββ billing/page.tsx Subscription & credit management
β β βββ demo/[id]/page.tsx Sandbox demo viewer
β β βββ status/[id]/page.tsx Real-time task progress
β βββ components/
β β βββ UserMenu.tsx GitHub auth nav menu + dropdown
β β βββ MockStripeModal.tsx Simulated payment modal
β βββ lib/
β β βββ api.ts Typed REST client
β β βββ auth.ts GitHub OAuth session helpers
β β βββ billing.ts Client-side billing (localStorage)
β βββ next.config.ts Standalone output mode
β
βββ Dockerfile Backend multi-stage build
βββ frontend/Dockerfile Frontend multi-stage build (Node 22)
βββ docker-compose.yml Full stack
βββ docker-compose.backend.yml Backend only
βββ pyproject.toml
βββ .env.example
- Architecture β system design, agent communication, data flow, storage
- API Reference β every endpoint with request/response tables
- Getting Started β local dev setup, first consultation walkthrough
- Deployment β Docker Compose, environment reference, Stripe production
MIT Β© 2026 Charles Nichols β vizionikmedia.com