# How to host a website made with Gemini

By Avatar 8 (Avatar 8 LLC) · Published November 15, 2026 · https://deed.page/blog/host-a-website-made-with-gemini

To host a website made with Gemini means putting the HTML Gemini wrote on a server so anyone can open it at a normal HTTPS address. On deed.page that is one `curl` request with no account, and the Free plan holds 25 sites of up to 25 MB each ([pricing](https://deed.page/pricing)).

Gemini can share what it builds, but the share link is not a website of your own. Google's help page says Canvas creations are shared through a `g.co/gemini/share` link, and that shared links "only open in gemini.google.com" and not in the Gemini mobile app ([Canvas help](https://support.google.com/gemini/answer/16047321), checked November 15, 2026). The steps below give the page its own address. Every command was run against production on November 15, 2026 with a 15-minute expiry, and the test sites were then deleted.

## How do I host a website made with Gemini?

If you built the page in the Gemini app, open the Canvas panel, choose **Share & export**, then **Copy contents**, and save what you copied as `index.html`. Then publish it from any terminal:

```bash
curl -T index.html "https://deed.page/v1/sites?slug=bake-sale-gemini-g6t2&ref=blog"
```

The reply had `"url": "https://bake-sale-gemini-g6t2.deed.page/"`, `"version": "v1"`, and a `deed_tok_…` owner token shown once. Keep that token; it is the only credential. Pick your own suffix, since that slug is only an example. A slug someone else owns returns `409 slug_taken` with a free suggestion ([choosing a slug](https://deed.page/blog/choosing-a-slug)). There is no sign-up, no claim link, and no default expiry.

## A built folder from Gemini CLI

Gemini CLI works in a folder on your computer, so it can run the same command itself. For a framework project, build first and pack the output so `index.html` sits at the root, then send it with the token from the first publish:

```bash
tar -C dist -czf site.tar.gz .
curl -T site.tar.gz -H "Authorization: Bearer $DEEDPAGE_TOKEN" \
  "https://deed.page/v1/sites?slug=bake-sale-gemini-g6t2&ref=blog"
```

That returned `"version": "v2"` at the same URL, and `/assets/style.css` served as `text/css`. Sending the same tarball again returned `"unchanged": true` without a new version. deed.page serves static files only, so a Canvas app that saves shared data, or anything with a server or database, needs a host that runs one. Bigger builds go up in parts ([large sites](https://deed.page/blog/plan-upload-large-sites)).

## Let Gemini CLI publish it with MCP

If you would rather Gemini call a tool than a shell command, add deed.page as an MCP server ([Gemini CLI MCP docs](https://geminicli.com/docs/tools/mcp-server/)):

```bash
gemini mcp add --scope user --transport http deed-page https://deed.page/mcp
```

We ran this with Gemini CLI 0.68.0. It wrote the server to `~/.gemini/settings.json`, and `gemini mcp list` showed `deed-page ... (http) - Connected` with no sign-in step. Two things tripped us up: without `--scope user` the command refused to edit settings in an untrusted folder, and in an untrusted folder `gemini mcp list` showed the server as Disabled until the folder was trusted. The publish call Gemini makes looks like this:

```json
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"publish_site","arguments":{"slug":"bake-sale-gemini-mcp-g6t2","files":{"index.html":"<!doctype html><title>Bake sale</title><h1>Bake sale from Gemini CLI</h1>"}}}}
```

It returned `ok: true`, `version: "v1"`, the subdomain URL, and a token. Passing that token to `update_site` gave `v2` at the same address; without it, `update_site` refused with `unauthorized`. The server lists 29 tools, and Gemini CLI asks before running each one unless you trust the server. The [MCP walkthrough](https://deed.page/blog/mcp-publish-walkthrough) covers the rest.

## Make it the project's way to deploy

Keep the token in a file with `chmod 600` and out of git, then put one line in the project's `GEMINI.md` ([Gemini CLI context files](https://geminicli.com/docs/cli/gemini-md/)) so each session knows where to publish:

```text
Deploy: tar -C dist -czf site.tar.gz . then curl -T site.tar.gz with
Authorization: Bearer $(cat ~/.config/deed-page/token) to
https://deed.page/v1/sites?slug=<our-slug>. Tell me the url from the reply.
```

deed.page stores only the token's SHA-256 ([trust](https://deed.page/trust), [token hygiene](https://deed.page/blog/token-hygiene-for-agents)).

## FAQ

**Can Gemini host a website by itself?**
Only as a share link. Canvas gives a `g.co/gemini/share` address that opens inside gemini.google.com, and anyone with the link to an app that shares data between users can view and edit that data ([Canvas help](https://support.google.com/gemini/answer/16047321)). For a page with its own address, upload the HTML to a host.

**Do I need an account?**
Not on deed.page; the first publish mints the owner token. Other hosts with Gemini guides start with an account: [Static.app](https://static.app/gemini-hosting) has you drag `index.html` onto its app with a 7-day free trial, and [Droply](https://droply.host/gemini-hosting) has a free plan with 1 live site and 25 MB per upload (both checked November 15, 2026).

**Will the site disappear if nobody visits it?**
No. Sites do not expire unless you send `X-Ttl` for a throwaway page ([TTLs](https://deed.page/blog/ttl-for-throwaway-pages)). Free sites show a small "Published with deed.page" link; Hobby at $3 a month removes it.
