# Basecamp agent guide Use Basecamp to prepare or reproduce a project's development environment. Basecamp does not replace the project's build/test/run tool. ## Rust / Cargo — available 1. Detect the project stack. 2. If basecamp.lock is absent, use basecamp init. 3. If basecamp.lock exists and project inputs are unchanged, use basecamp sync. 4. If Cargo.toml, Cargo.lock, rust-toolchain, or the project-local Cargo config changed, use basecamp update. 5. Use basecamp status for state inspection. 6. Use basecamp doctor for diagnosis. 7. Use basecamp shell only when an interactive activated shell is useful. 8. After activation, invoke the native project tool directly. For Rust: basecamp sync basecamp shell cargo build After synchronization or shell activation, invoke build, test, and run through the project's native tool. ## basecamp.lock Treat basecamp.lock as the environment contract. Native ecosystem files remain authoritative: - Cargo.toml / Cargo.lock - package.json / pnpm-lock.yaml - go.mod / go.sum - pyproject.toml / uv.lock Basecamp records their digests and locks the wider environment. Do not duplicate or invent the native package graph inside Basecamp. ## Rust delivery The CLI computes project-input SHA-256 fingerprints locally; the normal resolver path does not upload Cargo.toml or Cargo.lock contents. - Rust toolchain: official Rust distribution URL + SHA-256. - Cargo packages: native `cargo vendor` materialization from configured registries/Git, tied to the Cargo.lock digest and Cargo's generated source configuration. - Shared data: ~/.basecamp/store. - Project activation state: .basecamp/. - Cargo config above the project root is rejected; move required settings into the project's `.cargo` directory. - Air-gap: basecamp bundle pack / unpack. Basecamp may use an explicitly locked CAS source when a resolver selects one. v0.5 does not automatically proxy upstream bytes or schedule remote builders. ## Rules - Do not claim planned stacks are available. - Do not send secrets in generic project files or prepare inputs. - Do not treat Basecamp as arbitrary remote command execution. - Prefer project-native tools after synchronization. - Use /openapi.json only for direct API integrations.