Skip to content

Overview

A workbench installs language toolchains into the workspace container. The curated set is short and reviewed: Monoceros knows how to install each one cleanly via its upstream devcontainer feature. This page covers the shared model; each language has its own page with its options and examples.

New to Monoceros? Start with Installation.

Node, Python, Java, Go, Rust, .NET.

Add one at init or later:

Terminal window
monoceros init acme --with-languages=node,java
monoceros add-language acme python

Each curated language maps to an upstream ghcr.io/devcontainers/features/<name> feature. Anything outside the set can still come in as a raw devcontainer feature.

monoceros init and monoceros add-language write each language with its version inline, and - for a language that has options Monoceros surfaces - as an object you can edit in place:

languages:
- node:22
- python:latest
- java:
version: latest
installMaven: true
installGradle: true

Pin a version on the CLI with the :version suffix:

Terminal window
monoceros init acme --with-languages=java:21,node:22
monoceros add-language acme python:3.12

Accepted values are whatever the upstream feature takes as its version (usually latest, a major like 21, or an exact version); each language page lists the majors its feature supports. Both the bare string (- node) and the object form parse, so existing hand-edited ymls keep working.

The options Monoceros surfaces - a language’s version, plus Java’s installMaven / installGradle - live in the yml and you edit them there directly (set installMaven: false, change version, then monoceros apply). To set any other option the underlying feature exposes that Monoceros does not surface (a JDK distro, extra Rust components, …), add that feature directly and pass options after --:

Terminal window
monoceros add-feature acme ghcr.io/devcontainers/features/java:1 -- jdkDistro=open

Each language page lists the options that matter and links to the upstream feature for the full reference.