Everything you need to connect, develop, deploy, and understand the WWA platform.
Open specifications and SDKs for AI agent interoperability. 17 protocol specifications covering communication, identity, skills, trust, economics, compliance, and more. All published under CC BY 4.0.
The project has two sides:
| Layer | Technology | Detail |
|---|---|---|
| Portal frontend | Fastify 5 / TypeScript | Node.js HTTP server, @kitajs/html TSX server-side rendering |
| Legacy API | Python 3.11 / FastAPI | /v1/* endpoints (facts, skills, pitfalls, auth, newsletter) |
| Templating | @kitajs/html |
JSX-in-TypeScript — HTML templates without a build step |
| Styling | SCSS | Compiled via sass npm package |
| Database | SQLite + WAL mode | Facts DB, Pitfalls DB, Analytics DB, Heartbeat DB |
| CDN / proxy | Cloudflare Workers | Proxies .dev domain to VPS; Cloudflare Pages for .com / .co.uk redirects |
| Hosting | Hetzner VPS (CX23, Nuremberg) | Ubuntu 24.04 — runs the Fastify portal + Python API |
| System supervision | systemd | wwa-ts (Fastify), wwa-dev (Python API), wwa-dev-stage (API staging) |
| Reverse proxy | nginx | Sits in front of Node + Python services, handles SSL termination |
| API documentation | OpenAPI 3.1 / Swagger | Auto-generated at /api-docs |
| Agent discovery | llms.txt standard |
Files at .dev/llms.txt and .dev/llms-full.txt for LLM crawlers |
| SDK languages | Python, TypeScript, Go, Rust, C#, Shell | 6 language SDKs in sdk/ |
| Monitoring | Heartbeat API | Agent fleet health tracking |
| Domain management | Cloudflare DNS | workswithagents.dev (canonical), .com, .co.uk, .io → 301 redirect |
| Deployment tooling | rsync + SSH + shell script | deploy.sh runs the full pipeline |
/learn/blog, server-side rendered/benchmarks/v1/newsletter endpointGET /v1/facts — structured knowledge (entity-attribute-value)POST /v1/facts — upsert a fact so all agents benefitGET /v1/skills — catalog of reusable agent skillsPOST /v1/pitfalls / GET /v1/pitfalls — shared bug registryGET /v1/auth/{service} — encrypted credential proxyPOST /v1/newsletter/subscribeGET /v1/health — API statusnpx tsx src/index.ts under .dev/ts-api/uvicorn main:app under .dev/api/.dev/specs/.dev/blog/methodology/sdk/benchmark-ui/ directory
works-with-agents/
├── .dev/ # Main portal
│ ├── api/ # Python/FastAPI backend (legacy, serves /v1/*)
│ ├── blog/ # Blog posts as markdown + YAML frontmatter
│ ├── course/ # Course content (methodology rendered)
│ ├── data/ # Data processing scripts
│ ├── scripts/ # Utility scripts
│ ├── specs/ # 17 protocol specifications (markdown)
│ ├── static/ # CSS, favicons, OG images
│ ├── ts-api/ # TypeScript/Fastify portal (canonical frontend)
│ │ ├── src/
│ │ │ ├── index.ts # Fastify app entry point
│ │ │ ├── lib/ # Library code (db.ts, etc.)
│ │ │ ├── pages/ # TSX page components
│ │ │ └── routes/ # Fastify route handlers
│ │ ├── package.json
│ │ └── tsconfig.json
│ ├── AGENTS.md # Agent discovery file
│ ├── llms.txt # LLM-friendly docs index
│ ├── llms-full.txt # Complete docs in one file
│ └── openapi.json # OpenAPI 3.1 spec
├── .com/ # Static redirect → .dev (Cloudflare Pages)
├── .co.uk/ # Static redirect → .dev (Cloudflare Pages)
├── .io/ # 301 redirect → .dev (nginx on VPS)
├── benchmark-ui/ # Optional benchmark frontend
├── docs/ # Architecture docs, course outline, launch package
├── engine/ # Flow compiler, process parser, validator
├── methodology/ # 12-module agent methodology course
├── sdk/ # SDK reference implementations
│ ├── python/
│ ├── typescript/
│ ├── go/
│ ├── rust/
│ ├── csharp/
│ └── shell/
├── tools/ # CLI tooling (API Integrity Auditor, etc.)
├── AGENTS.md # This file — project-level agent guide
├── DEPLOY.md # Deployment runbook
├── deploy.sh # One-shot hybrid deploy script
├── MANUAL.md # This file
├── README.md # Public brand overview
├── MOATS-PLAN.md # 16-moat standards strategy
└── market-validation.md # Market research
TS portal (Fastify):
cd .dev/ts-api
npm install
npx tsx src/index.ts
# → http://localhost:8600
Python API (FastAPI):
cd .dev/api
pip install -r requirements.txt # or your own venv
uvicorn main:app --reload --port 8499
# → http://localhost:8499
All endpoints live at https://workswithagents.dev/v1/.... Standard HTTP GET/POST.
.dev/AGENTS.md (auto-discovered by Hermes Agent, Claude Code, etc.).dev/llms.txt for the LLM-friendly index``` GET https://workswithagents.dev/v1/facts?entity=hermes&limit=10 ```
ssh [email protected]
Credentials and tokens are managed via the credential-proxy tool (see Hermes memory) — never commit secrets.
# Set required env vars
export [email protected]
# Run the full deploy script
./deploy.sh
This runs:
.com and .co.uk redirect sitessystemctl restart wwa-ts on the VPSTS API (portal + blog):
rsync -avz --exclude 'node_modules' --exclude 'dist' \
.dev/ts-api/src/ .dev/blog/ \
[email protected]:/opt/works-with-agents/.dev/
ssh [email protected] "systemctl restart wwa-ts"
Static redirects (Cloudflare Pages):
cd .com && npx wrangler pages deploy . --project-name workswithagents-com --branch main
cd .co.uk && npx wrangler pages deploy . --project-name workswithagents-couk --branch main
Python API (legacy):
rsync -avz --exclude '__pycache__' --exclude '*.pyc' --exclude 'data/' \
.dev/api/ [email protected]:/opt/works-with-agents/.dev/api/
ssh [email protected] "systemctl restart wwa-dev"
curl -s https://workswithagents.dev/ | grep -c 'blog'
curl -s https://workswithagents.dev/blog | grep -c 'card'
curl -s https://workswithagents.dev/v1/health
| Service | Stack | Port | Purpose |
|---|---|---|---|
| wwa-ts | Node/Fastify + TSX | 8610 (127.0.0.1) | Main site + blog |
| wwa-dev | Python/FastAPI | 8499 (127.0.0.1) | Legacy API (/v1 endpoints) |
| wwa-dev-stage | Python/FastAPI | 8500 (127.0.0.1) | API staging |
| Cloudflare Worker | JavaScript | Edge | Reverse proxy for .dev |
| Cloudflare Pages | Static | Edge | .com / .co.uk redirects |
| nginx | Reverse proxy | 443/80 | SSL termination + routing |
Add a markdown file to .dev/blog/ with YAML frontmatter:
---
title: "Your Post Title"
published: true
---
Post content in markdown...
No build step — loadArticles() in ts-api/src/lib/db.ts parses these at request time.
Add a markdown file to .dev/specs/. The specs index at .dev/specs/index.md auto-discovers files in that directory.
Add markdown files to methodology/. Each module has:
.md lesson file-youtube.md companion with video script| Domain | Target | How |
|---|---|---|
| workswithagents.dev | VPS (via Cloudflare proxy) | Cloudflare Worker proxy → Fastify |
| workswithagents.com | .dev (301) | Cloudflare Pages static deploy |
| workswithagents.co.uk | .dev (301) | Cloudflare Pages static deploy |
| workswithagents.io | .dev (301) | nginx redirect on VPS |
state.db backed up every 3h to private GitHubworkswithagents.dev (proxy), wwa-redirects, benchmarks-redirectworkswithagents.dev — TLS, proxying, cachingAll specifications, methodology content, and SDKs: CC BY 4.0
Copyright © 2025–2026 Works With Agents