Modules¶
Modules add capabilities to a workspace — tools, credentials, config files,
environment variables. A workspace starts empty; whatever it can reach, a module
put there. Add and remove them from the dashboard with e (see the
TUI Guide).
For the model behind modules, see Concepts → Modules. To build your own, see Writing Modules.
Built-in modules¶
Built-ins ship in the package and are installed into your module directory on install, grouped by category.
cloud¶
| Module | What it does | Multi-instance |
|---|---|---|
| aws | Installs the AWS CLI and writes an isolated named profile + credentials to ~/.aws. |
Yes (per profile) |
| gcp | Installs the Google Cloud CLI (gcloud) and writes a named configuration (project, region, optional service account key) to ~/.config/gcloud. |
Yes (per configuration) |
| outscale | Installs octl (the Outscale CLI) and writes a named AK/SK profile to ~/.osc/config.json. |
Yes (per profile) |
| ovh | Installs the OVHcloud CLI (ovhcloud) and writes a named endpoint profile with API credentials to ~/.ovh.conf. |
Yes (per endpoint) |
| scaleway | Installs the Scaleway CLI (scw) and writes a named profile to ~/.config/scw/config.yaml. |
Yes (per profile) |
All can list profiles already configured on your host and import them; secrets
are pulled from the host at install time and never stored in the manifest. The
exception is gcp: gcloud keeps credentials in a separate account store, so
import resolves only the project/region — the service account key is entered in
the form.
infra¶
| Module | What it does | Multi-instance |
|---|---|---|
| kubernetes | Imports host kube contexts into the workspace ~/.kube/config (one entry per context). kubectl is installed when the first context is added. |
Yes (per context) |
language¶
| Module | What it does | Notes |
|---|---|---|
| c | C dev environment: GCC/build-essential, make, cmake, gdb, and clangd (LSP), all from apt. |
— |
| golang | The Go toolchain (selectable version) plus gopls, delve, goimports, on PATH. |
Bounces the OpenCode server |
| nodejs | Node.js (selectable version) via nvm plus typescript and typescript-language-server. |
Bounces the OpenCode server |
| python | Python (selectable version) via uv plus pyright and ruff. |
Bounces the OpenCode server |
Language modules that put a toolchain on PATH write to ~/.env, so installing
or removing them restarts the OpenCode server (and is blocked while a task is
running). The c module only installs system packages, so it does not.
source code¶
| Module | What it does | Multi-instance |
|---|---|---|
| git | Clones a git repository into ~/workspace (one entry per repo). The git identity (user.name / user.email) is imported from your host automatically. |
Yes (per repo) |
tools¶
| Module | What it does | Multi-instance |
|---|---|---|
| github | Installs the GitHub CLI (gh) and optionally imports this host's gh auth (or takes a token). |
No |
| gitlab | Installs the GitLab CLI (glab) and, with one checkbox, copies this host's glab configuration in so the workspace is signed in to the same GitLab instance(s). |
No |
| ssh | Adds an SSH key and host alias (written to ~/.ssh) for this workspace. |
Yes (per host) |
Multi-instance modules¶
Some modules can be installed more than once per workspace — one AWS profile, one SSH host, etc. In the editor's add flow these show an import picker listing the matching accounts found on your host:
- aws / gcp / outscale / ovh / scaleway — host CLI profiles
- ssh — host aliases from
~/.ssh/config - kubernetes — host kube contexts from
~/.kube/config(one instance per context)
Select one or more to import as separate instances, or choose Add manually… to fill in an account that isn't on your host. Imported instances store only the account name in the workspace manifest; their secrets are read from the host at install time and never persisted.
The git module (in the source code category) is also multi-instance (one
entry per repository) but has no host list to import from, so its add flow goes
straight to a form where you enter the repository URL (ssh or https). Each repo is
cloned into ~/workspace (the container's working directory) and is added and
removed independently; removing an entry stops the manager from re-cloning it but
leaves the cloned working tree on disk, so uncommitted work is never lost. SSH
clones auto-accept the remote host key on first contact. The git identity is
imported from your host's global git config (user.name / user.email) on
every install — nothing to type, and nothing is set when the host has no
identity.
Server restart behaviour¶
A module that only writes its own config files (e.g. ~/.aws, ~/.kube/config,
~/.ssh) is environment-neutral (restartServer: false): tools read those
files live, so the OpenCode server is never bounced, and you can add or remove
the module while a task is running.
A module that exports environment variables (writes to ~/.env) sets
restartServer: true: the server is restarted so the variables take effect, and
the editor blocks the change until the workspace is idle. Among the built-ins,
only golang, nodejs, and python restart the server.