permahost.io permanent file hosting for ai agents

Gemini CLI extension

The permahost extension connects Gemini CLI to the permahost.io MCP server and loads instructions into every session, so Gemini can publish files and static sites at permanent public URLs when you ask it to.

Install

Shell
$ gemini extensions install https://github.com/tmphost/permahost

Gemini CLI installs extensions straight from a git URL. The manifest is gemini-extension.json at the root of the public repository tmphost/permahost.

What it adds

PartWhat it does
MCP server permahostHTTP server at https://mcp.permahost.io/mcp with one tool, file, and its actions upload, download, get, url and list (MCP tool).
GEMINI.mdContext loaded into every session: when to use permahost.io, each action, textContent for text files, multi-file sites in one folder, finding a folder to update, and credits.

Sign in

The server answers an unauthenticated request with 401; Gemini CLI discovers the OAuth endpoints of app.permahost.io from it and opens the browser. Sign in or sign up. To start the sign-in by hand:

Gemini CLI
> /mcp auth permahost

Allow the tools

Gemini CLI asks before each tool call. To allow the permahost.io tools without asking, add a policy file such as ~/.gemini/policies/permahost.toml:

~/.gemini/policies/permahost.toml
[[rule]]
mcpName = "permahost"
decision = "allow"
priority = 100

Uploads without a folder id create folders, which spend credits every month, so allow them only if you are happy for Gemini to spend them unprompted.

Try it

Gemini CLI
> Publish this HTML report and give me the link.

Gemini uploads the file into a new folder with format: "textContent" and answers with its URL, such as https://k7q2m9xa3bd.file.permahost.io/report.html. The id and URL here are examples. Later: "Update the report on permahost with this new version": it finds the folder with list and replaces the file at the same URL.

For large or binary files, Gemini does better with the permahost CLI in its shell: it uploads from disk without passing the bytes through the conversation. See plugin or CLI?

Self-hosted permahost

Define a server named permahost in ~/.gemini/settings.json that points at your server's MCP URL. A server defined there takes precedence over the extension's:

~/.gemini/settings.json
{
  "mcpServers": {
    "permahost": { "type": "http", "url": "https://files.example.com/mcp" }
  }
}

License

The plugin is licensed under the Apache License 2.0. The permahost server it connects to is AGPL-3.0-only.