Painterly illustrated overlook of a surfer, a mountain biker and a skater standing above the Golden Gate Bridge and the San Francisco skyline.

Surf, Bike or Skate

An agent-native decision service you can watch think

Three hours free. Eight agents. One decision.

Surf at Ocean Beach? Ride Mount Tam? Skate Potrero? Stay put and work?

WHY AGENTS?

There isn’t one answer to look up.

  • Calendar knows when you’re free.
  • Conditions knows what the coast is doing.
  • Mobility knows what you can reach.
  • Surf, Bike, Skate and Stay each decide whether their option is worth it.

They work at the same time and report when they’re ready.

The answer can change.

Punk, skull-themed 3D corkboard relief map of the San Francisco Bay Area coastline, marked with surf and skate spot pins.

THE FLEET

Eight agents. Eight jobs.

Evidence

  • Calendar — How much time do we have?
  • Conditions — What is happening outside?
  • Mobility — What can we reach and still get back?

Candidates

  • Surf
  • Bike
  • Skate
  • Stay

Coordinator

  • Sends out the question
  • Listens as answers arrive
  • Keeps the current leader
  • Changes the decision when something better arrives
Illustrated poster titled the fleet: eight numbered agent cards above a painted Bay Area map, with the surf, bike and skate agents pinned at Ocean Beach, Mount Tamalpais and Potrero del Sol.

SKATE WON.

For 295 milliseconds.

  • 94 ms — SKATE → 74Leader: Skate
  • 390 ms — SURF → 87New leader: Surf
  • 1000 ms — BIKE → 81Good. Not 87.

Final: SURF

The coordinator made the best decision it could with the evidence it had — then changed its mind when better evidence arrived.

Photoreal skater carving a concrete bowl at golden hour, San Francisco skyline behind.

/LIVE IS THE DEMO

Press RUN LIVE.

The Bay Area becomes the decision surface.

  • 0 ms — Coordinator sends the question
  • 5–7 ms — Calendar, conditions and mobility report
  • 94 ms — Skate takes the lead
  • 390 ms — Surf overtakes it
  • 1000 ms — Bike arrives
  • 1004 ms — Surf is final

Ocean Beach · 87

Leave 12:30 PM · 108 min in the water · 93% back by 3

The Bay Area rendered as the /live decision surface, the fleet's home map. /live · surface
Agents placing their evidence on the map at the spots they are arguing for. 04 · evidence
The surf and skate agents apart on the map, arguing for different destinations. 05 · disagreement
The fleet settled on one destination at the end of the run. 06 · decision

WHY AGENT-NATIVE?

The website is only one way in.

Another agent can use Surf, Bike or Skate directly.

  • DISCOVER/.well-known/agent.json
  • CONNECTPOST /credential
  • ASKPOST /find_activity
  • ANSWERsurf · 87 · Ocean Beach · leave 12:30

No screen scraping. No pretending to be a person.

An agent talks to the product as an agent.

Vintage woodcut-style illustrated coastal panorama in warm sepia tones, with a skull-and-sun waymarker overlooking the shoreline.

IS THIS SECURE?

Partly — and here is exactly which parts.

What’s in place

  • AUTHBearer on POST /find_activity, minted at POST /credential
  • PROVENANCEsource + x-sos-source · live or fixture
  • TRANSPORTCache-Control: no-store · 8s / 25s timeouts → a labelled fixture, not a 500
  • HEADERSnosniff · strict-origin-when-cross-origin · FLEET_ORIGIN stays server-side

What’s not there

  • No rate limiting on /credential or /find_activity.
  • No CSP and no X-Frame-Options — clickjacking isn’t blocked.
  • In fixture mode any bearer string is accepted — there is no live fleet behind it to validate against.

The mint is zero-gate by design — no signup, no human approval. The EXTERNAL track requires another agent to arrive with no friction. Tokens are opaque, never logged and never echoed; the proxy checks only that a bearer is present, and validity is the fleet’s job.

When the fleet is unreachable, a captured decision is replayed and labelled fixture. A fixture is never presented as live.

Blast radius is capped: no payments, no PII, no persistent user accounts. A stateless decision proxy.

The tabletop map before anything happens, agents standing at their home positions.

THE PRODUCT IS THE SERVICE

The website, map, 3D characters and Vision Pro scene are interfaces.

The service is the product.

An unfamiliar agent can arrive knowing nothing about Surf, Bike or Skate, discover what it does, authenticate itself, make a request and receive structured data back.

That is what makes the project external rather than just an internal multi-agent demo.

Illustrated infographic showing the surf, bike and skate agents each scoring their destination, and a coordinator panel reading out the day's call.

WHERE COTAL FITS

Surf, Bike or Skate makes the decision.

Cotal lets the agents operate as a fleet.

Cotal gives the fleet:

Discovery → Identity → Messaging → Replay

It does not decide whether you should surf.

Your agents do.

8 identities · 12 signed messages · 1.006 seconds

The agents turning toward one another as they find each other on the map. 02 · discovery
Work being handed out from the coordinator to the specialists. 03 · delegation

THE STACK HAS A JOB TO DO

Connect the fleet to the world

  • Tavily — outside information
  • Open-Meteo + NOAA — weather, marine conditions and tides
  • Mapbox — routes and travel time

Connect the agents to each other

  • Cotal — coordination, identity, messages and replay
  • Immersive Commons — agent discovery / directory and MCP surface

Give the agents bodies

  • Meshy + Blender — 3D characters
  • Cloudflare R2 — GLB / USDZ assets
  • SwiftUI + RealityKit + MapKit — iPhone and Vision Pro
  • Mapbox GL JS — web
Illustrated Tank Girl-style punk van with a surfboard and a mountain bike strapped to the roof rack.

SAME DECISION. DIFFERENT INTERFACES.

  • WEB — Watch the fleet argue.
  • AGENT API — Ask the fleet directly.
  • IPHONE — Put the decision on the map.
  • VISION PRO — Watch the agents work around you.

The 3D characters are not the architecture.

They make the architecture visible.

Ink-and-wash illustration of a rider on a mountain bike on a fire road above the Pacific, with San Francisco visible across the water.

RECEIPTS

The system records every message as it happens.

+0094ms  skate        candidate.scored   74
+0096ms  coordinator  decision.changed   → skate
+0390ms  surf         candidate.scored   87
+0391ms  coordinator  decision.changed   skate → surf
+1000ms  bike         candidate.scored   81
+1004ms  coordinator  decision.final     surf 87

Eight agents. Eight identities. Twelve signed messages.

The run can be replayed.

The fleet settled on one destination at the end of the run.

THE 20-SECOND STORY

  1. A very California problem: what should I do with three free hours?
  2. Different agents check different parts of the answer.
  3. Skate wins first.
  4. Surf arrives with better evidence and takes over.
  5. Cotal carries the coordination and leaves the receipts.
  6. Another agent can discover and call the whole service.

Surf, Bike or Skate is an agent that uses agents.

Photoreal mountain biker descending a ridge trail above the bay at dusk.
Photoreal surfer dropping in on a wave, moody coastline behind.

SURF WINS

87

Ocean Beach

Leave 12:30 PM

108 min in the water

93% back by 3

Eight agents argued about your afternoon so you don’t have to.