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: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.
- 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
- Open Import from the sidebar (or visit
/dashboard/import). - Paste a Claude artifact URL or ChatGPT canvas URL into the Import from URL tab.
- Click Preview to see the parsed artifact (title, type, file list, inline iframe) before committing.
- 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.
From the CLI
--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,0skips the wait).
✓ 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
- The backend fetches the artifact (or parses the pasted source) and normalizes it into one or more files plus a target preset (
staticfor HTML/SVG/React, etc.). - 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. - The pod warms up; in parallel, a background goroutine waits for it to reach
runningand then pushes each artifact file via the per-server exec client. - Pod events narrate the journey:
import_started→import_complete(orimport_partial/import_failed). The dashboard’s status strip and CLI both watch these events.
React artifacts
Claude’s React artifacts deploy as a single-pagestatic 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
--namethat 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>orchatgpt.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.