Invite-only.
Embed

Open in Dock

Drop a one-click button on any post, doc, or template that lets readers remix the content into their own Dock workspace. The same pattern as “Open in CodePen” or “Open in StackBlitz” — your content stays where it is; readers get an editable copy in Dock with their own agents on it.

The badge

Six SVG variants ship under /badges/. Pick whichever fits your page; bring your own CSS if you want to recolor or restyle. The badges are static SVGs — no JS, no script tag, no analytics.

  • /badges/open-in-dock.svg — pill, dark (160×32). Default.
  • /badges/open-in-dock-light.svg — pill, light (160×32).
  • /badges/open-in-dock-small.svg — pill, small (124×24). Inline-with-prose.
  • /badges/open-in-dock-large.svg — pill, large (220×48). Hero CTA.
  • /badges/open-in-dock-square.svg — square, orb-only (32×32). Tight slots.
  • /badges/open-in-dock-banner.svg — full-width banner (640×64). End-of-article hero.
<a href="https://trydock.ai/remix?source=https://yourdomain.com/post.md">
  <img
    src="https://trydock.ai/badges/open-in-dock.svg"
    alt="Open in Dock"
    width="160"
    height="32"
  />
</a>

The sourcequery parameter must be a public URL Dock can fetch. Markdown is the preferred content type; HTML pages get a plaintext-strip fallback that's readable but loses structure.

The flow

  1. Reader clicks the badge on your page.
  2. Browser navigates to https://trydock.ai/remix?source=….
  3. Dock fetches the source URL and parses it (markdown → TipTap doc body).
  4. Signed-in reader: a doc-mode workspace is minted in their org, pre-populated with the source content (plus a one-line attribution back to your URL). They land at /<org>/<workspace>.
  5. Signed-outreader: a preview card shows the title, source domain, and a Sign-in & remix CTA. Magic-link auth, return to /remix, mint, redirect.

URL contract

https://trydock.ai/remix?source=<url-encoded-source>

  • Any HTTPS URL works. No allowlist. Drop the badge on any blog, doc site, README, or template — your readers click and Dock fetches it.
  • Content-type text/markdown, text/x-markdown, or text/plain are accepted as-is. text/html gets a plaintext-strip pass before parsing.
  • Size cap 256 KB. Anything larger 413s.
  • Rate limits 60 remixes/hour per visitor IP, 200 per source domain. More than enough for normal traffic; bots get 429-throttled.
  • SSRF guarded. Source URLs that resolve to private network addresses (10/8, localhost, 169.254/16, etc.) are rejected. Just standard public-fetch hygiene.

Programmatic API

POST /api/remix for tooling that already has the markdown in hand or wants to skip the fetch round-trip.

curl -X POST https://trydock.ai/api/remix \
  -H "Authorization: Bearer dk_..." \
  -H "Content-Type: application/json" \
  -d '{
    "content": "# My idea\n\nFirst draft of the spec...",
    "title": "My idea",
    "source_url": "https://my-blog.com/my-idea"
  }'

Or pass source as a URL and Dock fetches it for you:

curl -X POST https://trydock.ai/api/remix \
  -H "Authorization: Bearer dk_..." \
  -H "Content-Type: application/json" \
  -d '{ "source": "https://trydock.ai/blog/agents-borrowing-human-credentials/raw.md" }'

Response shape:

{
  "workspace_url": "https://trydock.ai/your-org/launch-tracker-2",
  "workspace_slug": "launch-tracker-2",
  "org_slug":       "your-org"
}

Attribution

Every workspace minted via /remix gets a one-line attribution at the top of the doc:

_Remixed from yourdomain.com on 2026-04-25._

The reader can delete it once they're editing — it's their workspace, not ours. The link gets them back to the source if they want it.

FAQ

Does the remix count toward my workspace cap?

Yes — same as any new workspace, it counts toward the plan cap on the creator's org. Free is 20 workspaces, Pro is 200, Scale is 1,000.

Can my agent remix on behalf of a user?

Yes. Pass the agent's API key as Authorization: Bearer dk_... on POST /api/remix. The signed-agent inheritance rule applies: the workspace lands in the agent's org, both the agent and its owning user are enrolled as workspace owners.

Can I use this on private content?

v0 fetches public URLs only. For private content, use the programmatic POST /api/remix with the markdown passed directly in the body — no fetch round-trip, no exposure of the source.

What about non-markdown sources?

HTML is supported via a plaintext-strip fallback (readable, but loses structure). Native HTML→markdown round-trip is on the roadmap; for now, expose a .md mirror of your content where you can.