Skip to content

feat: CLI, devcontainer, and sandbox package#21

Open
ryaneggz wants to merge 21 commits intomainfrom
development
Open

feat: CLI, devcontainer, and sandbox package#21
ryaneggz wants to merge 21 commits intomainfrom
development

Conversation

@ryaneggz
Copy link
Copy Markdown
Owner

@ryaneggz ryaneggz commented Apr 4, 2026

Summary

  • OpenHarness CLI (cli/): new CLI built on Pi Agent SDK with subcommands for sandbox lifecycle management, replacing the root Makefile
  • @openharness/sandbox package (packages/sandbox/): reusable library with Docker orchestration tools, config management, and sandbox extensions
  • Dev container (.devcontainer/): Debian-based orchestrator container with Claude Code, Codex CLI, Docker, Node.js, Bun, uv, and GitHub CLI pre-installed
  • CI pipeline (.github/workflows/ci.yml): lint + test workflow for both packages with Husky pre-commit hooks
  • Workspace rebrand: .pi/.openharness/, updated banner and extension naming

Test plan

  • npm install and npm run build in cli/ and packages/sandbox/
  • npm test passes in both packages
  • docker compose -f .devcontainer/docker-compose.yml up -d --build starts cleanly
  • docker exec orchestrator claude --version and codex --version return versions
  • CI workflow passes on PR

🤖 Generated with Claude Code

ryaneggz and others added 21 commits April 1, 2026 12:17
Replace Makefile with openharness — a custom agent CLI built on
@mariozechner/pi-coding-agent SDK. Sandbox management tools registered
as first-class built-in Pi tools with slash commands and conversational
orchestration. Includes vitest, eslint, prettier, husky pre-commit hooks.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
TypeScript CLI wrapping Pi's main() with 11 sandbox management tools
registered as first-class Pi tools + slash commands:
- sandbox_quickstart, sandbox_build, sandbox_rebuild, sandbox_run
- sandbox_shell, sandbox_stop, sandbox_clean, sandbox_push
- sandbox_list, sandbox_heartbeat, sandbox_worktree

Includes vitest (42 tests), eslint, prettier, husky pre-commit hooks.
Coexists alongside Makefile during migration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ction

Intercept --help and --version to show openharness-branded output with
dedicated Sandbox Commands section (Lifecycle, Access, Registry,
Heartbeat, Git) and Sandbox Tools listing for LLM mode.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add direct CLI subcommands (openharness list, quickstart, build,
  shell, stop, clean, etc.) that execute tools and exit — no TUI needed
- Restructure --help to show CLI commands as primary interface, with
  Agent Mode as secondary
- Remove Makefile — CLI fully replaces it

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Update banner.json and custom-banner extension defaults from
"Sandboxes Project" to "Open Harness — AI-Powered Sandbox Orchestrator".
Add OPENHARNESS_CODING_AGENT_DIR env var support.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Rename workspace/.pi/ directory and all internal references to
.openharness/ for consistent branding. Updates banner extension
config paths, global fallback dir, README.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Core CLI (cli/) is now a lean Pi agent — no sandbox tools bundled.
Sandbox tools live in packages/sandbox/ as a Pi package installable
via: openharness install @openharness/sandbox

- Move tools/, lib/, __tests__ from cli/src/ to packages/sandbox/src/
- Create packages/sandbox/extensions/sandbox.ts (Pi extension)
- Core CLI dynamically imports @openharness/sandbox, graceful fallback
- 42 tests pass in sandbox package, core builds clean

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
feat: Replace Makefile with openharness CLI (Pi SDK)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ct root

Mount host ~/.claude into devcontainer for persistent auth tokens, add
CLAUDE_DANGEROUSLY_SKIP_PERMISSIONS env var, and fix ownership in entrypoint.
Move .openharness/ from workspace/ to project root with symlink so config is
available at both build time (COPY) and runtime (bind-mount). Update Docker,
compose, README, and workspace AGENTS.md accordingly.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…update

- Add optional cloudflared installation to install/setup.sh
- Add reusable cloudflared-tunnel.sh for named tunnel setup
- Add .openharness/config.json template for compose overrides
- Update provision skill with cloudflared and layout docs
- Gitignore .claude/screenshots/

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
npm run setup installs deps, builds cli + sandbox packages, and
links the openharness CLI globally. Replaces manual npm link workflow.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add IDENTITY.md, USER.md, TOOLS.md, HEARTBEAT.md templates.
Refactor AGENTS.md to operating procedures, SOUL.md to personality only.
Clean MEMORY.md to exclude static stack info.
All future agents will start with clear separation of concerns.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant