Rubber Duck as a Service Β· v1

Debugging,
delegated to a duck.

You have a bug. You have no one to explain it to. Enterprise problem, meet enterprise solution: a rubber duck, summoned on demand, with opinions.

Read the API docs β†’
      __
    <(o )___
     (  ._> /
    ~~~~~~~

Press the button. The duck is contractually obligated to help.

–
ducks summoned
–
notes in the pond
–
backend uptime

Those numbers come live from /api/stats β€” a real backend on Fly compute, reached at the same origin as this page. No CORS, no second domain.

πŸͺ· The Pond

A guestbook that writes to the backend. Be nice; the duck reads these.

loading the pond…

πŸ€– Agents welcome

Every page here is also available as clean Markdown β€” same URL, just ask for it. That's Fly Pages doing content negotiation at the edge. Try it:

# humans get HTML, agents get markdown β€” from the exact same URL
curl -H "Accept: text/markdown" https://rdaas.flypages.dev/docs

What's actually happening here

This silly duck is a straight-faced demo of everything Fly Pages does.

🌍Static, from the edge

This page, the CSS, the docs β€” served from Tigris object storage over the global edge. Pretty URLs, custom 404, instant.

πŸ”ŒSame-origin /api

/api/* is reverse-proxied to a real backend on Fly compute. One domain, one cert, shared cookies, zero CORS.

🧭Two backends, one site

/api runs the duck; /quack is a second backend at its own prefix. Longest-prefix wins.

πŸ“Markdown for agents

Content negotiation serves text/markdown to agents and HTML to browsers β€” same URL. See above.

β†ͺ️Redirects

Old links don't rot. /api-docs 301s to /docs via a _redirects file.

πŸ¦†Built by an agent

Site, backend, and deploy were all done by an AI agent in a Sprite β€” the kind of thing it'd build anyway.