Every hyperdrive contains a manifest file at /index.json that stores metadata about the drive.

Fields

title String. A human-readable name for the drive.

description String. A short description of the drive’s contents.

type String. A type identifier that applications can use to interpret the drive’s purpose. Common values:

  • "unwalled.garden/person" — a personal profile drive
  • "unwalled.garden/website" — a general website

thumb String. Path (within the drive) to the thumbnail image. Supports any image format. Defaults to /thumb if not set.

{
  "thumb": "thumb.png"
}

The explorer sidebar and drive view use this image to represent the drive. If omitted, the browser looks for a file named /thumb at the drive root.

author Object. Information about the drive’s author.

  • url String. The hyper:// URL of the author’s profile drive.
{
  "author": { "url": "hyper://abc123.../" }
}

forkOf String. The hyper:// URL of the drive this one was forked from.

links Object. A map of named link arrays, used for associating related resources.

{
  "links": {
    "license": [{ "href": "https://creativecommons.org/licenses/by/4.0/" }]
  }
}

csp String. A Content Security Policy header value applied to all pages served from the drive.

fallback String. Absolute in-drive path to an HTML app shell served — as a 200 rewrite, URL unchanged — when a page navigation asks for a path with no file. Real files always win; sub-resource fetches never fall back. This is how a drive becomes a Single Page App; see Frontends.

{ "fallback": "/index.html" }

ai Object or String. Opts this Drive into the nomad.ai API. See the nomad.ai docs for the full resolution order (Drive → Space default → global fallback).

  • Inline — specify a model directly. Nomad uses the Drive’s own /ai/system.md and /ai/tools/ as the AI Config.
{ "ai": { "model": "llama3.2:3b" } }
  • Pointer — delegate to another Drive’s AI Config entirely.
{ "ai": "hyper://abc123..." }

chatBubble Boolean. When true, Nomad injects a floating chat bubble into every page on this Drive. Clicking the bubble opens an Intercom-style overlay that lets visitors chat with the Drive’s AI (resolved via the ai field above, or the Space/global default). The Drive does not need to build any chat UI of its own.

{ "chatBubble": true }

Requires the ai field to be set (or a Space/global AI default to be configured) — otherwise the bubble will open but nomad.ai calls will fail with a “no model configured” error.

collaborative Boolean. Whether the drive accepts new writers. Every drive is multi-writer-capable, but writers can only be invited while this is true. Don’t edit it by hand — it’s managed by nomad.fs.configure() (and the drive UI), which persists it here.

{ "collaborative": true }

Full example

{
  "title": "My Hyper Website",
  "description": "A personal site and blog",
  "type": "unwalled.garden/website",
  "thumb": "thumb.png",
  "author": { "url": "hyper://abc123...ef/" },
  "links": {
    "license": [{ "href": "https://creativecommons.org/licenses/by/4.0/" }]
  },
  "csp": "default-src 'self'",
  "fallback": "/index.html",
  "ai": { "model": "llama3.2:3b" },
  "chatBubble": true
}