Skip to content
Hoody.com

Every kit with a browser UI serves it at a URL on the container. This guide covers building that URL for one specific view with the options you want, such as a file open in the editor, a terminal in read-only mode, or one table in the database studio, and framing it in your own page. The SDK, the CLI and plain HTTP build the same URL from one published catalog, so a URL built in one place opens the same view as a URL built in another.


A view is one page of a kit UI, named <kit>.<view>: files.editor, terminal.session, sqlite.tables. Each kit has a default view, used when you name the kit only. The view reference at the end of this page lists every view with its parameters.

import { HoodyClient } from 'hoody-sdk';
const hoody = await HoodyClient.login('https://api.hoody.com', { username, password });
const { data: container } = await hoody.api.containers.get(containerId);
if (!container?.id || !container.project_id) throw new Error('Container not found');
// One function per view: client.embeds.<kit>.<view>(container, options)
const editor = hoody.embeds.files.editor(
{ ...container, id: container.id, project_id: container.project_id },
{ params: { path: '/home/user/app/server.ts' } },
);
// https://PROJECT_ID-CONTAINER_ID-files-1.SERVER.containers.hoody.com/home/user/app/server.ts?edit=
// On a withContainer() client the container can be left out.
const box = await hoody.withContainer(containerId);
const terminal = box.embeds.terminal.session(undefined, { index: 2, params: { readonly: true, fontSize: 14 } });
// https://PROJECT_ID-CONTAINER_ID-terminal-2.SERVER.containers.hoody.com/?readonly=true&fontSize=14
// By kit name, for views chosen at run time.
const table = box.embeds.url('sqlite', undefined, { view: 'tables', params: { table: 'users' } });
// https://PROJECT_ID-CONTAINER_ID-sqlite-1.SERVER.containers.hoody.com/tables?table=users

buildEmbedUrl(kit, container, options) builds the same URL without a client, from the fields a hoody-api container response carries (id, project_id, server_name). box.embeds.views('files') lists a kit’s view names, default first, and box.embeds.catalog() returns the whole construction catalog. Both entry points of the package, Node and browser, export these functions.

Every embed URL has the form of any other service URL on the container:

https://{projectId}-{containerId}-{segment}.{serverName}.{containersDomain}{path}?{query}
  • segment is the service and its instance number, such as files-1 or terminal-2. The number is 1 or more and has an upper bound per service, which the catalog publishes. An index outside the bounds is refused; it is never rounded to the nearest valid one.
  • containersDomain comes from the API base URL: https://api.hoody.com gives containers.hoody.com, and https://api.hoody.com gives containers.hoody.com. The catalog’s domain section lists every rule in order.
  • path is the view’s path, with path parameters encoded as the catalog states. A file path keeps its slashes and percent-encodes each segment.
  • The query holds only parameters the view accepts. Booleans are true or false, and a flag such as edit is sent as edit=.

A DNS label holds at most 63 characters. With 24-character project and container IDs, a terminal number above 9999 makes the first label 64 characters long, so the SDK refuses it with HOST_LABEL_TOO_LONG.

For a kit’s own views, the builders refuse three kinds of parameter the kit itself would read:

  • Credentials and sign-in state, such as tokens, passwords and SSH or proxy credentials. Sign-in pages are not embed views.
  • Parameters that change state, such as a command for the terminal to run, a startup script, a restart, or a download trigger. Use the kit’s HTTP API for those, where the request is explicit.
  • Parameters the platform sets itself, such as the terminal or display number, which the hostname already selects.

Three views are outside these rules. http.content and https.content show your own application, so the builder passes any query you give it, credentials included. exec.script runs your script when the URL is opened and hands it every query parameter. Opening some other views also starts something, such as a shell, a desktop or the editor, or starts receiving on a pipe; the reference marks them with “starts a process” or “changes state”.

Each refusal is an error with a code, never a silently dropped parameter:

box.embeds.url('terminal', undefined, { query: { cmd: 'ls' } });
// EmbedValidationError: PARAM_EXCLUDED: cmd cannot be set in an embed URL (mutating)

The view reference lists the refused parameters of each kit with the reason. In the SDK the error is EmbedValidationError, and its code is one of the values below.

CodeMeaning
KIT_UNKNOWN, VIEW_UNKNOWNThe kit or view name is not in the catalog.
KIT_NOT_BUILDABLEThe kit has no browser UI to embed.
INDEX_OUT_OF_RANGE, INDEX_NOT_SUPPORTED, PORT_INVALIDThe instance number or port is outside what the service accepts.
HOST_LABEL_TOO_LONGThe first hostname label would be longer than 63 characters.
TARGET_INVALIDThe container fields are missing or cannot form a hostname.
LOCAL_REFUSEDA local URL was requested. Several kit UIs only work at the root of their host.
PARAM_EXCLUDED, PARAM_FORCED, PARAM_NON_UI, PARAM_DEADThe parameter is a credential, changes state, is set by the platform, is not a UI parameter, or has no effect.
PARAM_UNKNOWN, PARAM_NOT_ON_VIEW, PARAM_NOT_TYPED, QUERY_NOT_PASSTHROUGHThe parameter is not accepted by this view, or not in the form given.
REQUIRED_MISSING, VALUE_INVALID, PATH_INVALIDA required parameter is missing, or a value is outside its allowed values or pattern.
DUPLICATE_KEY, CONST_OVERRIDEA key was given twice, or a fixed value of the view was overridden.
ALIAS_URL_MISSING, ALIAS_MISMATCH, ALIAS_VIEW_UNSUPPORTED, ALIAS_TARGET_PATH_CONFLICTThe alias cannot serve this view (see below).
<iframe src="https://PROJECT_ID-CONTAINER_ID-files-1.SERVER.containers.hoody.com/home/user/app/server.ts?edit="
style="width: 100%; height: 640px; border: 0"></iframe>

On kit UI pages the proxy sends Content-Security-Policy: frame-ancestors, which allows any origin by default; on the agent, only its web UI gets it. The proxy adds the directive to the kit’s own policy, so the kit’s other directives still apply. A page your own application serves on an http-{port} or https-{port} URL keeps whatever headers the application sends. Pages that must never be framed keep refusing: the sign-in and secret-entry pages of the chat bot answer with frame-ancestors 'none', and a notebook export keeps its own policy.

Each view in the catalog has a frameable value. yes views load in a frame from another origin. no views refuse framing; open them in a new tab instead.

A view can also be opened through a proxy alias: pass the alias as the target instead of the container, and the builder uses the alias’s own address as the host.

box.embeds.cron.manager({ alias: 'jobs', program: 'cron', index: 1, url: 'https://jobs.example.com' });
// https://jobs.example.com/

Most kit UIs read their own identity from the hostname, so they cannot work under an alias hostname, and those views are refused with ALIAS_VIEW_UNSUPPORTED. The Alias column of the reference shows which views accept an alias.

The tables below are generated from the construction catalog at /embeds/catalog.v1.json. The catalog is the machine-readable form of the same information. Parameters are listed by their URL query name; the SDK’s embed options use the same names, except that pipe.noscript takes its path as noscriptPath. Direct pipe page links, including autostart, which the builder refuses, are on the Pipe page.

Pipe page links open in the browser, so they do not carry the SDK’s kitAuth headers: the browser itself must be allowed by the container’s access rule. The embed builder limits the send page’s name to 1023 characters and pipe path values to 1023 characters after percent-encoding. noscriptPath has a separate 1024-character limit. Direct pipe links and PipeMedia.getPageUrl() allow names up to 1024 encoded characters. The pipe.video embed view does not accept n; for a fixed viewer count, use a direct ?video&n=3 link or media.getPageUrl('video', 'demo', { n: 3 }).

Web terminal sessions in the browser.

ViewLabelPathRequiredFrameableAliasNotes
terminal.sessionTerminal session/noneyesnodefault, starts a process

A browser terminal attached to one session. Opening it starts a shell if the session is not running; a terminal that belongs to a daemon program attaches to that program instead and never starts a shell.

ParameterInValuesDescription
cwdquerystringStarting directory for a new session. The directory must already exist.
readonlyquerybooleanOpen the session read-only: output is shown, keyboard input is blocked.
titlequerystringBrowser tab title. HTML tags are removed.
fontSizequeryinteger (≥ 8, ≤ 72)Font size in pixels.
backgroundColorquerystringBackground colour: a hex colour (#RGB, #RRGGBB, #RRGGBBAA) or a CSS colour name.
panelqueryURLAn http(s) URL to show in a side panel next to the terminal.
panel-visiblequerybooleanShow the side panel on load.
panel-positionqueryleft, right, top, bottomWhere the side panel sits.
panel-widthquerystringInitial side-panel width, in pixels (400px) or percent, for a left or right panel.
panel-heightquerystringInitial side-panel height, in pixels (300px) or percent, for a top or bottom panel.
panel-resizablequerybooleanAllow resizing the side panel by dragging.
panel-width-pctqueryinteger (≥ 5, ≤ 95)Initial side-panel width as a percentage of the window. Takes precedence over panel-width.
panel-height-pctqueryinteger (≥ 5, ≤ 95)Initial side-panel height as a percentage of the window. Takes precedence over panel-height.
hide-toolbarquerybooleanHide the terminal toolbar.
fontFamilyquerystringCSS font-family list for terminal text.
fontWeightquerynormal, bold, 100, 200, 300, 400, 500, 600, 700, 800, 900Font weight for normal text.
fontWeightBoldquerynormal, bold, 100, 200, 300, 400, 500, 600, 700, 800, 900Font weight for bold text.
lineHeightqueryinteger (≥ 1)Line height as a multiple of the font size.
letterSpacingqueryintegerExtra spacing between characters, in whole pixels.
cursorBlinkquerybooleanMake the cursor blink.
cursorStylequeryblock, underline, barCursor shape when the terminal has focus.
cursorWidthqueryinteger (≥ 1)Cursor width in pixels when the cursor style is bar.
cursorInactiveStylequeryoutline, block, bar, underline, noneCursor shape when the terminal does not have focus.
themequeryobject (JSON)Colour theme as a JSON object (foreground, background, cursor, and the 16 ANSI colours).
minimumContrastRatioqueryinteger (≥ 1, ≤ 21)Minimum contrast ratio between text and background; colours are adjusted to meet it.
drawBoldTextInBrightColorsquerybooleanDraw bold text in the bright colour variants.
scrollbackqueryinteger (≥ 0, ≤ 100000)Number of lines kept above the visible screen.
scrollSensitivityqueryinteger (≥ 1)Scroll speed multiplier.
fastScrollSensitivityqueryinteger (≥ 1)Scroll speed multiplier while Alt is held.
smoothScrollDurationqueryinteger (≥ 0)Smooth-scroll duration in milliseconds; 0 scrolls instantly.
screenReaderModequerybooleanEnable screen-reader support.
disableResizeOverlayquerybooleanDo not show the size overlay while the window is resized.
unicodeVersionquerygraphemes, 11Character-width rules: graphemes (default, emoji-aware) or 11.
rendererTypequerydom, canvas, webglRenderer used to draw the terminal: webgl (the default; Firefox uses dom), dom, or canvas (drawn with WebGL). Phones, tablets and other touch-screen devices use dom even when webgl or canvas is asked for. Try dom if text renders wrongly with WebGL on a particular browser or GPU.

Refused parameters: terminal_id (forced; use serviceIndex), display (forced; use serviceIndex), cwd_auto_create (mutating), shell (mutating), user (mutating), cmd (mutating), arg (mutating), reset (mutating), pid (mutating), env (mutating), startup_script (mutating), welcome (mutating), debug (mutating), env_inject (mutating), desktop (mutating), redirect (mutating), agent (mutating), ephemeral (mutating), desktop_env (mutating), ssh_host (credential), ssh_user (credential), ssh_port (credential), ssh_password (credential), ssh_key (credential), socks5_host (credential), socks5_port (credential), socks5_user (credential), socks5_pass (credential), redirect_delay (non-ui), wait_timeout (non-ui).

A full graphical desktop environment in the browser.

ViewLabelPathRequiredFrameableAliasNotes
desktop.sessionDesktop/noneyesnodefault, starts a process

A full graphical desktop. Opening it starts the desktop if needed, then shows it once it is ready.

ParameterInValuesDescription
desktop_envqueryxfce, mateDesktop environment to start.
redirect_delayqueryinteger (≥ 0, ≤ 30)Extra seconds to wait after the desktop is ready before it opens.
wait_timeoutqueryinteger (≥ 1, ≤ 300)Seconds to wait for the desktop to become ready.

Refused parameters: terminal_id (forced; use serviceIndex), display (forced; use serviceIndex), desktop (forced; use view), redirect (forced; use view), cwd_auto_create (mutating), shell (mutating), user (mutating), cmd (mutating), arg (mutating), reset (mutating), pid (mutating), env (mutating), startup_script (mutating), welcome (mutating), debug (mutating), env_inject (mutating), agent (mutating), ssh_host (credential), ssh_user (credential), ssh_port (credential), ssh_password (credential), ssh_key (credential), socks5_host (credential), socks5_port (credential), socks5_user (credential), socks5_pass (credential), cwd (non-ui), readonly (non-ui), title (non-ui), fontSize (non-ui), backgroundColor (non-ui), panel (non-ui), panel-visible (non-ui), panel-position (non-ui), panel-width (non-ui), panel-height (non-ui), panel-resizable (non-ui), panel-width-pct (non-ui), panel-height-pct (non-ui), hide-toolbar (non-ui), fontFamily (non-ui), fontWeight (non-ui), fontWeightBold (non-ui), lineHeight (non-ui), letterSpacing (non-ui), cursorBlink (non-ui), cursorStyle (non-ui), cursorWidth (non-ui), cursorInactiveStyle (non-ui), theme (non-ui), minimumContrastRatio (non-ui), drawBoldTextInBrightColors (non-ui), scrollback (non-ui), scrollSensitivity (non-ui), fastScrollSensitivity (non-ui), smoothScrollDuration (non-ui), screenReaderMode (non-ui), disableResizeOverlay (non-ui), unicodeVersion (non-ui), rendererType (non-ui), ephemeral (mutating).

The Hoody agent’s interactive interface and API reference.

ViewLabelPathRequiredFrameableAliasNotes
agent.webuiAgent/noneyesnodefault, starts a process

The agent’s interactive interface in a browser terminal. Opening it starts the agent if it is not running.

ParameterInValuesDescription
titlequerystringBrowser tab title. HTML tags are removed.
fontSizequeryinteger (≥ 8, ≤ 72)Font size in pixels.
backgroundColorquerystringBackground colour: a hex colour (#RGB, #RRGGBB, #RRGGBBAA) or a CSS colour name.
panelqueryURLAn http(s) URL to show in a side panel next to the terminal.
panel-visiblequerybooleanShow the side panel on load.
panel-positionqueryleft, right, top, bottomWhere the side panel sits.
panel-widthquerystringInitial side-panel width, in pixels (400px) or percent, for a left or right panel.
panel-heightquerystringInitial side-panel height, in pixels (300px) or percent, for a top or bottom panel.
panel-resizablequerybooleanAllow resizing the side panel by dragging.
panel-width-pctqueryinteger (≥ 5, ≤ 95)Initial side-panel width as a percentage of the window. Takes precedence over panel-width.
panel-height-pctqueryinteger (≥ 5, ≤ 95)Initial side-panel height as a percentage of the window. Takes precedence over panel-height.
fontFamilyquerystringCSS font-family list for terminal text.
fontWeightquerynormal, bold, 100, 200, 300, 400, 500, 600, 700, 800, 900Font weight for normal text.
fontWeightBoldquerynormal, bold, 100, 200, 300, 400, 500, 600, 700, 800, 900Font weight for bold text.
lineHeightqueryinteger (≥ 1)Line height as a multiple of the font size.
letterSpacingqueryintegerExtra spacing between characters, in whole pixels.
cursorBlinkquerybooleanMake the cursor blink.
cursorStylequeryblock, underline, barCursor shape when the terminal has focus.
cursorWidthqueryinteger (≥ 1)Cursor width in pixels when the cursor style is bar.
cursorInactiveStylequeryoutline, block, bar, underline, noneCursor shape when the terminal does not have focus.
themequeryobject (JSON)Colour theme as a JSON object (foreground, background, cursor, and the 16 ANSI colours).
minimumContrastRatioqueryinteger (≥ 1, ≤ 21)Minimum contrast ratio between text and background; colours are adjusted to meet it.
drawBoldTextInBrightColorsquerybooleanDraw bold text in the bright colour variants.
scrollbackqueryinteger (≥ 0, ≤ 100000)Number of lines kept above the visible screen.
scrollSensitivityqueryinteger (≥ 1)Scroll speed multiplier.
fastScrollSensitivityqueryinteger (≥ 1)Scroll speed multiplier while Alt is held.
smoothScrollDurationqueryinteger (≥ 0)Smooth-scroll duration in milliseconds; 0 scrolls instantly.
screenReaderModequerybooleanEnable screen-reader support.
disableResizeOverlayquerybooleanDo not show the size overlay while the window is resized.
unicodeVersionquerygraphemes, 11Character-width rules: graphemes (default, emoji-aware) or 11.
rendererTypequerydom, canvas, webglRenderer used to draw the terminal: webgl (the default; Firefox uses dom), dom, or canvas (drawn with WebGL). Phones, tablets and other touch-screen devices use dom even when webgl or canvas is asked for. Try dom if text renders wrongly with WebGL on a particular browser or GPU.

Refused parameters: terminal_id (forced; use serviceIndex), display (forced; use serviceIndex), agent (forced; use view), cwd_auto_create (mutating), shell (mutating), user (mutating), cmd (mutating), arg (mutating), reset (mutating), pid (mutating), env (mutating), startup_script (mutating), welcome (mutating), debug (mutating), env_inject (mutating), desktop (mutating), redirect (mutating), onboarding (mutating), desktop_env (mutating), cwd (mutating), readonly (mutating), ssh_host (credential), ssh_user (credential), ssh_port (credential), ssh_password (credential), ssh_key (credential), socks5_host (credential), socks5_port (credential), socks5_user (credential), socks5_pass (credential), redirect_delay (non-ui), wait_timeout (non-ui), ephemeral (mutating).

Web viewer for one remote display.

ViewLabelPathRequiredFrameableAliasNotes
display.clientDisplay/noneyesnodefault

Opens the display in the web viewer.

ParameterInValuesDescription
decorationsquerybooleanShow window title bars and buttons. Set false for a frameless look.
toolbarquerybooleanShow the toolbar. false hides it, exactly as menu=false does.
menuquerybooleanShow the menu button. false hides it, exactly as toolbar=false does.
maximize_new_windowsquerybooleanOpen new application windows maximized. Takes effect only on a desktop of at least 1024x1024; on a smaller desktop new windows already fill the screen.
readonlyquerybooleanView-only mode: keyboard and mouse input is not sent.
dark_modequerybooleanUse the dark colour scheme.
encodingqueryauto, webp, jpeg, png, rgbPre-selects the encoding in the settings dialog; does not change the stream encoding.
offscreenquerybooleanRender with an offscreen canvas.
bandwidth_limitqueryinteger (≥ 0)Bandwidth limit for this viewer in bits per second; 0 means unlimited.
override_widthquerystringRequested desktop width: auto or a number.
override_heightquerystringRequested desktop height: auto or a number.
vrefreshqueryintegerRefresh rate in Hz; -1 picks it automatically.
suspend_inactive_tabquerybooleanPause updates while the browser tab is hidden.
soundquerybooleanPlay the session’s audio in the viewer.
audio_codecquerystringPreferred audio codec.
keyboardquerybooleanShow the on-screen keyboard.
swap_keysquerybooleanSwap the Cmd and Ctrl keys.
clipboardqueryfalseSet false to turn clipboard sharing off for this viewer.
clipboard_preferred_formatquerytext/plain, text/html, UTF8_STRINGPreferred clipboard format.
printingqueryfalseSet false to turn print forwarding off.
file_transferqueryfalseSet false to turn file transfer off.
videoquerybooleanAllow video encodings.
mediasource_videoquerybooleanAllow MediaSource video decoding.
web_notificationsquerybooleanPre-set the browser-notifications option in the connection dialog.
display_notificationsquerybooleanShow notifications inside the display view.
notification_connection_typequerywebsocket, pollingPre-set the notification connection type in the connection dialog.
reconnectquerybooleanReconnect automatically after a lost connection.
floating_menuquerybooleanShow the floating menu.
clockquerybooleanShow the server clock.
scroll_reverse_yqueryauto, true, falseReverse vertical scrolling: auto, true or false.
scroll_reverse_xquerybooleanReverse horizontal scrolling.
title_show_hoodyquerybooleanShow Hoody in the page title.
title_show_display_idquerybooleanShow the display number in the page title.

Refused parameters: displayId (mutating), node (mutating), project_id (mutating), container_id (mutating), url_display_id (mutating), ssl (mutating), webtransport (mutating), path (mutating), action (mutating), display (mutating), keyboard_layout (mutating), clipboard_poll (mutating), open_url (not-supported), notification_server_url (mutating), sharing (mutating), steal (mutating), app (mutating), remote_logging (mutating), insecure (auth), debug_main (mutating), debug_keyboard (mutating), debug_geometry (mutating), debug_mouse (mutating), debug_clipboard (mutating), debug_draw (mutating), debug_audio (mutating), debug_network (mutating), debug_file (mutating).

Status page of the headless or headful browser service, and a full-page view of its display.

ViewLabelPathRequiredFrameableAliasNotes
browser.statusStatus/noneyesnodefault
browser.displayDisplay/noneyesnonone

Lists the running browser instances with links to their display and developer tools.

ParameterInValuesDescription
maximize_new_windowsquerybooleanOpen new browser windows maximized in the display. On by default.

Always sent: start=false.

Shows the browser’s display full-page.

ParameterInValuesDescription
maximize_new_windowsquerybooleanOpen new browser windows maximized in the display. On by default.
iframe_urlqueryURLWeb address shown in the full-page frame instead of the browser’s own display. Must start with http:// or https://.

Always sent: view=display, start=false.

Refused parameters: display (forced; use serviceIndex).

A VS Code editor in the browser, opened on a folder of the container, optionally focused on a single extension.

ViewLabelPathRequiredFrameableAliasNotes
code.rootEditor (default folder)/api/v1/codenoneyesnostarts a process
code.editorEditor/api/v1/codefolderyesnodefault, starts a process
code.extensionExtension/api/v1/codeextensionyesnostarts a process

The editor opened on the default workspace folder the platform sets. Opening it starts the editor instance when it is not running yet.

ParameterInValuesDescription
localequerystringDisplay language of the editor, as a language tag such as en or pt-BR. Applies when the instance starts.
page-loaderquerybooleanShow a loading overlay while a newly started editor initialises. Applies when the instance starts.
disable-walkthroughsquerybooleanHide the editor’s walkthrough pages. Applies when the instance starts.
hoody-codequerybooleanLoad the Hoody page integration scripts, such as tab-title sync. Applies when the instance starts.

The editor opened on a folder. Opening it starts the editor instance when it is not running yet.

ParameterInValuesDescription
folderquerystringAbsolute path of the folder to open. It applies when the editor instance starts; a running instance keeps the folder it was started with.
localequerystringDisplay language of the editor, as a language tag such as en or pt-BR. Applies when the instance starts.
page-loaderquerybooleanShow a loading overlay while a newly started editor initialises. Applies when the instance starts.
disable-walkthroughsquerybooleanHide the editor’s walkthrough pages. Applies when the instance starts.
hoody-codequerybooleanLoad the Hoody page integration scripts, such as tab-title sync. Applies when the instance starts.

The editor in extension-only mode: only the chosen extension’s view is shown. Opening it starts the editor instance when it is not running yet.

ParameterInValuesDescription
folderquerystringAbsolute path of the folder to open. It applies when the editor instance starts; a running instance keeps the folder it was started with.
extensionquerystringExtension identifier in PUBLISHER.NAME form. Opens the editor in extension-only mode, showing only that extension’s view.
localequerystringDisplay language of the editor, as a language tag such as en or pt-BR. Applies when the instance starts.
page-loaderquerybooleanShow a loading overlay while a newly started editor initialises. Applies when the instance starts.
disable-walkthroughsquerybooleanHide the editor’s walkthrough pages. Applies when the instance starts.
hoody-codequerybooleanLoad the Hoody page integration scripts, such as tab-title sync. Applies when the instance starts.

Refused parameters: id (forced; use serviceIndex), restart (mutating), welcome-iframe-url (mutating), page-loader-path (mutating), proxy-domain (mutating), app-name (mutating).

A file manager for the container: folder listings, search, a code editor and a read-only viewer.

ViewLabelPathRequiredFrameableAliasNotes
files.rootRoot folder/noneyesnonone
files.folderFolder/{path}pathyesnodefault
files.editorEditor/{path}pathyesnonone
files.searchSearch/{directory}directory, qyesnonone

The listing of the container root folder, with upload, rename and delete controls for the user.

ParameterInValuesDescription
sortqueryname, mtime, sizeSort the listing by name, modification time or size.
orderqueryasc, descSort direction. Only desc changes the order; asc is the default.
themequeryoc-1, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme of the page.
colorSchemequerylight, darkLight or dark colour scheme. Without it the page follows the system setting.
fontqueryibm-plex-mono, cascadia-code, fira-code, hack, inconsolata, intel-one-mono, iosevka, jetbrains-mono, meslo-lgs, roboto-mono, source-code-pro, ubuntu-monoMonospace font of the editor and listing.
fontSizequeryinteger (≥ 8, ≤ 72)Editor font size in pixels, 8 to 72.
embedderOriginqueryURLOrigin of the embedding page, such as https://app.example.com. The page then accepts theme and layout messages from it and tells it when it is ready.
chromelessquerybooleanHide the header, sidebar, preview, footer and borders at once. Each can be turned back on with its own option set to false.
borderlessquerybooleanHide the page borders.
hideHeaderquerybooleanHide the header bar.
hideSidebarquerybooleanHide the sidebar.
hidePreviewquerybooleanHide the preview pane.
hideFooterquerybooleanHide the footer.
embedBgquerytransparentSet to transparent to let the embedding page’s background show through.

The listing of a folder, with upload, rename and delete controls for the user.

ParameterInValuesDescription
pathpathstringAbsolute path inside the container, starting with /. Each segment is percent-encoded; the slashes between segments are kept.
sortqueryname, mtime, sizeSort the listing by name, modification time or size.
orderqueryasc, descSort direction. Only desc changes the order; asc is the default.
themequeryoc-1, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme of the page.
colorSchemequerylight, darkLight or dark colour scheme. Without it the page follows the system setting.
fontqueryibm-plex-mono, cascadia-code, fira-code, hack, inconsolata, intel-one-mono, iosevka, jetbrains-mono, meslo-lgs, roboto-mono, source-code-pro, ubuntu-monoMonospace font of the editor and listing.
fontSizequeryinteger (≥ 8, ≤ 72)Editor font size in pixels, 8 to 72.
embedderOriginqueryURLOrigin of the embedding page, such as https://app.example.com. The page then accepts theme and layout messages from it and tells it when it is ready.
chromelessquerybooleanHide the header, sidebar, preview, footer and borders at once. Each can be turned back on with its own option set to false.
borderlessquerybooleanHide the page borders.
hideHeaderquerybooleanHide the header bar.
hideSidebarquerybooleanHide the sidebar.
hidePreviewquerybooleanHide the preview pane.
hideFooterquerybooleanHide the footer.
embedBgquerytransparentSet to transparent to let the embedding page’s background show through.

A text file opened in the code editor. Changes are saved only when the user saves.

ParameterInValuesDescription
pathpathstringAbsolute path inside the container, starting with /. Each segment is percent-encoded; the slashes between segments are kept.
themequeryoc-1, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme of the page.
colorSchemequerylight, darkLight or dark colour scheme. Without it the page follows the system setting.
fontqueryibm-plex-mono, cascadia-code, fira-code, hack, inconsolata, intel-one-mono, iosevka, jetbrains-mono, meslo-lgs, roboto-mono, source-code-pro, ubuntu-monoMonospace font of the editor and listing.
fontSizequeryinteger (≥ 8, ≤ 72)Editor font size in pixels, 8 to 72.
embedderOriginqueryURLOrigin of the embedding page, such as https://app.example.com. The page then accepts theme and layout messages from it and tells it when it is ready.
chromelessquerybooleanHide the header, sidebar, preview, footer and borders at once. Each can be turned back on with its own option set to false.
borderlessquerybooleanHide the page borders.
hideHeaderquerybooleanHide the header bar.
hideFooterquerybooleanHide the footer.
embedBgquerytransparentSet to transparent to let the embedding page’s background show through.

Always sent: edit=.

Search results for a text inside a folder and its subfolders.

ParameterInValuesDescription
directorypathstringAbsolute path of the folder to search in, starting with /, encoded like path.
qquerystringSearch text. Lists the entries below the folder whose names match.
themequeryoc-1, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme of the page.
colorSchemequerylight, darkLight or dark colour scheme. Without it the page follows the system setting.
fontqueryibm-plex-mono, cascadia-code, fira-code, hack, inconsolata, intel-one-mono, iosevka, jetbrains-mono, meslo-lgs, roboto-mono, source-code-pro, ubuntu-monoMonospace font of the editor and listing.
fontSizequeryinteger (≥ 8, ≤ 72)Editor font size in pixels, 8 to 72.
embedderOriginqueryURLOrigin of the embedding page, such as https://app.example.com. The page then accepts theme and layout messages from it and tells it when it is ready.
chromelessquerybooleanHide the header, sidebar, preview, footer and borders at once. Each can be turned back on with its own option set to false.
borderlessquerybooleanHide the page borders.
hideHeaderquerybooleanHide the header bar.
hideSidebarquerybooleanHide the sidebar.
hidePreviewquerybooleanHide the preview pane.
hideFooterquerybooleanHide the footer.
embedBgquerytransparentSet to transparent to let the embedding page’s background show through.

Refused parameters: json (non-ui), simple (non-ui), hash (non-ui), sha256 (non-ui), base64 (non-ui), view (not-read-only), download (mutating), content-type (non-ui), history (non-ui), at (non-ui), revision (non-ui), diff (non-ui), from_seq (non-ui), from_ts (non-ui), to_seq (non-ui), to_ts (non-ui), after_id (non-ui), limit (non-ui).

Hoody Notes: notebooks, pages and databases in the browser. Whether a framed Notes page shares its local cache with Notes open in a tab depends on the browser: a frame embedded by another site usually gets separate storage. Separate caches exchange changes, offline edits included, once they sync with the server. Offline edits survive a reload only when the browser gives Notes persistent storage; where it does not, Notes runs from memory and unsynced edits are lost on reload.

ViewLabelPathRequiredFrameableAliasNotes
notes.homeHome/noneyesnodefault
notes.createCreate notebook/createnoneyesnonone
notes.notebookNotebook/notebook/{userId}userIdyesnonone
notes.notebookHomeNotebook home/notebook/{userId}/homeuserIdyesnonone
notes.nodePage/notebook/{userId}/{nodeId}userId, nodeIdyesnonone
notes.modalPage with modal/notebook/{userId}/{nodeId}/modal/{modalNodeId}userId, nodeId, modalNodeIdyesnonone
notes.aliasPage by alias/notebook/{userId}/alias/{alias}userId, aliasyesnonone
notes.filesFiles/notebook/{userId}/filesuserIdyesnonone
notes.uploadsUploads/notebook/{userId}/uploadsuserIdyesnonone
notes.downloadsDownloads/notebook/{userId}/downloadsuserIdyesnonone
notes.usersUsers/notebook/{userId}/usersuserIdyesnonone
notes.settingsNotebook settings/notebook/{userId}/settingsuserIdyesnonone
notes.accountAccount settings/notebook/{userId}/accountuserIdyesnonone

Opens the last used locally available notebook, or the first available one.

ParameterInValuesDescription
modequeryreadonly, readwriteShare presentation. Either value hides the sidebar. readonly shows the notebook’s content and management views as a viewer sees them; your own account settings and appearance preferences stay editable. readwrite keeps the editing controls your permissions allow, including section and channel role overrides. Neither changes permissions.
sidebarqueryhiddenSet to hidden to hide the notebook sidebar.
themequeryoc-1, hc-black, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme id.
colorSchemequerylight, darkLight or dark colour scheme, over the saved preference. A page set to light or dark in its own appearance keeps it.
fontqueryibm-plex-mono, jetbrains-mono, fira-code, cascadia-code, hack, source-code-pro, inconsolata, roboto-mono, ubuntu-mono, intel-one-mono, meslo-lgs, iosevkaMonospace font id.

Opens the form for creating a new notebook; only submitting the form creates one. Like any Notes page, the first visit may set up the default notebook and your user in it.

ParameterInValuesDescription
themequeryoc-1, hc-black, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme id.
colorSchemequerylight, darkLight or dark colour scheme, over the saved preference. A page set to light or dark in its own appearance keeps it.
fontqueryibm-plex-mono, jetbrains-mono, fira-code, cascadia-code, hack, source-code-pro, inconsolata, roboto-mono, ubuntu-mono, intel-one-mono, meslo-lgs, iosevkaMonospace font id.

Opens a notebook at its last visited location, or its home page.

ParameterInValuesDescription
userIdpathstringYour own user id in the notebook to open, as the viewing identity knows it (not the notebook id, and not another member’s user id: an id the viewer does not have opens Notes home instead). New ids are 24 lowercase hexadecimal characters; older ids may be up to 28 lowercase letters and digits.
modequeryreadonly, readwriteShare presentation. Either value hides the sidebar. readonly shows the notebook’s content and management views as a viewer sees them; your own account settings and appearance preferences stay editable. readwrite keeps the editing controls your permissions allow, including section and channel role overrides. Neither changes permissions.
sidebarqueryhiddenSet to hidden to hide the notebook sidebar.
themequeryoc-1, hc-black, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme id.
colorSchemequerylight, darkLight or dark colour scheme, over the saved preference. A page set to light or dark in its own appearance keeps it.
fontqueryibm-plex-mono, jetbrains-mono, fira-code, cascadia-code, hack, source-code-pro, inconsolata, roboto-mono, ubuntu-mono, intel-one-mono, meslo-lgs, iosevkaMonospace font id.

Opens the home page of a notebook.

ParameterInValuesDescription
userIdpathstringYour own user id in the notebook to open, as the viewing identity knows it (not the notebook id, and not another member’s user id: an id the viewer does not have opens Notes home instead). New ids are 24 lowercase hexadecimal characters; older ids may be up to 28 lowercase letters and digits.
modequeryreadonly, readwriteShare presentation. Either value hides the sidebar. readonly shows the notebook’s content and management views as a viewer sees them; your own account settings and appearance preferences stay editable. readwrite keeps the editing controls your permissions allow, including section and channel role overrides. Neither changes permissions.
sidebarqueryhiddenSet to hidden to hide the notebook sidebar.
themequeryoc-1, hc-black, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme id.
colorSchemequerylight, darkLight or dark colour scheme, over the saved preference. A page set to light or dark in its own appearance keeps it.
fontqueryibm-plex-mono, jetbrains-mono, fira-code, cascadia-code, hack, source-code-pro, inconsolata, roboto-mono, ubuntu-mono, intel-one-mono, meslo-lgs, iosevkaMonospace font id.

Opens one page or node of a notebook.

ParameterInValuesDescription
userIdpathstringYour own user id in the notebook to open, as the viewing identity knows it (not the notebook id, and not another member’s user id: an id the viewer does not have opens Notes home instead). New ids are 24 lowercase hexadecimal characters; older ids may be up to 28 lowercase letters and digits.
nodeIdpathstringId of the page or node to open. New ids are 24 lowercase hexadecimal characters; older ids may be up to 28 lowercase letters and digits.
modequeryreadonly, readwriteShare presentation. Either value hides the sidebar. readonly shows the notebook’s content and management views as a viewer sees them; your own account settings and appearance preferences stay editable. readwrite keeps the editing controls your permissions allow, including section and channel role overrides. Neither changes permissions.
sidebarqueryhiddenSet to hidden to hide the notebook sidebar.
themequeryoc-1, hc-black, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme id.
colorSchemequerylight, darkLight or dark colour scheme, over the saved preference. A page set to light or dark in its own appearance keeps it.
fontqueryibm-plex-mono, jetbrains-mono, fira-code, cascadia-code, hack, source-code-pro, inconsolata, roboto-mono, ubuntu-mono, intel-one-mono, meslo-lgs, iosevkaMonospace font id.

Opens a page with another node shown in a modal over it.

ParameterInValuesDescription
userIdpathstringYour own user id in the notebook to open, as the viewing identity knows it (not the notebook id, and not another member’s user id: an id the viewer does not have opens Notes home instead). New ids are 24 lowercase hexadecimal characters; older ids may be up to 28 lowercase letters and digits.
nodeIdpathstringId of the page or node to open. New ids are 24 lowercase hexadecimal characters; older ids may be up to 28 lowercase letters and digits.
modalNodeIdpathstringId of the node shown in a modal over the page. New ids are 24 lowercase hexadecimal characters; older ids may be up to 28 lowercase letters and digits.
modequeryreadonly, readwriteShare presentation. Either value hides the sidebar. readonly shows the notebook’s content and management views as a viewer sees them; your own account settings and appearance preferences stay editable. readwrite keeps the editing controls your permissions allow, including section and channel role overrides. Neither changes permissions.
sidebarqueryhiddenSet to hidden to hide the notebook sidebar.
themequeryoc-1, hc-black, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme id.
colorSchemequerylight, darkLight or dark colour scheme, over the saved preference. A page set to light or dark in its own appearance keeps it.
fontqueryibm-plex-mono, jetbrains-mono, fira-code, cascadia-code, hack, source-code-pro, inconsolata, roboto-mono, ubuntu-mono, intel-one-mono, meslo-lgs, iosevkaMonospace font id.

Opens the page that has the given alias, or the notebook home when none has it.

ParameterInValuesDescription
userIdpathstringYour own user id in the notebook to open, as the viewing identity knows it (not the notebook id, and not another member’s user id: an id the viewer does not have opens Notes home instead). New ids are 24 lowercase hexadecimal characters; older ids may be up to 28 lowercase letters and digits.
aliaspathstringPage alias (lowercase letters, digits, ’_’ and ’-’, up to 48 characters). Opens the page with that alias, or the notebook home when no page has it.
modequeryreadonly, readwriteShare presentation. Either value hides the sidebar. readonly shows the notebook’s content and management views as a viewer sees them; your own account settings and appearance preferences stay editable. readwrite keeps the editing controls your permissions allow, including section and channel role overrides. Neither changes permissions.
sidebarqueryhiddenSet to hidden to hide the notebook sidebar.
themequeryoc-1, hc-black, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme id.
colorSchemequerylight, darkLight or dark colour scheme, over the saved preference. A page set to light or dark in its own appearance keeps it.
fontqueryibm-plex-mono, jetbrains-mono, fira-code, cascadia-code, hack, source-code-pro, inconsolata, roboto-mono, ubuntu-mono, intel-one-mono, meslo-lgs, iosevkaMonospace font id.

Opens the file tree of a notebook.

ParameterInValuesDescription
userIdpathstringYour own user id in the notebook to open, as the viewing identity knows it (not the notebook id, and not another member’s user id: an id the viewer does not have opens Notes home instead). New ids are 24 lowercase hexadecimal characters; older ids may be up to 28 lowercase letters and digits.
modequeryreadonly, readwriteShare presentation. Either value hides the sidebar. readonly shows the notebook’s content and management views as a viewer sees them; your own account settings and appearance preferences stay editable. readwrite keeps the editing controls your permissions allow, including section and channel role overrides. Neither changes permissions.
sidebarqueryhiddenSet to hidden to hide the notebook sidebar.
themequeryoc-1, hc-black, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme id.
colorSchemequerylight, darkLight or dark colour scheme, over the saved preference. A page set to light or dark in its own appearance keeps it.
fontqueryibm-plex-mono, jetbrains-mono, fira-code, cascadia-code, hack, source-code-pro, inconsolata, roboto-mono, ubuntu-mono, intel-one-mono, meslo-lgs, iosevkaMonospace font id.

Opens the uploads list of a notebook.

ParameterInValuesDescription
userIdpathstringYour own user id in the notebook to open, as the viewing identity knows it (not the notebook id, and not another member’s user id: an id the viewer does not have opens Notes home instead). New ids are 24 lowercase hexadecimal characters; older ids may be up to 28 lowercase letters and digits.
modequeryreadonly, readwriteShare presentation. Either value hides the sidebar. readonly shows the notebook’s content and management views as a viewer sees them; your own account settings and appearance preferences stay editable. readwrite keeps the editing controls your permissions allow, including section and channel role overrides. Neither changes permissions.
sidebarqueryhiddenSet to hidden to hide the notebook sidebar.
themequeryoc-1, hc-black, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme id.
colorSchemequerylight, darkLight or dark colour scheme, over the saved preference. A page set to light or dark in its own appearance keeps it.
fontqueryibm-plex-mono, jetbrains-mono, fira-code, cascadia-code, hack, source-code-pro, inconsolata, roboto-mono, ubuntu-mono, intel-one-mono, meslo-lgs, iosevkaMonospace font id.

Opens the downloads list of a notebook.

ParameterInValuesDescription
userIdpathstringYour own user id in the notebook to open, as the viewing identity knows it (not the notebook id, and not another member’s user id: an id the viewer does not have opens Notes home instead). New ids are 24 lowercase hexadecimal characters; older ids may be up to 28 lowercase letters and digits.
modequeryreadonly, readwriteShare presentation. Either value hides the sidebar. readonly shows the notebook’s content and management views as a viewer sees them; your own account settings and appearance preferences stay editable. readwrite keeps the editing controls your permissions allow, including section and channel role overrides. Neither changes permissions.
sidebarqueryhiddenSet to hidden to hide the notebook sidebar.
themequeryoc-1, hc-black, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme id.
colorSchemequerylight, darkLight or dark colour scheme, over the saved preference. A page set to light or dark in its own appearance keeps it.
fontqueryibm-plex-mono, jetbrains-mono, fira-code, cascadia-code, hack, source-code-pro, inconsolata, roboto-mono, ubuntu-mono, intel-one-mono, meslo-lgs, iosevkaMonospace font id.

Opens the member list of a notebook.

ParameterInValuesDescription
userIdpathstringYour own user id in the notebook to open, as the viewing identity knows it (not the notebook id, and not another member’s user id: an id the viewer does not have opens Notes home instead). New ids are 24 lowercase hexadecimal characters; older ids may be up to 28 lowercase letters and digits.
modequeryreadonly, readwriteShare presentation. Either value hides the sidebar. readonly shows the notebook’s content and management views as a viewer sees them; your own account settings and appearance preferences stay editable. readwrite keeps the editing controls your permissions allow, including section and channel role overrides. Neither changes permissions.
sidebarqueryhiddenSet to hidden to hide the notebook sidebar.
themequeryoc-1, hc-black, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme id.
colorSchemequerylight, darkLight or dark colour scheme, over the saved preference. A page set to light or dark in its own appearance keeps it.
fontqueryibm-plex-mono, jetbrains-mono, fira-code, cascadia-code, hack, source-code-pro, inconsolata, roboto-mono, ubuntu-mono, intel-one-mono, meslo-lgs, iosevkaMonospace font id.

Opens the settings of a notebook.

ParameterInValuesDescription
userIdpathstringYour own user id in the notebook to open, as the viewing identity knows it (not the notebook id, and not another member’s user id: an id the viewer does not have opens Notes home instead). New ids are 24 lowercase hexadecimal characters; older ids may be up to 28 lowercase letters and digits.
modequeryreadonly, readwriteShare presentation. Either value hides the sidebar. readonly shows the notebook’s content and management views as a viewer sees them; your own account settings and appearance preferences stay editable. readwrite keeps the editing controls your permissions allow, including section and channel role overrides. Neither changes permissions.
sidebarqueryhiddenSet to hidden to hide the notebook sidebar.
themequeryoc-1, hc-black, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme id.
colorSchemequerylight, darkLight or dark colour scheme, over the saved preference. A page set to light or dark in its own appearance keeps it.
fontqueryibm-plex-mono, jetbrains-mono, fira-code, cascadia-code, hack, source-code-pro, inconsolata, roboto-mono, ubuntu-mono, intel-one-mono, meslo-lgs, iosevkaMonospace font id.

Opens the account settings for a notebook’s account. The display name and avatar choice are kept in this browser for the signed-in identity and do not sync to other browsers or to a frame with separate storage; the avatar image itself is uploaded to the server.

ParameterInValuesDescription
userIdpathstringYour own user id in the notebook to open, as the viewing identity knows it (not the notebook id, and not another member’s user id: an id the viewer does not have opens Notes home instead). New ids are 24 lowercase hexadecimal characters; older ids may be up to 28 lowercase letters and digits.
modequeryreadonly, readwriteShare presentation. Either value hides the sidebar. readonly shows the notebook’s content and management views as a viewer sees them; your own account settings and appearance preferences stay editable. readwrite keeps the editing controls your permissions allow, including section and channel role overrides. Neither changes permissions.
sidebarqueryhiddenSet to hidden to hide the notebook sidebar.
themequeryoc-1, hc-black, aura, ayu, carbonfox, catppuccin, dracula, gruvbox, monokai, nightowl, nord, onedarkpro, shadesofpurple, solarized, tokyonight, vesperColour theme id.
colorSchemequerylight, darkLight or dark colour scheme, over the saved preference. A page set to light or dark in its own appearance keeps it.
fontqueryibm-plex-mono, jetbrains-mono, fira-code, cascadia-code, hack, source-code-pro, inconsolata, roboto-mono, ubuntu-mono, intel-one-mono, meslo-lgs, iosevkaMonospace font id.

Refused parameters: widgetId (mutating).

Hoody SQLite studio: browse tables, run queries and manage key-value data.

ViewLabelPathRequiredFrameableAliasNotes
sqlite.overviewOverview/noneyesnodefault
sqlite.tablesTables/tablesnoneyesnonone
sqlite.queryQuery editor/querynoneyesnonone
sqlite.kvStoreKey-value store/kv-storenoneyesnonone
sqlite.historyHistory/historynoneyesnonone
sqlite.pragmasPragmas/pragmasnoneyesnonone

Opens the database overview.

ParameterInValuesDescription
dbquerystringPath of the database file to open. A missing file is reported as an error, never created.
colorSchemequerylight, dark, systemForce the light or dark colour scheme, or follow the system.
embedquerybooleanCompact chrome for embedding: a thin navigation bar instead of the full header.

Opens the table browser, optionally with one table selected.

ParameterInValuesDescription
tablequerystringTable to select. On the key-value view it names the key-value table (default kv_store).
dbquerystringPath of the database file to open. A missing file is reported as an error, never created.
colorSchemequerylight, dark, systemForce the light or dark colour scheme, or follow the system.
embedquerybooleanCompact chrome for embedding: a thin navigation bar instead of the full header.

Opens the SQL query editor. Nothing runs until you run a query.

ParameterInValuesDescription
dbquerystringPath of the database file to open. A missing file is reported as an error, never created.
colorSchemequerylight, dark, systemForce the light or dark colour scheme, or follow the system.
embedquerybooleanCompact chrome for embedding: a thin navigation bar instead of the full header.

Opens the key-value store browser.

ParameterInValuesDescription
tablequerystringTable to select. On the key-value view it names the key-value table (default kv_store).
dbquerystringPath of the database file to open. A missing file is reported as an error, never created.
colorSchemequerylight, dark, systemForce the light or dark colour scheme, or follow the system.
embedquerybooleanCompact chrome for embedding: a thin navigation bar instead of the full header.

Opens the query history.

ParameterInValuesDescription
dbquerystringPath of the database file to open. A missing file is reported as an error, never created.
colorSchemequerylight, dark, systemForce the light or dark colour scheme, or follow the system.
embedquerybooleanCompact chrome for embedding: a thin navigation bar instead of the full header.

Opens the database pragma settings. Nothing changes until you save.

ParameterInValuesDescription
dbquerystringPath of the database file to open. A missing file is reported as an error, never created.
colorSchemequerylight, dark, systemForce the light or dark colour scheme, or follow the system.
embedquerybooleanCompact chrome for embedding: a thin navigation bar instead of the full header.

Refused parameters: sql (not-supported).

Notification landing page: recent notifications and a live feed from all displays, plus a test sender for one display.

ViewLabelPathRequiredFrameableAliasNotes
notifications.landingNotifications/noneyesyes (display selects)default

Recent and live notifications from every display, with a button to send a test notification to one display.

ParameterInValuesDescription
displayquerystringDisplay number to send the test notification to. Takes precedence over the display named by the host. The feed always shows every display.
displaysquerystringAlternative name for display; read only when display is absent.

Browser pages for streaming data through a named pipe path: send files or text, receive downloads, share a screen, camera or microphone, watch video, and follow a transfer’s progress.

ViewLabelPathRequiredFrameableAliasNotes
pipe.sendSend/api/v1/pipe/noneyesnodefault
pipe.noscriptSend without JavaScript/api/v1/pipe/noscriptnoneyesnonone
pipe.progressProgress/api/v1/pipe/{path}pathyesnonone
pipe.videoVideo player/api/v1/pipe/{path}pathyesnochanges state
pipe.shareShare screen, camera or audio/api/v1/pipe/{path}pathyesnonone
pipe.receiveReceive/api/v1/pipe/{path}pathyesnonone

The page for sending a file or text to a pipe path. Its fields can be pre-filled, except the file itself, which the user picks; nothing is sent until the user confirms.

ParameterInValuesDescription
namequerystringPipe name to pre-fill on the send page, without a leading slash. The values . and .. as a segment, control characters, backslashes and the reserved names help, noscript, health, metrics, favicon.ico and robots.txt are refused. Absent: the page picks a random name.
nqueryinteger (≥ 1, ≤ 256)How many receivers the transfer waits for, from 1 to 256. It pre-fills the receivers field; nothing is sent or received until the user confirms on the page.
textquerystringText to pre-fill on the send page; it selects text mode unless mode says otherwise.
modequeryfile, textWhether the form sends a file or typed text. Defaults to file, or on the send page to text when text is given.
filenamequerystringA file name to pre-fill: on the send page the name given to a text or pasted send, on the receive page the download name.

A plain HTML form for sending a file or text to a pipe path, for browsers without JavaScript.

ParameterInValuesDescription
pathquerystringPipe path to prefill in the form, without a leading slash. Letters, digits and the characters . _ ~ : @ ! $ & ’ ( ) * + , ; = % - only. The values . and .., and the reserved names help, noscript, health, metrics, favicon.ico and robots.txt are refused.
modequeryfile, textWhether the form sends a file or typed text. Defaults to file, or on the send page to text when text is given.
waitqueryinteger (≥ 1, ≤ 3600)Seconds the page’s own transfer waits for the other side, from 1 to 3600 (default 300): on the receive page how long the download waits for the sender, on the video player how long the player waits for the stream, on the send page without JavaScript how long the send waits for the receivers. It changes no other participant’s wait.
sha256query11 to have the kit compute a SHA-256 digest of the transfer the page starts: the receive page’s download or the send of the page without JavaScript. Leave it out for none. The page without JavaScript shows the digest in its send result; the receive page shows none (the digest goes to the sender’s status).

A live view of a transfer’s progress on a pipe path. It only observes; it does not receive the data.

ParameterInValuesDescription
pathpathstringThe pipe path the sender uses, without a leading slash. Each segment is percent-encoded.

Always sent: progress=true.

A video player for a video streamed to a pipe path. Opening it starts receiving: the player takes the stream as one of the transfer’s receivers or, with live, joins a live stream from now on.

ParameterInValuesDescription
pathpathstringThe pipe path the sender uses, without a leading slash. Each segment is percent-encoded.
livequery11 for a live stream. On the share page it pre-ticks Live: once the user starts, viewers join and leave at any time, and the receivers count is hidden and not used. On the video player the player joins a live stream from now on and keeps up with the newest data. Any n is then ignored.
waitqueryinteger (≥ 1, ≤ 3600)Seconds the page’s own transfer waits for the other side, from 1 to 3600 (default 300): on the receive page how long the download waits for the sender, on the video player how long the player waits for the stream, on the send page without JavaScript how long the send waits for the receivers. It changes no other participant’s wait.

Always sent: video=true.

A page that streams the user’s screen, camera or microphone live to a pipe path, for viewers on the video view. Capture starts only on the user’s click. In an iframe, give the frame allow=“display-capture; camera; microphone; autoplay”.

ParameterInValuesDescription
pathpathstringThe pipe path the sender uses, without a leading slash. Each segment is percent-encoded.
sourcequeryscreen, camera, audioWhat the share page captures: screen (default), camera or audio (microphone only).
audioquery1, 01 to also capture audio when sharing a screen, 0 (default) for none.
surfacequerymonitor, window, browserWhich kind of surface the browser’s screen picker offers first: monitor, window or browser (tab). A hint; the user still picks.
qualityquerylow, medium, highVideo quality of the share: low, medium (default) or high.
fpsqueryinteger (≥ 1, ≤ 60)Frames per second of the share, from 1 to 60 (default 30).
nqueryinteger (≥ 1, ≤ 256)How many receivers the transfer waits for, from 1 to 256. It pre-fills the receivers field; nothing is sent or received until the user confirms on the page.
livequery11 for a live stream. On the share page it pre-ticks Live: once the user starts, viewers join and leave at any time, and the receivers count is hidden and not used. On the video player the player joins a live stream from now on and keeps up with the newest data. Any n is then ignored.

Always sent: share=true.

A page for receiving what is sent to a pipe path as a download. It shows the transfer state and starts the download only on the user’s click.

ParameterInValuesDescription
pathpathstringThe pipe path the sender uses, without a leading slash. Each segment is percent-encoded.
nqueryinteger (≥ 1, ≤ 256)How many receivers the transfer waits for, from 1 to 256. It pre-fills the receivers field; nothing is sent or received until the user confirms on the page.
filenamequerystringA file name to pre-fill: on the send page the name given to a text or pasted send, on the receive page the download name.
waitqueryinteger (≥ 1, ≤ 3600)Seconds the page’s own transfer waits for the other side, from 1 to 3600 (default 300): on the receive page how long the download waits for the sender, on the video player how long the player waits for the stream, on the send page without JavaScript how long the send waits for the receivers. It changes no other participant’s wait.
sha256query11 to have the kit compute a SHA-256 digest of the transfer the page starts: the receive page’s download or the send of the page without JavaScript. Leave it out for none. The page without JavaScript shows the digest in its send result; the receive page shows none (the digest goes to the sender’s status).

Always sent: receive=true.

Refused parameters: download (mutating), autostart (mutating), status (non-ui), transfer (non-ui), ws (mutating).

Cron manager: browse and edit the crontab entries of each user.

ViewLabelPathRequiredFrameableAliasNotes
cron.managerCron manager/noneyesyesdefault

Lists users and their cron entries; changes are made only through the page controls.

Management pages for chat-channel bot registrations.

ViewLabelPathRequiredFrameableAliasNotes
bot.indexBot registrations/noneyesnodefault
bot.detailRegistration/api/v1/bot/ui/registrations/{registrationId}registrationIdyesnonone
bot.confirmDeleteConfirm deletion/api/v1/bot/ui/registrations/{registrationId}/deleteregistrationIdyesnonone

Lists every bot registration of the owner, with a form to register a new one.

One bot registration with its state and its start and stop controls.

ParameterInValuesDescription
registrationIdpathstringRegistration id, as returned when the bot was registered or listed.

Asks for confirmation before a registration is deleted. Opening this page deletes nothing.

ParameterInValuesDescription
registrationIdpathstringRegistration id, as returned when the bot was registered or listed.

A results page that lists the applications matching a name, with their versions and the provider each comes from.

ViewLabelPathRequiredFrameableAliasNotes
run.resultsResults/api/v1/run/resolveappyesnodefault

The list of applications matching a name. It only looks them up; nothing is installed or started.

ParameterInValuesDescription
appquerystringName of the application to look up.
osquerylinux, windows, anyTarget operating system of the application.
sourcequeryarray[]Source types to search: nix, pkgx, appimage, oci (Docker images already on the machine), registry, system or any. Repeat the key for several types.
kindquerygui, cli, anyGraphical or terminal applications.
archqueryamd64, arm64, anyTarget CPU architecture.
profilequerystringNamed preference profile to apply to this lookup; without it, the selected profile applies. The results page appears only when the profile leaves pick unset or set to ask: a profile that picks a result answers with JSON instead.
versionquerystringPackage version for pkgx candidates: the listed pkgx entry runs that version. It does not change which applications are listed.
repoquerystringLimits the GitHub-release applications to the configured repository with this name.
releasequerystringRelease tag to use for GitHub-release applications.
assetquerystringAsset-name filter for GitHub-release applications; with no matching asset the application is not listed.
limitqueryinteger (≥ 1, ≤ 100)Maximum number of candidates, 1 to 100. The page lists at most 50.

Always sent: format=html.

Refused parameters: pick (non-ui), pick_index (non-ui), candidate_id (non-ui), set_id (non-ui), terminal_id (non-ui), display (non-ui), dry_run (non-ui), print_curl (non-ui), origin (mutating).

A short information page about the watch service.

ViewLabelPathRequiredFrameableAliasNotes
watch.indexAbout/noneyesnodefault

A static page describing the watch service and where its API starts.

Pages served by your own scripts. The address runs the script mapped to the path, and the script decides what is returned.

ViewLabelPathRequiredFrameableAliasNotes
exec.scriptScript page/{path}pathyesnodefault, starts a process, changes state

The response of your script for the given path. Opening it runs the script; any query parameters are passed to it unchanged.

ParameterInValuesDescription
pathpathstringPath of the script route to open, without the leading slash. Each segment is percent-encoded; the slashes between segments are kept.

Any other query parameter is passed through unchanged.

Whatever the application listening on the chosen port serves.

ViewLabelPathRequiredFrameableAliasNotes
http.contentApp content/{path}noneyesnodefault

A path of the application on this port, with any query the caller passes.

ParameterInValuesDescription
pathpathstringPath inside the application, encoded segment by segment.

Any other query parameter is passed through unchanged.

Whatever the application listening on the chosen port serves.

ViewLabelPathRequiredFrameableAliasNotes
https.contentApp content/{path}noneyesnodefault

A path of the application on this port, with any query the caller passes.

ParameterInValuesDescription
pathpathstringPath inside the application, encoded segment by segment.

Any other query parameter is passed through unchanged.

  • Kit services describes what each kit does once its UI is open.
  • Proxy covers aliases, custom domains and permission rules for the URLs you embed.
  • Security explains the open-by-default model and how to lock a container down before sharing it.