Skip to content

Tier-2 (Linux) support: there is no way to bring an agent VM to the same baseline as a laptop #57

Description

@kurtseifried

Implements the tier-2 half of DEC-013 — macOS and Windows are first class; Linux is supported and headless, because it is the machine AI works on.

Current state

# scripts/macos-ai-tools.sh:262
[[ "$(uname -s)" == "Darwin" ]] || abort "This script supports macOS only."

There is no Linux script. scripts/ contains only macos-* and windows-*. The only Linux awareness anywhere is the root-check exemption for containers (/.dockerenv, /run/.containerenv), which exists for CI.

Why it matters — this already cost us

The weekly CSA-source sweep (#49, docs/periodic-sweep.md) was designed, built, and moved to a Claude cloud routine — then parked disabled, because the cloud sandbox ships no gh binary and wiring one needs a CSA-Internal PAT in cloud config. That is a fully built automation sitting shelved for want of a tier-2 baseline.

What tier 2 is, and is not

Is: CLI tools and authentication on VMs, containers, CI runners, cloud sandboxes. Non-interactive as the primary path, not a fallback.

Is not: a human desktop. No 1Password GUI, Slack, Zoom, Chrome, Claude Desktop, or ChatGPT Desktop. No assumption of a person at the keyboard.

The hard part is auth, not packages

Packages are mostly solved already, and by the vendors:

tool Linux story
Claude Code signed apt / dnf / apk repositories, published by Anthropic
Codex Linux musl + gnu binaries, plus curl https://chatgpt.com/codex/install.sh | sh
Gemini CLI npm, same as everywhere
uv one static binary, all platforms (DEC-012)
git / gh distro packages

The real work is the browser-dependent flows. gh auth login, claude login, and MCP OAuth (/mcp) all assume a browser and a human. "It works once you log in" is not a tier-2 answer. This needs device-code flows or injected credentials, and it is a credential-policy decision as much as a technical one — the same one that parked the sweep routine.

Suggested scope for a first pass

  1. Decide whether tier 2 is a linux-ai-tools.sh or a portable path inside the existing script. The base layer (git, gh, node, python, the three CLIs, plugins, MCP registration) is largely shared; the package manager and the GUI-app block are what differ.
  2. Prefer the OS-agnostic vendor install methods above over per-distro packaging, so this does not become a third codebase to keep in sync — the repo already carries the cost of two.
  3. Treat the auth story as its own decision, not a detail of the script.

Note the existing duplication discipline (tools/check-duplication.py) will apply to any shared functions a third script introduces, which is an argument for portability over a separate file.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions