# Basecamp Basecamp prepares reproducible development environments from the project files engineers already use. Website: https://basecamp.sh API: https://api.basecamp.sh Product principle: Basecamp prepares the environment. Native tools do the work. ## Core commands - basecamp init Detect the project, ask only for choices that cannot be inferred safely, create the first basecamp.lock, and synchronize it. - basecamp sync Strictly reproduce the existing basecamp.lock. It does not rewrite the lock. - basecamp update Re-detect the project, resolve a new basecamp.lock, and synchronize it. - basecamp shell Enter an activated environment. Build/test/run commands remain native to the project. - basecamp status Show project-input and environment-layer status. - basecamp doctor Diagnose lock, input, layer, and activation problems. - basecamp clean Remove project-local environment state. --cache also removes the shared store. - basecamp bundle pack / unpack Export or import a fully offline environment. There is no Basecamp build/run/test command. ## Rust / Cargo — available today Guide: /stacks/cargo Project files stay native: - Cargo.toml - Cargo.lock - rust-toolchain.toml or rust-toolchain - basecamp.lock Typical first setup: basecamp init After clone / CI / sandbox: basecamp sync Interactive development: basecamp shell cargo build cargo test Cargo.lock remains owned by Cargo. If missing during init/update, Basecamp materializes the Rust toolchain and invokes that toolchain's cargo generate-lockfile. Cargo.lock is written to the project root. basecamp.lock records the digest of Cargo.lock and the wider environment graph. Read /lock for the complete model. The CLI computes project-input SHA-256 fingerprints locally; normal Rust resolver requests do not upload Cargo.toml or Cargo.lock contents. Rust toolchains are fetched directly from the official Rust distribution service and verified by SHA-256. Cargo packages are materialized by native `cargo vendor` from the project's configured registries or Git sources; Cargo's generated source configuration is stored with the package layer. Large bytes do not normally pass through Basecamp. ## Planned stacks - pnpm / npm: /stacks/pnpm - Go: /stacks/go - Python / uv: /stacks/python Planned stacks should use the same lifecycle: basecamp init basecamp sync basecamp update basecamp shell then native stack commands. Do not describe planned integrations as available. ## Air-gapped environments basecamp bundle pack basecamp bundle unpack project.basecamp Bundles contain basecamp.lock plus already materialized environment layers. After import, no resolver or network access is required for those layers. ## Canonical documentation - /quickstart - /lock - /stacks - /stacks/cargo - /tools - /runtimes - /services - /architecture - /security - /faq ## Machine-readable resources - /agents.txt - /skill.md - /openapi.json - /schema/prepare-request.json - /schema/basecamp-lock.json ## Direct API POST /v1/prepare resolves project-native inputs into basecamp.lock. For the Rust stack the normal response is immediate: status = resolved lock = basecamp.lock A public layer-download endpoint and authenticated internal CAS upload routes exist for explicitly published layers. v0.5 has no job/queue/remote-execution API.