Skip to content
See Also

Additional Features ​

Pre-installing and configuring every possible package would compromise a flexible workspace footprint. Instead, we developed an opt-in method to seamlessly install and configure features at your discretion.

Behind the scenes, we are simply running an Ansible playbook to install the desired feature.

Installing Features ​

We provide two methods for installing additional features in the Kloud Workspace. You can choose the method that best fits your needs.

Install at Boot ​

Kloud Workspace evaluates the WS_FEATURES_ADDITIONAL_FEATURES environment variable at startup to determine which features to install automatically.

sh
docker run \
  -e WS_FEATURES_ADDITIONAL_FEATURES="dotnet jupyter" \
  ghcr.io/kloudkit/workspace:v0.3.0

Manual Installation ​

To manually install a feature, run the following command:

sh
# Help information
ws feature install -h

# Example: installing PHP
ws feature install php

As previously mentioned, all features are powered by Ansible playbooks. These playbooks are located in the /usr/share/workspace/features directory, as specified by the WS_FEATURES_DIR environment variable (which is not intended to be overridden).

The directory location can be overridden with the --root flag when installing. In the example below, we use /alternate, but any directory you have access to will work. The command will look for a playbook at /alternate/php.yaml:

sh
ws feature install php --root /alternate

Optional Variables ​

As mentioned above, features are installed using playbooks. Certain playbooks support additional variables for customization.

To do this, use the --opt flag (equivalent to Ansible's --extra-vars), zero or more times, as shown in the example below:

sh
ws feature install dagger --opt dagger_version=0.13.3

Custom Features ​

You can create custom playbooks for specific needs. The template below offers a starting point. Ensure that hosts: workspace remains unchanged, as this targets the active workspace session.

πŸ’‘ TIP

It may also help to explicitly mention that the custom playbook template can be saved as cool.yaml in the /alternate directory.

yaml
# /alternate/cool.yaml
- name: Install a cool new feature
  gather_facts: false
  hosts: workspace

  tasks:
    - name: Just saying hello
      ansible.builtin.debug:
        msg: Hello world! πŸ‘‹
sh
ws feature install custom --feature cool --root /alternate

Feature Store ​

Some features require packages from third-party APT repositories (i.e. cloudflared, gcloud, gh, etc.) or binary artifacts (i.e. sops, composer, etc.).

By default, Kloud Workspace enables the individual vendor repositories and artifacts at install time.

When the WS_FEATURES_STORE_URL environment variable is set, packages and artifacts are fetched from the ws-feature-store instead of from individual vendor repositories.

Use Cases ​

  • Airgapped (offline) environments: run the feature store on a local network with no internet access.
  • High-latency on-prem: avoid slow connections to upstream vendor CDNs by serving packages locally.
  • Quick caching: reduce startup time by fetching from a nearby mirror instead of multiple remote sources.

Self-Hosting ​

The feature store is a static-asset server, run it as follows:

sh
docker run -p 8081:80 \
  ghcr.io/kloudkit/ws-feature-store:v2026.02

The container listens on port 80. Browse /manifest.json to confirm the store is live.

Quick Start ​

Point the workspace at a running feature store instance:

sh
docker run \
  -e WS_APT_DISABLE_REPOS="*" \
  -e WS_FEATURES_STORE_URL="http://feature-store.local" \
  -e WS_FEATURES_ADDITIONAL_FEATURES="gh terraform" \
  ghcr.io/kloudkit/workspace:v0.3.0

The feature store image is available at ghcr.io/kloudkit/ws-feature-store. Tags are released monthly with the latest package updates and follow a :v{YYYY}.{MM} convention (e.g. :v2026.02).

πŸ’‘ TIP

Combine with WS_APT_DISABLE_REPOS set to * to ensure no traffic leaves the local network.

Drift Resolution ​

When the workspace image and the feature store rebuild on different cadences, their Debian package sets can drift across point releases.

At feature-install time, the workspace detects this and resolves it transparently, the install always succeeds.

Set WS_FEATURES_STORE_ALLOW_FALLBACK to true to temporarily re-enable debian.sources on older-drift detection.

Available Features ​

ℹ️ INFO

Have a feature in mind that we haven’t covered? Feel free to suggest it or contribute directly.

For more information, visit our contribution guide.

FeatureDescriptionSinceStore
bunBun JavaScript runtime and package managerv0.2.0βœ…
cloudflaredCloudflare tunnel CLIβœ…
codexcodex CLIv0.0.20
conanConan CLI and related toolsv0.0.21
continuecn CLI and continue extension
cpp β†’C++ and related toolsβœ…
daggerdagger.io CLI and SDK
doctlDigitalOcean CLIv0.2.0
dotnet.NET framework and related extensionsβœ…
gcloudGoogle Cloud CLI for GCPβœ…
ghGitHub CLIβœ…
glabGitLab CLIv0.2.0βœ…
helm-extrasHelm plugins and related extensionsv0.2.0βœ…
image-extras β†’syft, grype, dive, osv-scannerv0.3.0
jfJFrog CLIβœ…
jupyterJupyter packages and related extensions
ocOpenShift CLIv0.2.0βœ…
opencodeOpenCode CLI and related extensionv0.1.1
phpPHP and related extensionsβœ…
rclonerclone CLIβœ…
resticRestic CLIβœ…
rust β†’Rust and Cargo
snykSnyk CLI and related extensionv0.0.20
sopsSOPS CLIv0.0.21βœ…
talosTalos CLIβœ…
terraformTerraform packages and related extensionsβœ…
tsharkWireshark terminal CLIv0.3.0βœ…
Feature Store Inventory

Built: 2026-05-25T09:18:52Z

APT Packages ​

NameVersionArchitecture
apache2-bin2.4.67-1~deb13u2amd64, arm64
aspnetcore-runtime-9.09.0.16-1amd64
aspnetcore-targeting-pack-9.09.0.16-1amd64
binutils2.44-3amd64, arm64
binutils-common2.44-3amd64, arm64
binutils-x86-64-linux-gnu2.44-3amd64, arm64
build-essential12.12amd64, arm64
bzip21.0.8-6amd64, arm64
ca-certificates20250419*
clang1:19.0-63amd64, arm64
clang-191:19.1.7-3+b1amd64, arm64
clang-format1:19.0-63amd64, arm64
clang-format-191:19.1.7-3+b1amd64, arm64
clang-tidy1:19.0-63amd64, arm64
clang-tidy-191:19.1.7-3+b1amd64, arm64
clang-tools-191:19.1.7-3+b1amd64, arm64
cloudflared2026.5.0amd64, arm64
cmake3.31.6-2amd64, arm64
cmake-data3.31.6-2*
cpp4:14.2.0-1amd64, arm64
cpp-1313.3.0-16amd64, arm64
cpp-13-x86-64-linux-gnu13.3.0-16amd64
cpp-13-x86-64-linux-gnu13.3.0-16cross1arm64
cpp-1414.2.0-19amd64, arm64
cpp-14-x86-64-linux-gnu14.2.0-19amd64
cpp-14-x86-64-linux-gnu14.2.0-19cross1arm64
cpp-x86-64-linux-gnu4:14.2.0-1amd64, arm64
debconf1.5.91*
distro-info-data0.66+deb13u2*
dotnet-apphost-pack-9.09.0.16-1amd64
dotnet-host10.0.8amd64, arm64
dotnet-hostfxr-9.09.0.16-1amd64
dotnet-runtime-9.09.0.16-1amd64
dotnet-runtime-deps-9.09.0.16-1amd64
dotnet-sdk-9.09.0.314-1amd64
dotnet-targeting-pack-9.09.0.16-1amd64
dpkg1.22.22amd64, arm64
dpkg-dev1.22.22*
fontconfig-config2.15.0-2.3amd64, arm64
fonts-dejavu-core2.37-8*
fonts-dejavu-mono2.37-8*
g++4:14.2.0-1amd64, arm64
g++-1313.3.0-16amd64, arm64
g++-13-x86-64-linux-gnu13.3.0-16amd64
g++-13-x86-64-linux-gnu13.3.0-16cross1arm64
g++-1414.2.0-19amd64, arm64
g++-14-x86-64-linux-gnu14.2.0-19amd64
g++-14-x86-64-linux-gnu14.2.0-19cross1arm64
g++-x86-64-linux-gnu4:14.2.0-1amd64, arm64
gcc4:14.2.0-1amd64, arm64
gcc-1313.3.0-16amd64, arm64
gcc-13-base13.3.0-16amd64, arm64
gcc-13-x86-64-linux-gnu13.3.0-16amd64
gcc-13-x86-64-linux-gnu13.3.0-16cross1arm64
gcc-1414.2.0-19amd64, arm64
gcc-14-base14.2.0-19amd64, arm64
gcc-14-x86-64-linux-gnu14.2.0-19amd64
gcc-14-x86-64-linux-gnu14.2.0-19cross1arm64
gcc-x86-64-linux-gnu4:14.2.0-1amd64, arm64
gdb16.3-1amd64, arm64
gdbserver16.3-1amd64, arm64
gh2.92.0amd64, arm64
git1:2.47.3-0+deb13u1amd64, arm64
git-man1:2.47.3-0+deb13u1*
google-cloud-cli569.0.0-0amd64, arm64
init-system-helpers1.69~deb13u1*
jfrog-cli-v2-jf2.104.1amd64
libabsl2024072220240722.0-4amd64, arm64
libacl12.3.2-2+b1amd64, arm64
libaom33.12.1-1amd64, arm64
libapache2-mod-php8.58.5.6-3+0~20260514.18+debian13~1.gbpe4e1f6amd64
libapr1t641.7.5-1amd64, arm64
libaprutil1-dbd-sqlite31.6.3-3+b1amd64, arm64
libaprutil1-ldap1.6.3-3+b1amd64, arm64
libaprutil1t641.6.3-3+b1amd64, arm64
libapt-pkg7.03.0.3amd64, arm64
libarchive13t643.7.4-4+deb13u1amd64, arm64
libargon2-10~20190702+dfsg-4+b2amd64, arm64
libasan814.2.0-19amd64, arm64
libatomic114.2.0-19amd64, arm64
libavif161.2.1-1.2amd64, arm64
libbabeltrace11.5.11-4+b2amd64, arm64
libbcg729-01.1.1-3amd64, arm64
libbinutils2.44-3amd64, arm64
libblkid12.41-5amd64, arm64
libbrotli11.1.0-2+b7amd64, arm64
libbsd00.12.2-2amd64, arm64
libbz2-1.01.0.8-6amd64, arm64
libc-dev-bin2.41-12+deb13u3amd64, arm64
libc62.41-12+deb13u3amd64, arm64
libc6-dev2.41-12+deb13u3amd64, arm64
libcap21:2.75-10+deb13u1+b1amd64, arm64
libcap2-bin1:2.75-10+deb13u1+b1amd64, arm64
libcares21.34.5-1+deb13u1amd64, arm64
libcc1-014.2.0-19amd64, arm64
libclang-common-19-dev1:19.1.7-3+b1amd64, arm64
libclang-cpp191:19.1.7-3+b1amd64, arm64
libclang1-191:19.1.7-3+b1amd64, arm64
libcom-err21.47.2-3+b11amd64, arm64
libcrypt-dev1:4.4.38-1amd64, arm64
libcrypt11:4.4.38-1amd64, arm64
libctf-nobfd02.44-3amd64, arm64
libctf02.44-3amd64, arm64
libcurl3t64-gnutls8.14.1-2+deb13u3amd64, arm64
libcurl4t648.14.1-2+deb13u3amd64, arm64
libdav1d71.5.1-1amd64, arm64
libdb5.3t645.3.28+dfsg2-9amd64, arm64
libdbus-1-31.16.2-2amd64, arm64
libde265-01.0.15-1+b3amd64, arm64
libdebuginfod-common0.192-4*
libdebuginfod1t640.192-4amd64, arm64
libdeflate01.23-2amd64, arm64
libdpkg-perl1.22.22*
libdw1t640.192-4amd64, arm64
libedit23.1-20250104-1amd64, arm64
libelf1t640.192-4amd64, arm64
liberror-perl0.17030-1*
libexpat12.7.1-2amd64, arm64
libexpat1-dev2.7.1-2amd64, arm64
libffi83.4.8-2amd64, arm64
libfontconfig12.15.0-2.3amd64, arm64
libfreetype62.13.3+dfsg-1+deb13u1amd64, arm64
libgav1-10.19.0-3+b1amd64, arm64
libgc11:8.2.8-1amd64, arm64
libgcc-13-dev13.3.0-16amd64, arm64
libgcc-14-dev14.2.0-19amd64, arm64
libgcc-s114.2.0-19amd64, arm64
libgcrypt201.11.0-7amd64, arm64
libgd32.3.3-13+0~20260506.19+debian13~1.gbp4c9a22amd64, arm64
libgdbm-compat4t641.24-2amd64, arm64
libgdbm6t641.24-2amd64, arm64
libglib2.0-0t642.84.4-3~deb13u3amd64, arm64
libgmp102:6.3.0+dfsg-3amd64, arm64
libgnutls30t643.8.9-3+deb13u3amd64, arm64
libgomp114.2.0-19amd64, arm64
libgpg-error01.51-4amd64, arm64
libgprofng02.44-3amd64, arm64
libgssapi-krb5-21.21.3-5amd64, arm64
libheif-plugin-dav1d1.19.8-1amd64, arm64
libheif-plugin-libde2651.19.8-1amd64, arm64
libheif11.19.8-1amd64, arm64
libhogweed6t643.10.1-1amd64, arm64
libhwasan014.2.0-19amd64, arm64
libicu7676.1-4amd64, arm64
libidn2-02.3.8-2amd64, arm64
libimagequant02.18.0-1+b2amd64, arm64
libipt22.1.2-1amd64
libisl230.27-1amd64, arm64
libitm114.2.0-19amd64, arm64
libjansson42.14-2+b3amd64, arm64
libjbig02.1-6.1+b2amd64, arm64
libjpeg62-turbo1:2.1.5-4amd64, arm64
libjs-jquery3.6.1+dfsg+~3.5.14-1*
libjs-sphinxdoc8.1.3-5*
libjs-underscore1.13.4~dfsg+~1.11.4-3*
libjson-c50.18+ds-1amd64, arm64
libjsoncpp261.9.6-3amd64, arm64
libk5crypto31.21.3-5amd64, arm64
libkeyutils11.6.3-6amd64, arm64
libkrb5-31.21.3-5amd64, arm64
libkrb5support01.21.3-5amd64, arm64
libldap22.6.10+dfsg-1amd64, arm64
liblerc44.0.0+ds-5amd64, arm64
liblldb-191:19.1.7-3+b1amd64, arm64
libllvm191:19.1.7-3+b1amd64, arm64
liblsan014.2.0-19amd64, arm64
liblua5.4-05.4.7-1+b2amd64, arm64
liblz4-11.10.0-4amd64, arm64
liblzma55.8.1-1amd64, arm64
libmaxminddb01.12.2-1amd64, arm64
libmd01.1.0-2+b1amd64, arm64
libmount12.41-5amd64, arm64
libmpc31.3.1-1+b3amd64, arm64
libmpfr64.2.2-1amd64, arm64
libncurses66.5+20250216-2amd64, arm64
libncursesw66.5+20250216-2amd64, arm64
libnettle8t643.10.1-1amd64, arm64
libnghttp2-141.64.0-1.1amd64, arm64
libnghttp3-91.8.0-1amd64, arm64
libngtcp2-161.11.0-1+deb13u1amd64, arm64
libngtcp2-crypto-gnutls81.11.0-1+deb13u1amd64, arm64
libnl-3-2003.7.0-2amd64, arm64
libnl-genl-3-2003.7.0-2amd64, arm64
libnl-route-3-2003.7.0-2amd64, arm64
libobjc-14-dev14.2.0-19amd64, arm64
libobjc414.2.0-19amd64, arm64
libonig56.9.9-1+b1amd64, arm64
libopencore-amrnb00.1.6-1+b2amd64, arm64
libopus01.5.2-2amd64, arm64
libp11-kit00.25.5-3amd64, arm64
libpcap0.8t641.10.5-2amd64, arm64
libpcre2-8-010.46-1~deb13u1amd64, arm64
libperl5.405.40.1-6amd64, arm64
libpng16-16t641.6.48-1+deb13u5amd64, arm64
libpq517.9-0+deb13u1amd64, arm64
libproc2-02:4.0.4-9amd64, arm64
libpsl5t640.21.2-1.1+b1amd64, arm64
libpython3-dev3.13.5-1amd64, arm64
libpython3-stdlib3.13.5-1amd64, arm64
libpython3.133.13.5-2+deb13u2amd64, arm64
libpython3.13-dev3.13.5-2+deb13u2amd64, arm64
libpython3.13-minimal3.13.5-2+deb13u2amd64, arm64
libpython3.13-stdlib3.13.5-2+deb13u2amd64, arm64
libquadmath014.2.0-19amd64
librav1e0.70.7.1-9+b2amd64, arm64
libreadline8t648.2-6amd64, arm64
librhash11.4.5-1amd64, arm64
librtmp12.4+20151223.gitfa8646d.1-2+b5amd64, arm64
libsasl2-22.1.28+dfsg1-9amd64, arm64
libsasl2-modules-db2.1.28+dfsg1-9amd64, arm64
libsbc12.1-1amd64, arm64
libselinux13.8.1-1amd64, arm64
libsframe12.44-3amd64, arm64
libsharpyuv01.5.0-0.1amd64, arm64
libsmi2t640.4.8+dfsg2-17+b1amd64, arm64
libsnappy1v51.2.2-1amd64, arm64
libsodium231.0.18-1+deb13u1amd64, arm64
libsource-highlight-common3.1.9-4.3*
libsource-highlight4t643.1.9-4.3+b1amd64, arm64
libspandsp2t640.0.6+dfsg-2.2amd64, arm64
libspeexdsp11.2.1-3amd64, arm64
libsqlite3-03.46.1-7+deb13u1amd64, arm64
libssh-40.11.2-1+deb13u1amd64, arm64
libssh2-1t641.11.1-1amd64, arm64
libssl3t643.5.6-1~deb13u1amd64, arm64
libstdc++-13-dev13.3.0-16amd64, arm64
libstdc++-14-dev14.2.0-19amd64, arm64
libstdc++614.2.0-19amd64, arm64
libsvtav1enc22.3.0+dfsg-1amd64, arm64
libsystemd0257.13-1~deb13u1amd64, arm64
libtasn1-64.20.0-2amd64, arm64
libtext-charwidth-perl0.04-11+b4amd64, arm64
libtext-wrapi18n-perl0.06-10*
libtiff64.7.0-3+deb13u2amd64, arm64
libtinfo66.5+20250216-2amd64, arm64
libtsan214.2.0-19amd64, arm64
libubsan114.2.0-19amd64, arm64
libudev1257.13-1~deb13u1amd64, arm64
libunistring51.3-2amd64, arm64
libuuid12.41-5amd64, arm64
libuv1t641.50.0-2amd64, arm64
libwebp71.5.0-0.1amd64, arm64
libwireshark-data4.4.15-0+deb13u1*
libwireshark184.4.15-0+deb13u1amd64, arm64
libwiretap154.4.15-0+deb13u1amd64, arm64
libwsutil164.4.15-0+deb13u1amd64, arm64
libx11-62:1.8.12-1amd64, arm64
libx11-data2:1.8.12-1*
libxau61:1.0.11-1amd64, arm64
libxcb11.17.0-2+b1amd64, arm64
libxdmcp61:1.1.5-1amd64, arm64
libxml22.12.7+dfsg+really2.9.14-2.1+deb13u2amd64, arm64
libxpm41:3.5.17-1+b3amd64, arm64
libxslt1.11.1.35-1.2+deb13u3amd64, arm64
libxxhash00.8.3-2amd64, arm64
libyaml-0-20.2.5-2amd64, arm64
libyuv00.0.1904.20250204-1amd64, arm64
libz3-44.13.3-1amd64, arm64
libzip51.11.3-2amd64, arm64
libzstd11.5.7+dfsg-1amd64, arm64
linux-libc-dev6.12.86-1*
lldb1:19.0-63amd64, arm64
lldb-191:19.1.7-3+b1amd64, arm64
llvm-19-linker-tools1:19.1.7-3+b1amd64, arm64
make4.4.1-2amd64, arm64
make-guile4.4.1-2amd64, arm64
media-types13.0.0*
netbase6.5*
netstandard-targeting-pack-2.12.1.0-1amd64
ninja-build1.12.1-1amd64
ninja-build1.12.1-1+b1arm64
openssl3.5.6-1~deb13u1amd64, arm64
openssl-provider-legacy3.5.6-1~deb13u1amd64, arm64
patch2.8-2amd64, arm64
perl5.40.1-6amd64, arm64
perl-base5.40.1-6amd64, arm64
perl-modules-5.405.40.1-6*
php-common2:101~+0~20260503.72+debian13~1.gbp7da167*
php8.58.5.6-3+0~20260514.18+debian13~1.gbpe4e1f6*
php8.5-bcmath8.5.6-3+0~20260514.18+debian13~1.gbpe4e1f6amd64
php8.5-cli8.5.6-3+0~20260514.18+debian13~1.gbpe4e1f6amd64
php8.5-common8.5.6-3+0~20260514.18+debian13~1.gbpe4e1f6amd64
php8.5-curl8.5.6-3+0~20260514.18+debian13~1.gbpe4e1f6amd64
php8.5-gd8.5.6-3+0~20260514.18+debian13~1.gbpe4e1f6amd64
php8.5-intl8.5.6-3+0~20260514.18+debian13~1.gbpe4e1f6amd64
php8.5-mbstring8.5.6-3+0~20260514.18+debian13~1.gbpe4e1f6amd64
php8.5-pcov1.0.12-2+0~20251124.33+debian13~1.gbp5b3479amd64, arm64
php8.5-pgsql8.5.6-3+0~20260514.18+debian13~1.gbpe4e1f6amd64
php8.5-readline8.5.6-3+0~20260514.18+debian13~1.gbpe4e1f6amd64
php8.5-sqlite38.5.6-3+0~20260514.18+debian13~1.gbpe4e1f6amd64
php8.5-xml8.5.6-3+0~20260514.18+debian13~1.gbpe4e1f6amd64
php8.5-zip8.5.6-3+0~20260514.18+debian13~1.gbpe4e1f6amd64
procps2:4.0.4-9amd64, arm64
psmisc23.7-2amd64, arm64
python-apt-common3.0.0*
python33.13.5-1amd64, arm64
python3-apt3.0.0amd64, arm64
python3-dev3.13.5-1amd64, arm64
python3-lldb-191:19.1.7-3+b1amd64, arm64
python3-minimal3.13.5-1amd64, arm64
python3-packaging25.0-1*
python3-pip25.1.1+dfsg-1*
python3-pip-whl25.1.1+dfsg-1*
python3-setuptools-whl78.1.1-0.1*
python3-venv3.13.5-1amd64, arm64
python3-wheel0.46.1-2*
python3-yaml6.0.2-1+b2amd64, arm64
python3.133.13.5-2+deb13u2amd64, arm64
python3.13-dev3.13.5-2+deb13u2amd64, arm64
python3.13-minimal3.13.5-2+deb13u2amd64, arm64
python3.13-venv3.13.5-2+deb13u2amd64, arm64
rclone1.60.1+dfsg-4amd64, arm64
readline-common8.2-6*
restic0.18.0-1+b4amd64, arm64
rpcsvc-proto1.4.3-1amd64
rpcsvc-proto1.4.3-1+b1arm64
sensible-utils0.0.25*
tar1.35+dfsg-3.1amd64, arm64
terraform1.15.4-1amd64, arm64
tshark4.4.15-0+deb13u1amd64, arm64
tzdata2026b-0+deb13u1*
ucf3.0052*
wireshark-common4.4.15-0+deb13u1amd64, arm64
xz-utils5.8.1-1amd64, arm64
zlib1g1:1.3.dfsg+really1.3.1-1+b1amd64, arm64
zlib1g-dev1:1.3.dfsg+really1.3.1-1+b1amd64, arm64

Artifacts ​

NameVersionArchitecture
bun1.3.9amd64, arm64
composer--
cr1.8.1amd64, arm64
glab1.86.0amd64, arm64
helm-diff3.15.0amd64, arm64
helm-unittest1.0.3amd64, arm64
oc4.19.0amd64, arm64
sops3.11.0amd64, arm64
talos1.12.4amd64, arm64

Released under the MIT License