| marp | true |
|---|---|
| paginate | true |
Local operating contract for deterministic readiness and handoff across independent repositories
Canonical product details live in the README and focused docs. This deck is an orientation path for GitHub readers and live walkthroughs.
Most real engineering work is not one repository.
A developer may need:
- shared tooling checked out beside project repositories
- consistent setup across machines
- project-specific tests and tasks
- diagnostics that explain what is missing
- shell activation without copying private dotfile logic into every repo
Base gives that workspace a common, inspectable operating contract.
Base is a local operating contract for deterministic readiness and handoff across independent Git repositories.
It makes the repo set understandable, locally ready, explicitly trusted, onboardable, and transferable. Its durable loop is:
inventory -> prepare -> verify -> trust -> onboard -> hand off
The basectl command surface supports setup, diagnostics, tests, demos,
activation, release support, and CI while project repositories retain ownership
of their application behavior.
It does not turn sibling repositories into a monorepo.
Read more: Architecture
Base owns the cross-repo workflow surface:
- workspace discovery
- first-mile bootstrap
- Base-managed shell runtime
- project virtualenv location
- manifest parsing
- setup/check/doctor/test/run/demo command routing
- standard repo and GitHub workflow helpers
- guarded release assistant commands
Read more: Execution Model
Project repositories keep authority over product behavior:
- source code and services
- language-native package files
- tests and build tasks
- project installers
- demos and walkthrough scripts
- Brewfiles, mise configs, and service definitions
- repo-specific contribution rules
Base orchestrates these contracts. It does not replace them.
Read more: Tool Boundaries
Base starts before the developer has a working Base environment.
On macOS, bootstrap.sh handles the first mile through Homebrew. On
Ubuntu/Debian, use source mode to preview the manual apt-backed path:
# macOS
curl -fsSL https://raw.githubusercontent.com/basefoundry/base/HEAD/bootstrap.sh | bash
# Ubuntu/Debian preview
curl -fsSL https://raw.githubusercontent.com/basefoundry/base/HEAD/bootstrap.sh | bash -s -- --source --dry-runThe macOS path installs or checks the prerequisites needed to hand off to
basectl setup. The Ubuntu/Debian path prints the prerequisite and source
checkout commands without running sudo apt from a piped script. Users can
choose source checkout mode explicitly on either platform; Homebrew install
mode is the macOS path.
Read more: First-Mile Bootstrap and Linux Support
Source checkout mode is best for contributors and local Base development.
Homebrew mode is best for users who want Base installed as a tool outside their project workspace.
Both modes converge on the same daily command surface:
basectl setup
basectl update-profile
basectl check
basectl doctorRead more: Clean macOS Install Validation and Linux Support
After installation, the common workflow is:
basectl projects list
basectl setup <project>
basectl check <project>
basectl doctor <project>
basectl test <project>
basectl run <project> <command>
basectl demo <project>
basectl activate <project>The goal is one predictable loop across many repositories.
Base scans a workspace root and finds repositories with base_manifest.yaml.
The workspace root usually comes from ~/.base.d/config.yaml:
workspace:
root: ~/workWorkspace manifests can add expected repositories to the same view so teams can distinguish missing repos from broken repos.
Read more: Workspace Manifest
base_manifest.yaml is the small project contract Base reads.
schema_version: 1
project:
name: example
brewfile: Brewfile
mise: .mise.toml
test:
mise: test
commands:
dev: mise run devThe manifest says what Base should orchestrate, not every product detail.
The setup and diagnostic commands answer different questions.
basectl setup <project> prepares Base and project-declared artifacts.
basectl check <project> gives a concise pass/fail readiness signal.
basectl doctor <project> explains findings and fix commands.
Machine-readable JSON output exists where CI or tools need structured results.
Read more: Doctor Finding IDs
Base delegates work back to the project:
basectl test <project>runs the declared test contractbasectl run <project> <command>runs named manifest commandsbasectl demo <project>runs the project-owned walkthrough scriptbasectl activate <project>opens a project shell with the Base runtime
Projects stay responsible for what those commands actually do.
Read more: Project Demo Workflow
There are two demo layers:
basectl demo base -- --non-interactivedemonstrates Base itselfbasefoundry/base-demodemonstrates a normal Base-managed project
Clone base-demo beside Base to inspect a small reference project:
git clone https://github.com/basefoundry/base-demo.git
basectl setup base-demo
basectl demo base-demoRead more: Base-managed demo project
--ci is the CI-safe setup, readiness, and diagnostics mode.
basectl setup --ci <project> --format json
basectl check --ci <project> --format json
basectl doctor --ci <project> --format jsonIt sets CI-safe defaults, avoids prompts, and reuses the same manifest and
diagnostic paths as local development. It does not run project tests, launch
GitHub Actions locally, or create Ubuntu/Multipass VMs. The deprecated
basectl ci alias remains available for v1.x consumers; use --ci on the
underlying lifecycle command for new scripts.
Read more: CI-safe mode
Base releases are explicit ceremonies.
basectl release validates release metadata, prints the release plan, extracts
release notes, and publishes guarded GitHub release artifacts.
Homebrew tap updates remain a separate handoff after the Base tag and GitHub Release exist. The 1.0 upgrade rehearsal records the consumer upgrade proof.
Read more: Release Process
Base work normally follows an issue-backed PR train:
- pick or create the GitHub issue
- create a branch/worktree from
origin/main - make the narrow change
- run the relevant validation
- open the PR with issue closure text and validation evidence
- merge when checks pass and clean up the worktree
Read more: GitHub Workflow
Start with:
- README for product overview and first-run commands
- Documentation Map for the full doc set
- Architecture for product direction
- Tool Boundaries for ownership boundaries
- First-Mile Bootstrap for install behavior
- Project Demo Workflow for demos
Then clone base-demo beside Base and run the daily loop.