Skip to content
Conduit

mcp server

the-artifact

Your agent writes the page, you send the link. Self-hostable hosting for the HTML pages coding agents publish over MCP.

andidev30/the-artifactcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 26, 2026

The Artifact

Your agent writes the page. You send the link.

Self-hosted hosting for the HTML pages coding agents build: reports, dashboards, prototypes, one-off tools. Claude Code, Cursor, Codex or any MCP client publishes a page and gets a link back. You choose who can open it.

CI Release Image License: AGPL-3.0

Try it in the cloud · Quick start · Documentation · Self-hosting · Kubernetes · Roadmap · Contributing

Why

Agents are good at making a page that explains something: a chart from a CSV, a report after an incident, a clickable prototype. Getting that page to someone else is the awkward part. You end up with an HTML file in a chat, a screenshot, or a one-off deploy.

The Artifact gives every page a link. The agent publishes over MCP, the page runs in a sandbox, and you decide who can open it: specific people, your organization, or anyone with the link. Ask for a change and the agent publishes a new version to the same link.

How it works

sequenceDiagram
    actor You
    participant Agent as Your agent
    participant Artifact as The Artifact
    actor Team as Your team
    You->>Agent: "Turn this CSV into a chart I can send to the team"
    Agent->>Artifact: publish_artifact (HTML, over MCP)
    Artifact-->>Agent: https://artifact.example.com/a/k3x9…
    Agent-->>You: Here's the link
    You->>Team: Send the link
    Team->>Artifact: Open it (if they have access)
  1. Connect your agent once. Add The Artifact as an MCP server. The first time it publishes, your browser opens so you can sign in and pick a workspace.
  2. Ask for a page in plain words. The agent writes the HTML and calls publish_artifact.
  3. Send the link. Change requests publish new versions to the same address; the old ones stay in the history.

Examples

Pages an agent wrote and published on the hosted service, shared by link:

Their sources are in examples/.

Features

Publishing

  • One link per page, every version kept. Republishing keeps the address; restore any older version, or compare two side by side or as a line diff.
  • Single files or small sites. A page can bring its own CSS, JavaScript, images, fonts and data, loaded by relative paths. Update just one file, like a dashboard's data.json, without sending the rest.
  • Agents can check their own work. inspect_artifact returns a screenshot, console errors, broken links and accessibility problems before the page is shared.
  • Works with any MCP client. Streamable HTTP with OAuth 2.1 sign-in (PKCE, dynamic registration); setup for Claude Code, Claude Desktop, Cursor, VS Code, Codex and Windsurf is in the docs.
  • Publishing from CI or a terminal, without an agent. Access tokens, POST /api/publish, and a CLI: npx @the-artifact/cli publish ./dist, with --watch to republish on every save while an open page updates itself (see Command line).

Sharing and feedback

  • Private until you share it. Restricted, organization-wide, or anyone with the link, plus people added by email. Links can expire, need a password, or be reset.
  • Comments, on the whole page or pinned to an element, which agents read over MCP to know exactly what to change.
  • Views: how often a page and each version were opened, and who opened a shared page.
  • Webhooks to Slack, Discord or any URL when a page is published, commented on or opened.
  • Embeds in Notion, Confluence and anything that speaks oEmbed, with link previews.

Organizing

  • A gallery with real thumbnails, rendered in headless Chromium that has no network of its own, with folders, tags and search that looks inside pages' text.
  • Organizations with owners, admins and members, invitations, and a shared gallery. Duplicate a page or move it between workspaces.
  • Export everything: a zip of your pages, versions and comments, or a whole organization's.

Running it

  • Small footprint. One Docker image (amd64 and arm64), Postgres and any S3-compatible storage; one worker process per CPU. Docker Compose, Kubernetes manifests and a Helm chart.
  • Isolated pages. Every page runs in a sandbox, optionally from a separate domain, so a page can never reach your session.
  • Runs with or without email. Without SMTP, people sign in with a password and admins pass sign-up links on by hand.
  • Passkeys and two-factor sign-in. Sign in with a passkey, or add one or an authenticator app as a second factor, with recovery codes; organizations can require it.
  • Server admin area: people, organizations, suspensions, the sign-up policy, and a notice when a new release is out.
  • Enterprise features with a license key: single sign-on (OpenID Connect and SAML), SCIM provisioning, an audit log and version retention. Everything else is free under AGPL-3.0.

Quick start

You need Docker with Docker Compose.

git clone https://github.com/andidev30/the-artifact
cd the-artifact/deploy/docker-compose
cp app.env.example app.env   # set APP_URL to the address people will use
cp .env.example .env         # passwords for the bundled Postgres and MinIO, the version to run
docker compose up -d         # pulls ghcr.io/andidev30/the-artifact at that version

Open http://localhost:8080 on the same machine and create the first account with the setup code from docker compose logs app; it becomes the admin of the server. The port is only published on 127.0.0.1 until you set ARTIFACT_BIND in .env or put a reverse proxy in front. Then connect your agent:

claude mcp add --transport http --scope user the-artifact http://localhost:8080/mcp

Other clients, HTTPS, email and backups are covered in Self-hosting. To build the image from the checkout instead, see Building the image yourself. For a cluster, see Kubernetes, which uses the same published image. Before updating, read the changelog and Upgrading.

MCP tools

ToolDoes
publish_artifactPublishes a page (or a new version of one), optionally into a folder, and returns its link
update_filesPublishes a new version that changes only some files of a page, like refreshed data
prepare_upload, publish_uploadPublishes a page whose files the agent uploads straight to storage, for large pages; when S3_PUBLIC_ENDPOINT is set
list_artifactsLists the most recently updated pages in the connected workspace, searching titles and page text, by folder or tag, a batch at a time
list_foldersLists the workspace's folders
move_artifactFiles a page into a folder, or takes it out, or moves it to another workspace
duplicate_artifactCopies a page's current version into a new, restricted page, in any workspace you can publish to
tag_artifactAdds or removes a page's tags
get_artifactReads a page's HTML and files, to edit it
inspect_artifactChecks a page before sharing it: screenshots, console errors, missing files, broken links and accessibility problems
rename_artifactRenames a page
set_artifact_visibilityRestricted, organization, or anyone with the link
share_artifactShares a page with people by email
delete_artifactDeletes a page (owner only)
list_versionsLists a page's versions, as the history shows them
diff_versionsWhat changed between two versions: files added, removed and changed, with a diff of the text ones
restore_versionMakes an older version current again
list_viewsHow often a page was opened, and who opened it
download_artifactA link to download a page and its files as a zip
list_commentsReads the comments on a page, with the element each pinned one is about
add_commentStarts a comment thread, on the whole page or pinned to an element
reply_commentReplies in a comment's thread
resolve_commentResolves or reopens a thread

Arguments and limits are in Publishing pages.

Documentation

Using itRunning it
IntroductionInstall with Docker Compose
Connect your agentKubernetes
Publishing pagesConfiguration reference
Sharing and permissionsBackup and restore
Organizations and membersSecurity
Version historyUpgrading
CommentsLicenses and enterprise features
Exporting your dataTroubleshooting

The same pages are built into every install at /docs.

Development

Node 26 and pnpm 11, plus Docker for the services.

pnpm install
pnpm services        # Postgres, MinIO (console http://localhost:9001) and Mailpit (http://localhost:8025)
cp apps/api/.env.example apps/api/.env
pnpm db:migrate
pnpm dev             # API on :3000, web on :5173
PathWhat
apps/apiHono API, MCP server, OAuth server and thumbnail renderer
apps/webReact app, including the docs at /docs
docs/The documentation, in Markdown
deploy/Docker Compose, Kubernetes manifests and the Helm chart
e2e/Playwright end-to-end tests

pnpm lint runs Biome and the type checks, pnpm format formats, pnpm test runs the unit and integration tests, and pnpm test:e2e the browser tests; see TESTING.md. CLAUDE.md files describe the conventions for people and coding agents alike, and .claude/ holds shared Claude Code settings and project skills.

Contributions are welcome: what's planned is on the project board; read CONTRIBUTING.md first, and report security issues privately as described in SECURITY.md.

License

The Artifact is free software under the GNU Affero General Public License v3.0: self-host it, change it and share it. If you run a modified version as a service, share your changes too.

The code in ee/ folders (apps/api/src/ee, apps/web/src/ee) is under the separate Enterprise License. It holds what only the hosted service runs (its marketing site, contact form, onboarding welcome, plan limits and issuing license keys) and enterprise features, which a self-hosted install turns on with a license key. Without a key, a self-hosted install does everything described in the docs; the key is checked offline and nothing phones home. See Licenses.

↑↓ navigate openesc close