Skip to content

The Terminal Web UI & API Access endpoints expose the browser-based interactive terminal and the machine-readable API specification. Use them to embed a customizable terminal session in a web client, or to programmatically retrieve the OpenAPI definition in JSON or YAML for tooling integration, client generation, or documentation.

Returns the interactive web terminal interface HTML page. The terminal can be heavily customized via URL query parameters controlling session sharing, display settings, SSH connections, proxying, and access control.

NameInTypeRequiredDescription
terminal_idquerystringNoTerminal session ID (numeric 1-65535, auto-generated if not provided) - Allows multiple clients to share the same terminal session
cwdquerystringNoInitial working directory for new terminal sessions (only applied when session is first created)
cwd_auto_createquerybooleanNoAuto-create cwd when the requested working directory does not exist yet. Only applies when cwd is explicitly provided for a new session. Enable with true, 1, or no value (default: false)
shellquerystringNoShell to use: bash, zsh, fish, sh, etc. (default: server startup command, only applies to new sessions)
userquerystringNoSystem user to spawn shell as (requires su permissions, only applies to new sessions, user must exist on system)
cmdquerystringNoBase64-encoded command to execute automatically on spawn (executes once when shell starts)
readonlyquerybooleanNoEnable read-only mode (blocks keyboard input, allows viewing only) - Use true, 1, or no value
titlequerystringNoBrowser window/tab title (default: application default) - HTML tags removed, max 200 characters, useful for organizing multiple terminal tabs
fontSizequeryintegerNoTerminal font size in pixels (default: 13, range: 8-72) - Accepts px suffix (e.g., 16px), applied immediately when terminal loads
backgroundColorquerystringNoTerminal background color (default: #2b2b2b) - Supports hex colors (#RGB, #RRGGBB, #RRGGBBAA) or CSS named colors (black, white, red, blue, green, navy, etc.)
panelquerystringNoURL to display in side panel iframe (enables panel feature)
panel-visiblequerybooleanNoShow panel on load (default: true if panel URL provided, false otherwise)
panel-positionquerystringNoPanel position: left or right (default: right)
panel-widthquerystringNoInitial panel width in pixels or percentage (default: 400px)
panel-resizablequerybooleanNoAllow panel resizing via drag handle (default: true)
hide-toolbarquerybooleanNoHide the terminal toolbar (default: false)
ssh_hostquerystringNoSSH server hostname or IP address (creates SSH session if provided with ssh_user)
ssh_userquerystringNoSSH username (required if ssh_host is provided)
ssh_portquerystringNoSSH port number (default: 22)
ssh_passwordquerystringNoSSH password for authentication (use with caution, prefer key-based auth)
socks5_hostquerystringNoSOCKS5 proxy hostname for SSH connection
socks5_portquerystringNoSOCKS5 proxy port (default: 1080)
socks5_userquerystringNoSOCKS5 proxy username for authentication
socks5_passquerystringNoSOCKS5 proxy password for authentication
desktopquerybooleanNoEnable Hoody Display desktop mode. Provides a full desktop environment instead of seamless individual windows (default: false)
desktop_envquerystringNoDesktop environment to launch (implies desktop=true). Starts the specified DE session after the display is ready. Valid values: xfce, mate
redirectquerystringNoRedirect mode. When set to display, creates/ensures the terminal session, waits for X11 display readiness, then returns HTTP 302 redirect to the display URL. Requires terminal_id and display params
redirect_delayqueryintegerNoExtra delay in seconds after display is ready before redirecting. Only used when redirect=display (default: 0)
argquerystringNoCommand-line arguments to pass to shell (requires --url-arg server option, can be repeated)
welcomequerybooleanNoShow welcome message on startup (default: false). Supports ?welcome=true, ?welcome=1, or ?welcome (no value = true)
debugquerybooleanNoEnable debug output in wrapper script (default: false)
resetquerybooleanNoKill existing terminal process and reconfigure session (default: false). Use to switch shell, user, or from shell to SSH
pidqueryintegerNoAttach to an existing process by PID instead of spawning a new shell. Implies reset
envquerystringNoInject environment variable as KEY=VALUE. Can be repeated for multiple variables (e.g., ?env=FOO=bar&env=BAZ=qux)
displayquerystringNoX11 display number for GUI applications. Accepts number (e.g., 1) or :number (e.g., :1). Shorthand for ?env=DISPLAY=:N
env_injectquerybooleanNoInject HOODY_* environment variables into shell session (default: true). Set to false to disable
startup_scriptquerystringNoPath to startup script to execute before shell launch (only applied on first session creation)
ssh_keyquerystringNoBase64-encoded SSH private key for key-based authentication (prefer over password-based auth)
panel-heightquerystringNoInitial panel height for top/bottom positioned panels (default: 300px)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Hoody Terminal</title>
</head>
<body>
<div id="terminal"></div>
<script src="/static/js/terminal.js"></script>
</body>
</html>
const terminal = await client.terminal.web.get({
terminal_id: "42",
shell: "bash",
fontSize: 14,
backgroundColor: "#1e1e1e",
title: "Production Server",
ssh_host: "10.0.0.5",
ssh_user: "deploy",
ssh_port: "2222",
});

Returns the complete OpenAPI 3.0 specification for this API in JSON format. The specification is automatically generated from source code annotations and is suitable for client generation, validation, and tooling integration.

This endpoint takes no parameters.

{
"openapi": "3.0.0",
"info": {
"title": "Hoody Terminal API",
"version": "1.0.0"
},
"paths": {},
"components": {}
}
const spec = await client.terminal.docs.getJson();

Returns the complete OpenAPI 3.0 specification for this API in YAML format. The specification is automatically generated from source code annotations and is suitable for human review, documentation tooling, and configuration of API gateways.

This endpoint takes no parameters.

openapi: 3.0.0
info:
title: Hoody Terminal API
version: 1.0.0
paths: {}
components: {}
const specYaml = await client.terminal.docs.getYaml();