You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Define, document, and automatically verify the prerequisites for:
contributing to OpenBot from a source checkout; and
installing and using the published OpenBot CLI at runtime.
These are different environments and must not share one vague "Requirements: Node and pnpm" paragraph. A CLI user should not accidentally need the full monorepo development toolchain, while a contributor should have a reproducible checklist that covers tests, Electron, computers, secrets, and deployments.
Current problems
The root README lists only Node.js 24 and pnpm 10 for local development.
The root package pins Node 24.x and pnpm 10.33.1, but the CLI package does not publish equivalent engine/runtime metadata yet.
The CLI invokes system tools such as sops, mkfifo, Git, Docker, provider CLIs, and the selected owner-identity backend without a single capability matrix or preflight command.
Requirements vary by command and provider. For example, openbot --help, openbot init, openbot dev, local deployment, and Vercel deployment do not need the same host capabilities.
Local computer and desktop support depends on operating system, architecture, virtualization/display capabilities, and service manager. These constraints are currently scattered across code and ADRs.
Missing binaries generally fail only when a command is already running, with raw spawn errors and no version or installation guidance.
Required documentation split
Contributor development prerequisites
Create one canonical contributor page and keep the root README summary short. The detailed page should cover:
supported operating systems and architectures, including explicit Windows/WSL status;
Node.js 24.x and the repository-pinned pnpm version through Corepack;
Git and a clean clone/worktree;
dependency installation and generated-contract bootstrap;
SOPS and the POSIX FIFO requirement used for secret-safe input;
Docker Engine/compatible OCI builder and registry authentication for computer-image builds;
local Microsandbox hardware/virtualization prerequisites, with Vercel Sandbox as the documented remote alternative where supported;
Linux/macOS desktop-development requirements, including display availability and Electron packaging prerequisites;
Playwright browser/system dependencies needed only for E2E work;
local service requirements: systemd user services on Linux or launchd on macOS;
optional credentials and CLIs required only for selected secret backends or deployment providers;
the exact focused and full validation commands contributors are expected to run.
Do not present every optional integration as universally required. Use a compact matrix with required, command-specific, and provider-specific columns.
Published CLI runtime prerequisites
Create a separate installation/runtime page for people consuming the npm package. It should distinguish:
requirements for installing and launching the CLI;
requirements for repository-oriented commands such as init, dev, check, build, and deploy;
requirements introduced by the selected runtime, computer, secret-owner, and deployment choices;
features bundled by the desktop application versus capabilities that must exist on the host;
supported OS/architecture combinations and clear unsupported behavior.
At minimum document this command matrix:
Command/use
Baseline
Additional capabilities
openbot --help, --version, doctor
Published CLI runtime
None
openbot init
Writable OpenBot repository
Current SOPS, mkfifo, selected owner-identity backend
This is a CLI utility, not a new universal provider framework.
The CLI owns universal checks: OS/architecture, Node, package manager, Git, SOPS, FIFO support, Docker, display, and service manager.
Existing provider check() behavior remains authoritative for provider build/deployment readiness.
Provider packages may expose small reusable probe/remediation helpers when they invoke a provider-specific binary or require a host capability; do not duplicate provider credentials or implementation details in the CLI.
Never inspect, print, or return secret values. Credential checks should report presence/access and the owning provider only.
2. Add openbot doctor
Provide a non-mutating command:
openbot doctor
openbot doctor --mode development
openbot doctor --mode deploy
openbot doctor --json
With no mode, inspect the current repository/configuration and report the relevant runtime requirements.
development adds contributor, browser, and optional desktop checks.
deploy loads the selected providers and checks Docker, registry, provider access, secret-owner access, and deployment prerequisites without creating or changing remote resources.
--json emits a versioned, deterministic result suitable for CI and support diagnostics.
Exit non-zero only for missing requirements that block the selected mode. Optional capabilities produce warnings.
Include detected version, required range, affected commands, and concise remediation for every failure.
3. Run focused preflight checks at command boundaries
init checks SOPS, secure FIFO support, platform support, and the selected owner-identity backend before writing configuration files.
dev checks project dependencies/package manager before spawning child processes and explains how to suppress desktop startup in headless environments.
secrets checks SOPS version and configured identity access before reading input.
build and deploy run only the checks needed by configured participants; Docker is not a prerequisite when no computer image is being built.
Local installation validates systemd/launchd support before writing service files.
Desktop packaging validates the host/architecture and required signing tools separately from ordinary CLI use.
Preflight must be read-only. Mutating configuration, authenticating, installing packages, enabling virtualization, or creating cloud resources requires the existing explicit workflow.
4. Publish accurate package metadata
Add the supported Node engine to the published CLI package.
Decide and document whether pnpm is a CLI runtime dependency, a repository-command prerequisite, or an implementation detail that should be removed from the installed CLI path.
Declare supported OS/CPU metadata only if npm installation should be rejected on unsupported hosts; otherwise allow installation and make individual commands report unsupported capability precisely.
Add focused tests for every probe using injected command/platform/capability runners; tests must not depend on the developer's real host state.
Snapshot or generate the requirements tables from the same requirement metadata used by doctor, or add a consistency test that verifies the documented command IDs and minimum versions.
Run openbot doctor --mode development --json in an appropriate CI environment as a smoke test, without requiring optional desktop/KVM/cloud credentials.
Use Markdown equivalents until the Mintlify restructure in #35 lands, then preserve the same information architecture rather than maintaining parallel pages.
Acceptance criteria
Contributor and published-CLI prerequisites are documented separately.
Supported OS, architecture, Node, pnpm, SOPS, Docker/OCI, virtualization, desktop, browser-test, service-manager, and provider-specific requirements are explicit.
Optional/provider-specific dependencies are not presented as universal CLI requirements.
The published CLI declares its supported Node engine and has a documented OS/CPU policy.
openbot doctor reports actionable, version-aware, redacted results in human and versioned JSON formats.
init, dev, secrets, build, and deploy fail early with command-specific remediation when a required capability is missing.
Preflight checks do not mutate local configuration or remote resources.
Requirement probes are unit-tested with injected host behavior and the documented matrix is checked against the implementation.
Headless development, local Linux/macOS, and Vercel-backed workflows each have a verified happy-path prerequisite profile.
Root README, contributor guidance, CLI installation docs, and the future Mintlify navigation link to the canonical pages.
Open decisions
Whether the published CLI should execute repository-local pnpm tooling or bundle/invoke all required build tooling itself.
Whether unsupported npm platforms should be blocked through package metadata or handled per command by doctor.
Minimum SOPS and Docker versions based on the exact features OpenBot uses.
Whether doctor --fix is ever desirable. It is explicitly out of scope for this issue; the first implementation is diagnostic only.
Outcome
Define, document, and automatically verify the prerequisites for:
These are different environments and must not share one vague "Requirements: Node and pnpm" paragraph. A CLI user should not accidentally need the full monorepo development toolchain, while a contributor should have a reproducible checklist that covers tests, Electron, computers, secrets, and deployments.
Current problems
24.xand pnpm10.33.1, but the CLI package does not publish equivalent engine/runtime metadata yet.sops,mkfifo, Git, Docker, provider CLIs, and the selected owner-identity backend without a single capability matrix or preflight command.openbot --help,openbot init,openbot dev, local deployment, and Vercel deployment do not need the same host capabilities.Required documentation split
Contributor development prerequisites
Create one canonical contributor page and keep the root README summary short. The detailed page should cover:
Do not present every optional integration as universally required. Use a compact matrix with required, command-specific, and provider-specific columns.
Published CLI runtime prerequisites
Create a separate installation/runtime page for people consuming the npm package. It should distinguish:
init,dev,check,build, anddeploy;At minimum document this command matrix:
openbot --help,--version,doctoropenbot initmkfifo, selected owner-identity backendopenbot secrets ...openbot devopenbot check/build/testopenbot deployThe final matrix must be generated from or tested against actual command/provider behavior so it cannot silently drift.
Proposed implementation
1. Add a CLI prerequisite model
Keep host checks in the CLI, close to command dispatch, rather than embedding another copy in documentation:
This is a CLI utility, not a new universal provider framework.
check()behavior remains authoritative for provider build/deployment readiness.2. Add
openbot doctorProvide a non-mutating command:
developmentadds contributor, browser, and optional desktop checks.deployloads the selected providers and checks Docker, registry, provider access, secret-owner access, and deployment prerequisites without creating or changing remote resources.--jsonemits a versioned, deterministic result suitable for CI and support diagnostics.3. Run focused preflight checks at command boundaries
initchecks SOPS, secure FIFO support, platform support, and the selected owner-identity backend before writing configuration files.devchecks project dependencies/package manager before spawning child processes and explains how to suppress desktop startup in headless environments.secretschecks SOPS version and configured identity access before reading input.buildanddeployrun only the checks needed by configured participants; Docker is not a prerequisite when no computer image is being built.Preflight must be read-only. Mutating configuration, authenticating, installing packages, enabling virtualization, or creating cloud resources requires the existing explicit workflow.
4. Publish accurate package metadata
5. Keep docs and checks in sync
doctor, or add a consistency test that verifies the documented command IDs and minimum versions.openbot doctor --mode development --jsonin an appropriate CI environment as a smoke test, without requiring optional desktop/KVM/cloud credentials.AGENTS.mdand the root README; link CLI requirements from the installation and Mintlify work in Restructure docs and publish an OpenBot Mintlify site #35.Suggested documentation locations
Use Markdown equivalents until the Mintlify restructure in #35 lands, then preserve the same information architecture rather than maintaining parallel pages.
Acceptance criteria
openbot doctorreports actionable, version-aware, redacted results in human and versioned JSON formats.init,dev,secrets,build, anddeployfail early with command-specific remediation when a required capability is missing.Open decisions
doctor.doctor --fixis ever desirable. It is explicitly out of scope for this issue; the first implementation is diagnostic only.Related work