sail CLAUDE.md

A project guide for Sail, a tool that runs separate development environments in Linux system containers. It describes the infrastructure, Java-based technology stack, and development conventions.

In plain words
What is it for?
Use it when developing Sail or working with its container lifecycle, agent execution, configuration, build, and release conventions.
Why use it?
It explains how the repository is organized and how its isolated containers, command-line tool, builds, and workflows are intended to work.

Instructions file

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add instructions/standardapplied/sail/claude-md
Clone the repo
git clone --depth 1 https://github.com/standardapplied/sail
Per session 2,067 This file is loaded in full into every session.
When invoked 2,067 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.02067 $0.02067
Opus 5 $0.01033 $0.01033
Sonnet 5 $0.00413 $0.00413
Haiku 4.5 $0.00207 $0.00207

Measured 3d ago against content hash 53ea3c5e907c, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

sail CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

CLAUDE.md · 100 lines

How it starts

The opening of the file, as written. The whole thing — 100 lines — stays where its author put it; the contents beside it link to each section on GitHub.

CLAUDE.md

Why sail Exists

Engineers working on multiple projects simultaneously need fully isolated dev environments: separate JDKs, databases, search engines, message brokers, and AI coding agents — with hard isolation so a runaway agent in one project can't affect another.

sail provisions a bare-metal server with Incus system containers, one per project. Each container gets a complete Ubuntu 24.04 userspace with its own filesystem, network stack, and rootless Podman runtime. The CLI manages container lifecycle, runs AI agents inside them with guardrails and rollback safety, and orchestrates spec-driven autonomous workflows.

One binary, zero dependencies, fully declarative. Download it, run sail host init, and you're operational.

Tech Stack

  • Java 25 with virtual threads where applicable
  • picocli for CLI framework (GraalVM native-image ready)
  • SnakeYAML Engine 3.1.1 for YAML + JSON parsing (YAML 1.2 is a JSON superset). Zero transitive dependencies.
  • GraalVM native-image for AOT compilation to a static Linux binary (<1ms startup)
  • No Spring. No Lombok. No annotation magic beyond picocli's @Command/@Option/@Parameters.
  • Minimal dependencies — two libraries total (picocli, SnakeYAML Engine). No reflection metadata needed.
  • File generation (agent context files, ssh-config) uses plain Java string building — no templating library.

Infrastructure Inside Containers

  • Podman (rootless, daemonless) runs infrastructure services. No Docker, no Docker Compose.
  • Each service in sail.yaml becomes a podman run -d --restart=always command. loginctl enable-linger keeps services alive across reboots. No systemd unit generation needed.
  • Testcontainers works via Podman socket (DOCKER_HOST, TESTCONTAINERS_RYUK_DISABLED=true).
  • Developer processes (java -jar, npm run dev) are interactive — run in editor terminal tabs, not managed by sail.

Conventions

  • Records for all data models / DTOs
  • Sealed interfaces for domain types and algebraic data modeling
  • Virtual threads for all I/O, never platform threads
  • ProcessBuilder for shell execution — no runtime exec shortcuts
  • Every command must be idempotent — run it twice, same result
  • --dry-run support on every command that modifies state (prints underlying shell commands instead of executing)
  • --json flag on every command for machine-parseable output
  • Human-readable ANSI-colored output by default, degrade gracefully when not a TTY
  • No magic. Every sail command maps to a small number of incus / podman / systemd calls that the user could run themselves
  • Error messages must explain what happened AND what to do about it

Read the full file on GitHub · 100 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 100 lines · 2,067 tokens per session scan A 53ea3c5e907c

Subscribe to this mod's changes

sail CLAUDE.md is an instructions file published in the GitHub repository standardapplied/sail (11 stars, last pushed 3d ago), licensed MIT. It adds 2,067 tokens to every session, about $0.0103 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.