Configuration
VIBE supports enabling components on demand and exposes services via a unified workspace and Nginx portal.
Overview
| Component | Enable Param | Default | Description |
|---|---|---|---|
| Code-Server | code_enabled |
Enabled | VS Code in browser |
| JupyterLab | jupyter_enabled |
Disabled | Notebook / terminal / editor |
| Node.js | nodejs_enabled |
Enabled | Node.js runtime and npm |
| Claude Code | claude_enabled |
Enabled | CLI installation, config, and observability |
| Codex CLI | codex_enabled |
Enabled | CLI installation only; configuration is not managed |
Note: module default is jupyter_enabled: false, while conf/vibe.yml explicitly sets it to true.
Config usually lives in cluster vars, and can be overridden at instance level:
Workspace
vibe_data is the unified workspace for VIBE:
- Code-Server default open directory
- JupyterLab
root_dir - Claude Code working dir
- Render the
AGENTS.mdcontext file and create aCLAUDE.mdsymlink to it
The vibe_dir task creates the directory and context files, owned by node_user.
Code-Server
Notes:
- Service listens on
127.0.0.1:<code_port>(default 8443), accessed via Nginx/code/ - Config file:
code_data/code-server/config.yaml(default/data/code/code-server/config.yaml) - Env file:
/etc/default/code, used to configure extension marketplace
Extension marketplace:
code_gallery: microsoftuses Microsoft marketplace- When
region=china, Open VSX defaults to Tsinghua mirror
JupyterLab
Notes:
- Service listens on
0.0.0.0:<jupyter_port>(default 8888), base path/jupyter/ - Config file:
jupyter_data/jupyter_config.py(default/data/jupyter/jupyter_config.py) - Login token:
c.IdentityProvider.token - The v4.5 template also sets
allow_origin = '*',disable_check_xsrf = True, andtrust_xheaders = True; these relax the security boundary for a reverse-proxied development sandbox - Venv is not created automatically, use
node_uv_envinNODEmodule beforehand
Use a high-entropy random token and restrict TCP/8888 to trusted networks or the reverse proxy. infra_portal.home does not enable Basic Auth by default. For a second authentication layer, configure nginx_users and set auth: true on the portal. If you tighten the Jupyter settings, validate WebSockets, origin handling, and login before rollout.
Create venv example:
Node.js
Notes:
- When
nodejs_registryis empty andregion=china, default registry ishttps://registry.npmmirror.com npm_packagesinstalls additional global npm packages and is empty by default- Claude Code and Codex CLI are installed by their own dedicated tasks
Claude Code
The claude task installs the CLI (claude_install) and writes its configuration (claude_config).
When Claude or Codex is enabled, VIBE ensures that the Node.js runtime is installed. Override claude_package to use a different Claude npm package.
Generated files:
~/.claude.json~/.claude/settings.json
claude_env is merged with default OpenTelemetry env vars, sending telemetry to VictoriaMetrics / VictoriaLogs.
Codex CLI
The codex task runs npm install -g @openai/codex. VIBE installs Codex CLI only; it does not write Codex configuration or connect it to VIBE’s Claude Code observability.
Nginx Portal
VIBE exposes services through infra_portal.
By default, home domain includes /code/ and /jupyter/ paths.
For dedicated domains: