Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.instapods.com/llms.txt

Use this file to discover all available pages before exploring further.

If you’ve built something in an AI builder and want to turn it into a real, share-able URL, the import flow takes you from a public artifact link (or pasted source) to a running pod — no manual file syncing, no preset picking. Supported tools:
  • Claude artifacts at https://claude.ai/public/artifacts/<id> — fetched and parsed end-to-end (HTML, React, SVG, Mermaid, and code snippets).
  • ChatGPT canvases at https://chatgpt.com/canvas/shared/<id> — fetched and parsed end-to-end (HTML, React, code, document).
  • Anything else (v0.dev, Bolt.new, Lovable.dev, hand-written) — copy the source out of the original tool and use the paste-source path. ChatGPT chat shares (/s/cb_*, /share/*) also fall into this bucket; their content is auth-gated client-side and can’t be auto-fetched.

From the dashboard

  1. Open Import from the sidebar (or visit /dashboard/import).
  2. Paste a Claude artifact URL or ChatGPT canvas URL into the Import from URL tab.
  3. Click Preview to see the parsed artifact (title, type, file list, inline iframe) before committing.
  4. Click Deploy to create the pod. You’re redirected to the pod’s detail page where a status strip narrates the import as it finishes.
If you don’t have a supported URL — for example, you copied source from v0 — switch to the Paste source tab, paste the body, optionally pick a type (HTML, React, SVG, Mermaid, code), and deploy.

From the CLI

# Deploy a Claude artifact in one shot
instapods import https://claude.ai/public/artifacts/72d792c1-067c-48ea-9907-ebfb0492f7c0

# Deploy a ChatGPT canvas
instapods import https://chatgpt.com/canvas/shared/6a05f2c770348191b0491c2729ef9ee0

# Preview without creating a pod
instapods import https://claude.ai/public/artifacts/<id> --dry-run

# Paste-mode for tools without auto-fetch support
instapods import --paste --from-file ./component.jsx --title "My Component" --type react

# Pipe straight from the clipboard (macOS)
pbpaste | instapods import --paste --title "From clipboard" --type html
Useful flags:
  • --name <pod-name> — override the auto-derived name (defaults to a slug of the artifact title).
  • --region <slug> — pick a region instead of the auto-resolved one.
  • --plan <slug>launch (default), build, grow, scale, turbo.
  • --dry-run — fetch + parse only, don’t create a pod.
  • --wait <seconds> — how long to wait for the import to finish before returning (default 180, 0 skips the wait).
The CLI prints ✓ Imported "title" from claude (1 file) once the backend’s import_complete event lands. If the import partially succeeds or fails, you’ll see a yellow or red line with the reason.

What happens behind the scenes

  1. The backend fetches the artifact (or parses the pasted source) and normalizes it into one or more files plus a target preset (static for HTML/SVG/React, etc.).
  2. A pod is created via the normal lifecycle service. If you didn’t supply a name and the slug is already taken, the importer auto-suffixes (-2, -3, …). Explicit names still error if they collide.
  3. The pod warms up; in parallel, a background goroutine waits for it to reach running and then pushes each artifact file via the per-server exec client.
  4. Pod events narrate the journey: import_startedimport_complete (or import_partial / import_failed). The dashboard’s status strip and CLI both watch these events.
Once the strip turns green you can click the artifact’s public URL — the pod is live.

React artifacts

Claude’s React artifacts deploy as a single-page static pod that loads React + Tailwind from CDNs and compiles the JSX in-browser with @babel/standalone. This trades a slower first paint for instant deployment with no build step. To convert into a real bundled app, edit the pod’s files (src/App.jsx and index.html) or instapods deploy over the top with your own Vite/Next.js project.

Troubleshooting

  • “pod ‘xyz’ already exists” — happens when you supply an explicit --name that collides. Either drop the flag (we’ll auto-suffix) or pick a different name.
  • “no importer matches URL” — the URL doesn’t match either claude.ai/public/artifacts/<id> or chatgpt.com/canvas/shared/<id>. Copy the source out of your tool and use paste mode.
  • “Claude returned HTTP 404” / “ChatGPT returned HTTP 404” — the artifact is private or has been deleted. Make sure the share link is public (“Publish” in Claude, “Share canvas” in ChatGPT).
  • Status strip stays on “Importing…” longer than expected — the pod is still warming up. The strip polls every 3s for up to 5 minutes. Check the events tab for the latest state.