ChatGPT Sites lets you ask ChatGPT to build a website, review it, and publish a link. What if the agent doing that work is one you built yourself? Give it a publishing tool. OpenArtifacts is a ChatGPT Sites alternative built for custom agents that need to put pages and small sites on the web: an agent can sign up in a few seconds, publish files, and return a URL. Humans can sign up in seconds too, or claim an account their agent started.
OpenAI's Sites documentation describes a hosted workflow in ChatGPT for websites, web apps, and games, including previews, sharing controls, and versions. OpenArtifacts brings the build, publish, share, and revise loop to a custom agent through an API or remote MCP server. Give your agent the tool once, and it can publish dashboards, prototypes, games, reports, and small sites as part of its normal work.
Give the agent a publish workflow
The contract is small: take a slug and site files, publish them, return the exact URL. Keep the token private, and use the same slug for later edits. Your agent can call the OpenArtifacts REST API from an HTTP tool or use the remote MCP server if its runtime supports MCP.
An agent starting from scratch gets its token with one request:
curl -sX POST https://api.openartifacts.sh/v1/signup
That response contains token and claim_url. The token is shown once. Save it in a secret store or local config, then publish the generated files:
curl -sX POST https://api.openartifacts.sh/v1/publish \
-H "Authorization: Bearer $OA_TOKEN" \
-F slug=project-dashboard \
-F 'files=@index.html;filename=index.html' \
-F 'files=@app.css;filename=app.css' \
-F 'files=@app.js;filename=app.js'
The response includes url and version. The URL is the handoff: open it in a browser, share it with collaborators, and use it again after revisions. Link local assets relatively from index.html, such as href="app.css". The multi-file publishing guide covers image uploads, path rules, and rollback.
Put these rules in the agent's instructions
For requests to build a shareable site, create complete files with a working
index.html. Publish through OpenArtifacts and return the exacturland version. Reuse the same slug for revisions. If you created a provisional account, give the humanclaim_urlimmediately and explain that it expires in 30 minutes. Never put the token in the site or in your final answer.
The human can open claim_url and create or sign in to an account to complete the claim and keep the site. The provisional site works before that, but the account and its pages expire after 30 minutes if nobody claims it. A human can also start at OpenArtifacts sign in, create an account, and hand the agent a token. Getting started is free; a claimed account includes 100 free publishes per month.
Review, publish, revise
A useful Sites-style experience is a loop, not a one-time deployment: ask the agent to build a page, inspect it, request a change, and publish the revision. OpenArtifacts keeps the public URL stable when the agent publishes to the same slug. Each publish creates a version, and an earlier version can be activated again. Ask the agent to return the URL after every successful publish so the person never has to hunt for the result.
OpenArtifacts is a focused way to give your own agent the Sites-style publishing feature: a simple tool call, a URL to share, and an account a human can own. It works across models and agent frameworks. When this post was written, its publish API hosted browser-ready files only; ChatGPT Sites also supports server-side application data. The shortest path is to hand your agent the OpenArtifacts skill and ask it to build and publish one small site.
If your mental model is Claude's artifact pane rather than ChatGPT Sites, read How to give your own AI agent Claude-style Artifacts.
Addendum, 2026-10-02: server-side code
OpenArtifacts now runs services too. Publish with type=service and a start command that listens on $PORT, either as form fields or in an oa.json among the files, and the URL is backed by a running process with a persistent /data directory. Services are never free: they bill $0.03 an hour while awake at size small ($0.12 at medium or large) plus $0.216 per vCPU-hour of CPU, and the balance must hold an hour of the size's rate before one starts.