manifest.toml Reference¶
Every Squareberg app declares itself via .squareberg/manifest.toml. This file is required — without it the hub will not discover or register the app.
[app] Section¶
General metadata about the app.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
name |
string | yes | — | Short, unique identifier. Used as the URL prefix (/apps/{name}/), the app directory name, and socket filename. Must be lowercase, with hyphens allowed. |
display_name |
string | no | value of name |
Human-readable name shown in the dashboard. |
description |
string | no | "" |
One-line description shown in the dashboard. |
version |
string | no | "0.0.0" |
Semantic version string. Shown in sqb status output. |
[backend] Section¶
How the hub launches the app's FastAPI backend.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
module |
string | no | "app:app" |
The uvicorn module target, in module:attribute format. Resolved relative to backend/. |
The hub spawns the backend as:
[frontend] Section¶
Controls which frontends are active and served by the hub.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
active |
list of strings | no | [] |
Names of frontends that are built and served. The hub mounts the first entry's dist/ at /apps/{name}/. |
[frontend.<name>] Subsections¶
One subsection per named frontend. The <name> must appear in the active list to be served.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
path |
string | no | "frontend/<name>" |
Path to the frontend directory relative to the app root. |
display_name |
string | no | value of <name> |
Human-readable name shown in sqb frontend list output. |
Complete Example¶
[app]
name = "papers"
display_name = "Papers"
description = "Research paper and document library"
version = "0.2.1"
[backend]
module = "app:app"
[frontend]
active = ["default"]
[frontend.default]
path = "frontend/default"
display_name = "Default"
[frontend.minimal]
path = "frontend/minimal"
display_name = "Minimal"
In this example, default is the active frontend and minimal is bundled but inactive. Switching to minimal via sqb frontend switch papers minimal would update the active list and rebuild.
Notes¶
Name uniqueness
App names must be unique across all installed apps and in-tree examples. If two manifests declare the same name, the second one encountered during the registry scan is skipped with a warning.
URL safety
The name field is used directly in URL paths. Stick to lowercase letters, digits, and hyphens. Avoid spaces, underscores, or special characters.