Default bot profile for marrow-core.
This repository is not a Python package; it behaves like a user workspace
layout that marrow-core can consume.
This repository provides:
- Canonical role prompts and delegation layout under
roles/. - Stable policy directly in role definitions and AGENTS.
- Minimal context providers under
context.d/. - A minimal work-item context bridge for shared intake state under
context.d/work_items.py. - A default
marrow.tomlconfiguration that wires these intomarrow-core. - Casting metadata in
roles.tomlforrole-forge/ OpenCode.
marrow-core stays profile-agnostic: it only provides the scheduler, CLI, IPC, services, and sync model. marrow-bot is one concrete bot that runs on top of that runtime.
marrow-bot now reads the shared work-items/ contract via a context provider instead of redefining intake state inside the prompt tree.
marrow-bot is now prompt-first:
- stable policy lives in role definitions and AGENTS
- dynamic facts live in
context.d/ - lifecycle bridging is externalized to
marrow-task
marrow-bot itself stays read-only and prompt-first. Operational lifecycle bridging moved out so the profile repo does not become a tools or service repo.
There is intentionally no bot-local claim-next / complete / block / fail bridge in this repo. Use marrow-task or another external bridge for write-back and lifecycle operations.
Example:
uvx role-forge render --project-dir . --yes
uvx marrow-core validate --config ./marrow.toml
# lifecycle bridge lives in marrow-task:
python -m marrow_task claim-next --workspace /Users/marrow./setup.sh
uvx marrow-core dry-run --config ./marrow.tomlsetup.sh will:
- render
.opencode/agents/fromroles/ - use the checked-in
marrow.toml - use
sudoonly for operations that need elevated write access under/opt - run
validate,doctor, anddry-run - render service files into
./service-out
-
Prepare local prerequisites You need:
gituv/uvx(marrow-core is run viauvx marrow-core)opencodesudoaccess for operations that write protected paths under/opt
-
Run the setup helper
If
marrow-botis not yet cloned,setup.shwill auto-clone it to/opt/marrow-bot:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/zrr1999/marrow-bot/main/setup.sh)"With sudo (e.g. when
/optrequires elevation):sudo /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/zrr1999/marrow-bot/main/setup.sh)"Or clone manually and run:
git clone https://github.com/zrr1999/marrow-bot.git /opt/marrow-bot cd /opt/marrow-bot && ./setup.sh
-
Inspect the generated artifacts
- config in use:
./marrow.toml - rendered roles:
./.opencode/agents/ - rendered services:
./service-out/
- config in use:
-
Run marrow-core
Dry-run prompt assembly:
uvx marrow-core dry-run --config ./marrow.toml
Persistent runtime loop:
uvx marrow-core run --config ./marrow.toml
For local development with a marrow-core checkout, use
uv run --directory ../marrow-core marrow-core ...instead.
After setup, the service or CLI that runs marrow-core will use the orchestrator agent from this profile as the top-level scheduled main.
marrow.tomlkeeps only stable, reusable values.profile.root_diris pinned to/opt/marrow-botbecause the profile repo owns that path.- user-home-specific values are derived by
marrow-corefromuser = "marrow". agent_commandusesopencode run --agent orchestratorinstead of a machine-local absolute path, so installation depends on PATH rather than one developer workstation.
setup.shmay callsudofor protected writes, but does not need to be launched as root.- the runtime itself is still configured for
user = "marrow". marrow-coreshould derive the workspace from that user, place the IPC socket under the user-owned runtime tree, and keeptask add/task listusable without root.
marrow-botis read-only and prompt-first.- lifecycle write-back belongs outside this repo.
- default
syncis disabled in the template becausesync-onceis maintenance-only and source-checkout-centric. - setup may elevate selected install steps, but normal runtime and IPC usage should stay available to the configured bot user for
task add/task list.
marrow-bot is intentionally small:
roles/roles.tomlmarrow.toml- minimal
context.d/ - lightweight README / AGENTS