Skip to main content

Minimal self-evolving agent scheduler with hard core/evolution isolation

Project description

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

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

uv tool install marrow-core
# or inside a project:
uv add marrow-core

Configuration

# 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 for a full breakdown.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

marrow_core-0.0.1.tar.gz (46.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

marrow_core-0.0.1-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file marrow_core-0.0.1.tar.gz.

File metadata

  • Download URL: marrow_core-0.0.1.tar.gz
  • Upload date:
  • Size: 46.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for marrow_core-0.0.1.tar.gz
Algorithm Hash digest
SHA256 347862f73edd72887d19d07b469162f15ccb30b7955cb6eca1458cb712cbde7c
MD5 ebaae67489805a5fc21bd020849c2a39
BLAKE2b-256 a1b2b470b1a8d1edd03216e9411a6d8ef5111f2c06276668f65302f1b5858cd0

See more details on using hashes here.

File details

Details for the file marrow_core-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: marrow_core-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for marrow_core-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4ac4e2b10729bd88f1ec47b17ce45310a472e2373aebd3f147035b1d18dc2d88
MD5 9b0ab82b851d0dd60acc4b8137d1c112
BLAKE2b-256 6ce072218da2f1ba0ecc98299bfac76de556e7d5734ba95dd17962c62781066c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page