Contract testing on the edge

Add assertions via API. Run them continuously in a Durable Object. Watch gates go from red to green. One SQLite database, zero containers.

# Add a gate
curl -X POST https://greenlight.coey.dev/gates \
  -H "Content-Type: application/json" \
  -d '{"assertion": "GET /health returns 200"}'

# Start the loop
curl -X POST https://greenlight.coey.dev/start

# Check status
curl https://greenlight.coey.dev/status
// Add a gate
await fetch('/gates', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    assertion: 'GET /health returns 200'
  })
});

// Start the loop
await fetch('/start', { method: 'POST' });

// Check status
const status = await fetch('/status').then(r => r.json());
import requests

# Add a gate
requests.post('/gates', json={
    'assertion': 'GET /health returns 200'
})

# Start the loop
requests.post('/start')

# Check status
status = requests.get('/status').json()

HTTP API

POST assertions as plain English. GET results as structured data. Everything is an endpoint.

Continuous Validation

Start a loop that runs gates on an interval. Store results in embedded SQLite. Check status anytime.

Cloudflare Native

One Durable Object. No servers to manage. Runs at the edge, close to your API.

Proof Export

Download complete gate history and reliability metrics. JSON bundles for CI/CD or compliance.