https://github.com/zrr1999/marrow-core
Minimal self-evolving agent scheduler — hard isolation between core (human) and agent evolution
https://github.com/zrr1999/marrow-core
Last synced: 4 months ago
JSON representation
Minimal self-evolving agent scheduler — hard isolation between core (human) and agent evolution
- Host: GitHub
- URL: https://github.com/zrr1999/marrow-core
- Owner: zrr1999
- Created: 2026-03-01T14:21:57.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-03-06T17:02:30.000Z (4 months ago)
- Last Synced: 2026-03-06T17:44:06.526Z (4 months ago)
- Language: Python
- Size: 199 KB
- Stars: 0
- Watchers: 0
- Forks: 1
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# marrow-core
Minimal self-evolving agent scheduler with hard isolation between the **core** (human-maintained) and **agent evolution** (agent-maintained).
## Design
```
/opt/marrow-core/ # root-owned — immutable to the agent
/Users/marrow/ # agent-owned — the agent evolves here freely
```
The agent cannot modify core. If it wants a core change it writes a proposal to `tasks/queue/core-proposal-*.md` and a human reviews it.
## Two-tier agent model
| Agent | Interval | Purpose |
|-------|----------|---------|
| **scout** | 5 min | Fast dispatcher — scan queue, do trivial work, delegate complex tasks |
| **artisan** | ~2.4 h | Deep worker — pick highest-value task, complete end-to-end with checkpoints |
## CLI
```
marrow run # persistent heartbeat loop
marrow run-once # one tick per agent then exit
marrow dry-run # print assembled prompts, don't run agents
marrow setup # init workspace dirs and sync agent symlinks
marrow validate # check config and show summary
marrow doctor # verify workspace, context dirs, and agent command availability
```
Options available on every command:
```
--config / -c PATH Path to marrow.toml [default: marrow.toml]
--verbose / -v Enable debug logging
--json-logs Emit newline-delimited JSON log records
```
## Installation
```bash
uv tool install marrow-core
# or inside a project:
uv add marrow-core
```
## Configuration
```toml
# marrow.toml
core_dir = "/opt/marrow-core"
[[agents]]
name = "scout"
heartbeat_interval = 300 # seconds
heartbeat_timeout = 300
agent_command = "opencode run --agent scout"
workspace = "/Users/marrow"
context_dirs = ["/Users/marrow/context.d"]
[[agents]]
name = "artisan"
heartbeat_interval = 8640 # ~2.4 hours
heartbeat_timeout = 8000
agent_command = "opencode run --agent artisan"
workspace = "/Users/marrow"
context_dirs = ["/Users/marrow/context.d"]
```
## Context providers
Any executable script inside a `context_dirs` directory is run each tick. Its stdout is appended verbatim to the agent prompt. No JSON protocol — plain text.
```
/Users/marrow/context.d/
├── 00_queue.py # reads tasks/queue/ and prints a summary
└── 10_explore.py # fallback when no tasks are queued
```
The agent is free to add, edit, or remove scripts under its own `context.d/`.
## Architecture
See [AGENTS.md](AGENTS.md) for a full breakdown.
## License
MIT