Skip to content
Hoody.com

The Hoody Code Orchestrator is the control plane inside each Hoody container that exposes the browser-based VS Code interface. It loads the IDE shell, gates access behind password-based authentication, proxies HTTP and WebSocket traffic to applications running on local ports inside the container, and serves the supporting static, PWA, and security files that ship with the editor.

All endpoints run inside the container’s code service and are reached at:

https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com

Returns the main VS Code web interface. The response is the HTML shell that bootstraps the editor in the browser.

When authentication is enabled and the request has no session cookie, the server responds with a 302 redirect to /login. When no folder or workspace query parameter is supplied, the IDE reopens the folder or workspace that was open in the previous session, or the path that was passed on the command line.

Add ?extension=PUBLISHER.NAME to launch in extension-only mode: the file explorer is hidden and the extension’s UI is focused, which is useful for embedding an extension as a standalone web app.

NameInTypeRequiredDescription
folderquerystringNoAbsolute path to the folder to open. Takes precedence over workspace. Stored in settings for the next session.
workspacequerystringNoAbsolute path to a .code-workspace file. Used when folder is not provided.
extensionquerystringNoExtension identifier in PUBLISHER.NAME form. Opens the IDE in extension-only mode (file explorer hidden, extension UI focused). Example: ms-python.python.
ewquerybooleanNoEmpty Window flag. When present, clears the last opened folder or workspace from settings.
localequerystringNoIETF language tag controlling the UI language (for example en, fr, zh-CN).
Terminal window
curl "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/api/v1/code?folder=/home/user/project&locale=en"

Generates or retrieves the server’s web key half used for VS Code’s secure communications. The key is 256 bits (32 bytes), created once on first request, and persisted at user-data-dir/serve-web-key-half so it is reused across restarts.

The response body is the raw 32-byte binary key. Use a binary-safe client when fetching this endpoint.

Terminal window
curl -X POST "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/api/v1/code/mint-key" \
-o serve-web-key-half

Returns the Progressive Web App manifest used to install Hoody Code. The manifest name is configurable via --app-name. Display mode is fullscreen with window-controls-overlay listed under display_override.

This endpoint takes no parameters.

Terminal window
curl "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/api/v1/code/manifest.json"

The authentication flow uses session cookies. The endpoints below are only active when the container is started with password authentication enabled.

Returns the login page HTML. If the visitor is already authenticated, the server responds with a 302 redirect to the requested target.

NameInTypeRequiredDescription
toquerystringNoURL to redirect to after successful login. Defaults to /.
Terminal window
curl "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/api/v1/code/login?to=/projects/hoody"

Authenticates a user with a password and, on success, sets the session cookie and redirects to the requested target.

Login attempts are rate limited to 2 per minute and 12 per hour. Failed attempts are logged with the source IP and user agent.

NameInTypeRequiredDescription
toquerystringNoURL to redirect to after successful login. Defaults to /.

The body is application/x-www-form-urlencoded.

NameTypeRequiredDescription
passwordstringYesPassword to authenticate with.
Terminal window
curl -X POST "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/api/v1/code/login?to=/projects/hoody" \
-d "password=correct-horse-battery-staple" \
-c cookies.txt

Clears the session cookie and redirects to the home page. Only available when authentication is enabled.

This endpoint takes no parameters.

Terminal window
curl "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/api/v1/code/logout"

The orchestrator exposes applications running on local ports inside the container through two complementary routes. The proxy route strips the prefix before forwarding; the absproxy route keeps the full path so the proxied app can be aware it is mounted under a subpath.

Both routes require authentication unless the request is a OPTIONS preflight and --skip-auth-preflight is set.

Proxies a request to a service running on a local port. The /proxy/:port prefix is stripped before forwarding, so https://.../proxy/3000/api/users reaches the upstream as http://localhost:3000/api/users.

All HTTP methods and WebSocket upgrades are supported.

NameInTypeRequiredDescription
portpathintegerYesLocal port to proxy to (1024-65535).
pathpathstringYesPath to append to the proxied request.
Terminal window
curl "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/api/v1/code/proxy/3000/api/users"

Proxies a request to a service running on a local port while keeping the full path, including the /absproxy/:port/ prefix. Use this when the proxied app needs to be aware that it is mounted under a subpath; the upstream must be configured to serve from /absproxy/:port/.

Set --abs-proxy-base-path on the server to customize the base path.

NameInTypeRequiredDescription
portpathintegerYesLocal port to proxy to.
pathpathstringYesPath to append to the proxied request. The /absproxy/:port/ prefix is preserved when forwarding.
Terminal window
curl "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/api/v1/code/absproxy/8080/health"

Serves static files from the build directory, including the compiled JavaScript and CSS bundles, images, icons, and the service worker.

Cache headers are tied to the build commit in production. In development mode caching is disabled. The service worker at /_static/out/browser/serviceWorker.js is served with Service-Worker-Allowed: / so it can register at the root scope.

NameInTypeRequiredDescription
pathpathstringYesPath to the static file relative to the build directory (for example out/browser/workbench.js).
Terminal window
curl "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/_static/out/browser/workbench.js"

Serves an injected JavaScript file from the extra/injected/ directory. When --hoody-code is enabled, these scripts are loaded sequentially after window.load on every VS Code page, so they can customize behavior and branding without modifying the build.

The same scripts are also available under /vscode/hoody-code/injected/{script}.

NameInTypeRequiredDescription
scriptpathstringYesFilename of the injected script to load.
Terminal window
curl "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/hoody-code/injected/hdy-custom.js"

Returns the robots.txt file describing the crawler policy for the editor’s web origin.

This endpoint takes no parameters.

Terminal window
curl "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/robots.txt"

Returns the security.txt file used for coordinated vulnerability disclosure. The same content is also available at /.well-known/security.txt.

This endpoint takes no parameters.

Terminal window
curl "https://{projectId}-{containerId}-code-1.{server}.containers.hoody.com/security.txt"