# luxcode.org > lux: a coding agent in a Luxor box, one command away, with auto-resume > and your choice of inference provider. lux is a single bash script. An "agent" is a name + harness + inference provider (+ model); each agent has its own Luxor sandbox. Harnesses: terminal agents claude, codex, opencode, copilot, gemini, qwen, crush, goose, kimi, pi, omp, droid, adal, hermes, openclaw, plus Luxor's pre-built images (tenki.cloud/docs/sandbox/ base-image), whose box is created from that image: grok (Grok Build, XAI_API_KEY or device login), amp (AMP_API_KEY or amp login), droid and pi (pinned builds), prime-agent (PRIME_API_KEY or login), and the toolkits tinyfish, anchor, hotdata (a shell with the key set; `run --` passes raw CLI arguments) — all in tmux, attached over ssh — and web UIs opencode-web, open-webui, hermes-web, openclaw-web, durable-pi (served from the box, tunnelled to localhost; `lux url` makes a public Luxor preview link). Creating an agent asks terminal-or-web first, then the harness. Each agent has its own Luxor sandbox named after it, which pauses by itself 2h after each create or resume (Luxor's cap on max-duration; the CLI has no idle timeout); the next lux command resumes it. COLINCODE_STICKY=1 creates boxes that never pause by themselves. lux creates or resumes the sandbox, starts the agent inside tmux with the provider wired in, and attaches you to it. ## Install curl -fsSL https://luxcode.org/install.sh | sh Requires the Luxor CLI (https://luxor.ai) and jq. The raw script is served at https://luxcode.org/lux. ## Commands lux pick an agent (or create one) and jump into it lux new [cli|web|harness] create: terminal or web -> harness -> provider -> model -> size -> volume -> name lux [action] a harness (list above) lux [action] a specific agent up (default) create or resume the box, start the agent, attach ssh same as up shell plain shell in the box run --

one-shot headless prompt status agent, provider, box state provider switch inference provider (and model) model [id] switch model size [name] box size: small 2vCPU/4GiB, medium 4/8 (default), large 8/16, xlarge 12/32, xxlarge 16/64; applies when the box is (re)created volume [GiB] persistent volume at ~/work (10/25/50 GiB, or none; the workspace caps the size); the url [off] web UIs only: a public Luxor preview link to the UI (no password of its own), or remove it image [build [--full|--public]|forget] the golden image (Luxor base + tmux) new boxes start from: found or built on first use agent starts there; survives pause, rm and resize. Volumes keep their size for life; the root disk is wiped by rm. auth sign in (claude: `claude auth login` in the box) / store key down | pause pause the box (auto-resumed on next command) rm | stop | kill terminate the box and forget the agent (--purge deletes the volume) lux ls list agents lux pause --all pause every agent's box lux rm --all terminate every box and forget every agent (stop/kill/terminate --all do the same) ## Providers Harness defaults: each harness's own sign-in or in-app setup (Anthropic for claude, the only one with Remote Control; OpenAI for codex; GitHub for copilot; Google for gemini; Qwen; Moonshot for kimi; Factory for droid; the rest are configured inside). Gemini CLI and AdaL take only their own. Others: Nebius Token Factory, Boundless, Baseten, Friendli, OpenRouter (every other harness; written into the harness's own config, which also puts that harness in its no-approval mode; Claude Code loses Remote Control on any third-party base URL). Nebius has no Anthropic Messages API, so for Claude Code lux runs a stdlib-only Python translation proxy inside the box (tmux session claude-proxy, 127.0.0.1:8787, port via COLINCODE_PROXY_PORT) that serves /v1/messages with streaming and tool calls in front of /chat/completions. Default models are each provider's most advanced: Kimi K3 (Nebius, Baseten), Claude Fable 5.1 (Boundless, OpenRouter), GLM 5.3 (Friendli). Keys: NEBIUS_API_KEY, BOUNDLESS_API_KEY, BASETEN_API_KEY, FRIENDLI_TOKEN, OPENROUTER_API_KEY in ~/.config/luxcode/env. ## Configuration COLINCODE_HARNESS (claude), COLINCODE_SIZE (medium), COLINCODE_VOLUME_GB (10), COLINCODE_CPU (4), COLINCODE_MEMORY_MB (8192), COLINCODE_DISK_GB (20), COLINCODE_IMAGE (none), COLINCODE_RESUME_TIMEOUT (3m), COLINCODE_MAX_DURATION (2h, the cap), COLINCODE_PAUSE_RETENTION (720h), COLINCODE_STICKY (0). ## Links - Source: https://github.com/opencolin/luxcode - Sandboxes: https://luxor.ai - Related: https://nemocode.org (inference relay for coding agents)