Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/devflow-contract.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,4 @@ jobs:
- run: uv sync --locked
- run: uv run python -m compileall -q src tests
- run: uv run --locked pytest -q -m devflow
- run: uv run clawops devflow plan --repo-root . --goal "contract smoke"
- run: uv run clawops devflow plan --project-root . --goal "contract smoke"
2 changes: 1 addition & 1 deletion .github/workflows/memory-plugin-verification.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
version: "0.10.9"
enable-cache: true
- run: uv sync --locked
- run: PYTHONPATH=src uv run python -m clawops config --repo-root . memory --set-profile memory-lancedb-pro --output "$RUNNER_TEMP/openclaw.json"
- run: PYTHONPATH=src uv run python -m clawops config --asset-root . memory --set-profile memory-lancedb-pro --output "$RUNNER_TEMP/openclaw.json"
- run: python3 ./tests/scripts/memory_plugin_verification.py run-vendored-host-checks --repo-root . --package-spec "openclaw@2026.3.13"
verify-hypermemory-qdrant:
name: Run Hypermemory Qdrant Checks
Expand Down
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,13 @@ The wheel now ships the runtime `platform` asset bundle, so package-safe
commands such as `clawops render-openclaw-config`, `clawops setup`, and
`clawops verify-platform ...` work outside a cloned StrongClaw checkout.

Boundary override flags are now literal:

- use `--asset-root` only to override the packaged/source runtime asset bundle
- use `--project-root` for orchestration state surfaces such as `clawops devflow`
- use `--source-root` for source-tree-only verification such as `clawops baseline`
- use `--repo-root` only for repo-contract tooling such as `clawops repo`, `clawops worktree`, and `clawops supply-chain`

By default, StrongClaw now renders and provisions the
`hypermemory` stack. Set one embedding model name before you run
the no-arg setup path:
Expand Down
3 changes: 3 additions & 0 deletions platform/docs/DEVFLOW.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ clawops devflow cancel
clawops devflow audit
```

Use `--project-root <path>` when the control root for run state, journals, and
audit artifacts is not the current working directory.

## Operator Flow

Plan a run:
Expand Down
2 changes: 1 addition & 1 deletion platform/launchd/ai.openclaw.browserlab.plist.template
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<string>-m</string>
<string>clawops</string>
<string>ops</string>
<string>--repo-root</string>
<string>--asset-root</string>
<string>__REPO_ROOT__</string>
<string>browser-lab</string>
<string>up</string>
Expand Down
2 changes: 1 addition & 1 deletion platform/launchd/ai.openclaw.gateway.plist.template
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<string>-m</string>
<string>clawops</string>
<string>ops</string>
<string>--repo-root</string>
<string>--asset-root</string>
<string>__REPO_ROOT__</string>
<string>gateway</string>
<string>start</string>
Expand Down
2 changes: 1 addition & 1 deletion platform/launchd/ai.openclaw.sidecars.plist.template
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<string>-m</string>
<string>clawops</string>
<string>ops</string>
<string>--repo-root</string>
<string>--asset-root</string>
<string>__REPO_ROOT__</string>
<string>sidecars</string>
<string>up</string>
Expand Down
4 changes: 2 additions & 2 deletions platform/systemd/openclaw-browserlab.service
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ RemainAfterExit=true
WorkingDirectory=__REPO_ROOT__
Environment=OPENCLAW_STATE_DIR=__STATE_DIR__
Environment=PATH=%h/.config/varlock/bin:%h/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
ExecStart=__REPO_ROOT__/.venv/bin/python -m clawops ops --repo-root __REPO_ROOT__ browser-lab up
ExecStop=__REPO_ROOT__/.venv/bin/python -m clawops ops --repo-root __REPO_ROOT__ browser-lab down
ExecStart=__PYTHON_EXECUTABLE__ -m clawops ops --asset-root __REPO_ROOT__ browser-lab up
ExecStop=__PYTHON_EXECUTABLE__ -m clawops ops --asset-root __REPO_ROOT__ browser-lab down

[Install]
WantedBy=default.target
2 changes: 1 addition & 1 deletion platform/systemd/openclaw-gateway.service
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Type=simple
WorkingDirectory=__REPO_ROOT__
Environment=OPENCLAW_STATE_DIR=__STATE_DIR__
Environment=PATH=%h/.config/varlock/bin:%h/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
ExecStart=__PYTHON_EXECUTABLE__ -m clawops ops --repo-root __REPO_ROOT__ gateway start
ExecStart=__PYTHON_EXECUTABLE__ -m clawops ops --asset-root __REPO_ROOT__ gateway start
Restart=always
RestartSec=5
NoNewPrivileges=true
Expand Down
4 changes: 2 additions & 2 deletions platform/systemd/openclaw-sidecars.service
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ RemainAfterExit=true
WorkingDirectory=__REPO_ROOT__
Environment=OPENCLAW_STATE_DIR=__STATE_DIR__
Environment=PATH=%h/.config/varlock/bin:%h/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
ExecStart=__PYTHON_EXECUTABLE__ -m clawops ops --repo-root __REPO_ROOT__ sidecars up
ExecStop=__PYTHON_EXECUTABLE__ -m clawops ops --repo-root __REPO_ROOT__ sidecars down
ExecStart=__PYTHON_EXECUTABLE__ -m clawops ops --asset-root __REPO_ROOT__ sidecars up
ExecStop=__PYTHON_EXECUTABLE__ -m clawops ops --asset-root __REPO_ROOT__ sidecars down

[Install]
WantedBy=default.target
13 changes: 5 additions & 8 deletions src/clawops/acp_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
)
from clawops.app_paths import scoped_state_dir
from clawops.backend_registry import BackendDefinition, resolve_backend
from clawops.cli_roots import add_project_root_argument, resolve_project_root_argument
from clawops.common import dump_json, sha256_hex, write_json, write_text
from clawops.credential_broker import CredentialBroker, CredentialStatus
from clawops.op_journal import LeaseConflictError, OperationJournal
Expand All @@ -30,7 +31,6 @@
build_lock_identity,
build_session_identity,
)
from clawops.root_detection import resolve_project_root


class SessionLockError(RuntimeError):
Expand Down Expand Up @@ -579,12 +579,9 @@ def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
parser.add_argument("--role", default=None)
parser.add_argument("--lane", default="default")
parser.add_argument("--operation-kind", default="worker_dispatch")
parser.add_argument(
"--project-root",
"--repo-root",
dest="project_root",
type=pathlib.Path,
default=None,
add_project_root_argument(
parser,
help_text="Control project root for ACP state, journals, and derived worktrees.",
)
parser.add_argument("--project-id")
parser.add_argument(
Expand All @@ -611,7 +608,7 @@ def _resolve_session_spec(args: argparse.Namespace) -> SessionSpec:
"""Resolve CLI arguments into a typed session spec."""
role = args.role or args.session_type or "developer"
project = ProjectDescriptor.resolve(
resolve_project_root(args.project_root),
resolve_project_root_argument(args, command_name="clawops acp-runner"),
project_id=args.project_id,
trusted_roots=tuple(args.allowed_workspace_root),
)
Expand Down
3 changes: 3 additions & 0 deletions src/clawops/assets/platform/docs/DEVFLOW.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ clawops devflow cancel
clawops devflow audit
```

Use `--project-root <path>` when the control root for run state, journals, and
audit artifacts is not the current working directory.

## Operator Flow

Plan a run:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<string>-m</string>
<string>clawops</string>
<string>ops</string>
<string>--repo-root</string>
<string>--asset-root</string>
<string>__REPO_ROOT__</string>
<string>browser-lab</string>
<string>up</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<string>-m</string>
<string>clawops</string>
<string>ops</string>
<string>--repo-root</string>
<string>--asset-root</string>
<string>__REPO_ROOT__</string>
<string>gateway</string>
<string>start</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<string>-m</string>
<string>clawops</string>
<string>ops</string>
<string>--repo-root</string>
<string>--asset-root</string>
<string>__REPO_ROOT__</string>
<string>sidecars</string>
<string>up</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ RemainAfterExit=true
WorkingDirectory=__REPO_ROOT__
Environment=OPENCLAW_STATE_DIR=__STATE_DIR__
Environment=PATH=%h/.config/varlock/bin:%h/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
ExecStart=__REPO_ROOT__/.venv/bin/python -m clawops ops --repo-root __REPO_ROOT__ browser-lab up
ExecStop=__REPO_ROOT__/.venv/bin/python -m clawops ops --repo-root __REPO_ROOT__ browser-lab down
ExecStart=__PYTHON_EXECUTABLE__ -m clawops ops --asset-root __REPO_ROOT__ browser-lab up
ExecStop=__PYTHON_EXECUTABLE__ -m clawops ops --asset-root __REPO_ROOT__ browser-lab down

[Install]
WantedBy=default.target
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Type=simple
WorkingDirectory=__REPO_ROOT__
Environment=OPENCLAW_STATE_DIR=__STATE_DIR__
Environment=PATH=%h/.config/varlock/bin:%h/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
ExecStart=__PYTHON_EXECUTABLE__ -m clawops ops --repo-root __REPO_ROOT__ gateway start
ExecStart=__PYTHON_EXECUTABLE__ -m clawops ops --asset-root __REPO_ROOT__ gateway start
Restart=always
RestartSec=5
NoNewPrivileges=true
Expand Down
4 changes: 2 additions & 2 deletions src/clawops/assets/platform/systemd/openclaw-sidecars.service
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ RemainAfterExit=true
WorkingDirectory=__REPO_ROOT__
Environment=OPENCLAW_STATE_DIR=__STATE_DIR__
Environment=PATH=%h/.config/varlock/bin:%h/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
ExecStart=__PYTHON_EXECUTABLE__ -m clawops ops --repo-root __REPO_ROOT__ sidecars up
ExecStop=__PYTHON_EXECUTABLE__ -m clawops ops --repo-root __REPO_ROOT__ sidecars down
ExecStart=__PYTHON_EXECUTABLE__ -m clawops ops --asset-root __REPO_ROOT__ sidecars up
ExecStop=__PYTHON_EXECUTABLE__ -m clawops ops --asset-root __REPO_ROOT__ sidecars down

[Install]
WantedBy=default.target
Loading
Loading