TheHefty

Jvsl.Env.Agents.Code Server — DevOps skill for Claude Code

DevOps community

A code-server dev container for agent work: the Claude Code CLI sandboxed by default with ai-jail, opt-in ai-memory, the GitHub CLI, a nested rootless Docker daemon, and selectable tech stacks.

How to install Jvsl.Env.Agents.Code Server

This entry records only its repository, not the path inside it, so there is no exact command to give. Open TheHefty/jvsl.env.agents.code-server and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Jvsl.Env.Agents.Code Server does

A code-server dev container for agent work: the Claude Code CLI sandboxed by default with ai-jail, opt-in ai-memory, the GitHub CLI, a nested rootless Docker daemon, and selectable tech stacks. Vendored into a monorepo as a git submodule at .code-server/

Alternatives in DevOps

  • Mirrord — Run any process, on your machine or in an AI agent's environment, as if it were a pod in your Kubernetes clust 5.3k ★
  • Cccc — Coordinate your coding agents like a group chat — read receipts, delivery tracking, and remote ops from your p 1.1k ★
  • Helm Conductor — Use the @helm-conductor agent to orchestrate the engineering cycle — sequence features, decide what to work on 523 ★

README

jvsl.env.agents.code-server

Reusable template for a [code-server](https://github.com/coder/code-server)-based dev container, meant to be added to a monorepo as a git submodule at `.code-server/`. It ships code-server itself, the Claude Code CLI, `ai-jail`, and a nested rootless Docker daemon already set up, plus a selectable set of tech stacks.

It is **not** an application — there's no product code here, only the tooling that builds and launches the dev environment.

Adding this to a monorepo

git submodule add https://github.com/TheHefty/jvsl.env.agents.code-server.git .code-server

The one piece of state that lives outside the submodule, at the consuming repo's own root, is `.code-server.stack.json` — the per-project stack selection, written by `setup` (see "Manifest" in [`docs/overview/setup.md`](docs/overview/setup.md) for why it can't live inside the submodule itself). See [`jvsl.monorepo.agents.template`](https://github.com/TheHefty/jvsl.monorepo.agents.template) for a reference consumer.

Quick start

.code-server/init

Checks the host — Linux desktop or WSL, and on WSL that WSLg is actually running — names anything missing and offers to install it, builds the image, builds the launcher, and leaves you a `dev`:

.code-server/dev

which rebuilds the launcher when its source has changed and opens the environment.

`cargo` is the one thing `init` will not install: a packaged Rust is usually too old for the Tauri crates and says so only as a compile error inside a dependency, so it points you at `rustup` instead.

Working on the template itself

git config core.hooksPath .githooks

Runs the fast half of CI before every push — shell syntax, the package table, the settings merge, the title bar, the launcher's tests — and refuses a push straight to `main`. The image builds stay in CI, where they cannot be skipped.

The same thing by hand

Prerequisites on the host: `jq`, `whiptail`, `docker` (for `set