Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
1fd19da
feat(agents): durable managed-agent runtime
jlwainwright Aug 3, 2026
f03d518
fix(agents): harden durable runtime cutover
jlwainwright Aug 3, 2026
fdbee52
fix(agents): satisfy managed adapter clippy gate
jlwainwright Aug 3, 2026
a32e46d
fix(agents): expose process liveness to mesh recovery
jlwainwright Aug 3, 2026
628d43a
fix(jobs): report the real managed job failure instead of an opaque e…
jlwainwright Aug 4, 2026
d240cfe
fix(acp): surface bounded relay error bodies in HTTP failures
jlwainwright Aug 14, 2026
b256caa
fix(agents): align rebase fallout with upstream signatures and gates
jlwainwright Aug 15, 2026
d754dc6
test(db): count agent_jobs migration in embedded migrator
jlwainwright Aug 15, 2026
0d7d5a1
fix(security): enforce artifact URI scheme allowlist; guard job inges…
jlwainwright Aug 15, 2026
b57e247
docs(runtime): document buzz-runtime public API; justify unsafe FFI b…
jlwainwright Aug 15, 2026
53d39fa
fix(runtime): repair reconcile contract, sticky cancelling, bound con…
jlwainwright Aug 15, 2026
ad70a92
test(runtime): cover client/artifact contracts; document pub surface;…
jlwainwright Aug 15, 2026
f80d08b
Merge remote-tracking branch 'origin/main'
jlwainwright Aug 16, 2026
18f5c8f
fix(runtime): add durable-store retention/compaction and scope FFI ex…
jlwainwright Aug 16, 2026
a26b99d
Merge origin/main into feat/durable-managed-agent-runtime
jlwainwright Aug 18, 2026
49fd632
Merge origin/main into feat/durable-managed-agent-runtime
jlwainwright Aug 19, 2026
7f973a1
Merge origin/main into feat/durable-managed-agent-runtime
jlwainwright Aug 20, 2026
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
1 change: 1 addition & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ crates/
buzz-media # Blossom/S3 media storage
# Agent surface
buzz-acp # ACP harness bridging Buzz events to AI agents
buzz-runtime # Local managed-agent runtime: durable job store, artifacts, control server/client
buzz-agent # Minimal ACP-compliant agent (non-streaming, tool-calls-as-output)
buzz-dev-mcp # Developer MCP server — shell + file-edit tools
buzz-persona # Agent persona packs
Expand Down
1 change: 1 addition & 0 deletions ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ buzz-core (zero I/O — types, verification, filter matching, kind registry)
buzz-acp (agent harness — bridges relay @mentions → AI agents via ACP/JSON-RPC)
buzz-sdk (typed Nostr event builders — used by buzz-acp and buzz-cli)
buzz-media (Blossom/S3 media storage)
buzz-runtime (local managed-agent runtime substrate: durable job store, artifact vault, control protocol)
buzz-cli (agent-first CLI)
buzz-admin (operator CLI: relay membership + key generation)
buzz-test-client (integration test harness + manual CLI)
Expand Down
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
# Changelog


## Unreleased

### Desktop and shared changes

- feat(agents): durable managed agents — serialized inboxes, resumable channel sessions, authenticated detached jobs, signed relay progress, Desktop reattachment, and persistent assignment state

## v0.5.17

### Desktop and shared changes
Expand Down
85 changes: 82 additions & 3 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ members = [
"crates/buzz-search",
"crates/buzz-audit",
"crates/buzz-acp",
"crates/buzz-runtime",
"crates/buzz-agent",
"crates/sprig",
"crates/buzz-test-client",
Expand Down Expand Up @@ -56,6 +57,7 @@ tower-http = { version = "0.6", features = ["trace", "cors", "compression-gzip"
sqlx = { version = "0.9", features = [
"runtime-tokio", "tls-rustls", "postgres", "uuid", "chrono", "json"
] }
rusqlite = { version = "0.37", features = ["bundled"] }

# Redis
redis = { version = "1.0", features = ["tokio-comp", "connection-manager", "tokio-rustls-comp"] }
Expand All @@ -80,6 +82,7 @@ iroh = { version = "1.0.0-rc.0", default-features = false, features = ["tls-ring
serde_json = "1"
serde_yaml = "0.9"
evalexpr = "11"
fs2 = "0.4"
cron = "0.16"
# Observability
tracing = "0.1"
Expand Down Expand Up @@ -111,6 +114,7 @@ base64 = "0.22"

# Randomness
rand = "0.10"
windows-sys = { version = "0.61", features = ["Win32_Foundation", "Win32_Security", "Win32_Storage_FileSystem"] }
subtle = "2.6"
zeroize = "1.8"

Expand Down Expand Up @@ -146,6 +150,7 @@ buzz-media = { path = "crates/buzz-media" }
buzz-sdk = { path = "crates/buzz-sdk" }
buzz-ws-client = { path = "crates/buzz-ws-client" }
buzz-relay-mesh = { path = "crates/buzz-relay-mesh" }
buzz-runtime = { path = "crates/buzz-runtime" }
buzz-datastore-tracing = { path = "crates/buzz-datastore-tracing" }

# CI profile — builds the relay for desktop e2e. Dependencies keep full
Expand Down
13 changes: 10 additions & 3 deletions crates/buzz-acp/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ path = "src/main.rs"
buzz-core = { workspace = true }
buzz-sdk = { workspace = true }
buzz-persona = { path = "../buzz-persona" }
buzz-runtime = { workspace = true }

# Nostr
nostr = { workspace = true }
Expand Down Expand Up @@ -61,6 +62,7 @@ tracing-subscriber = { workspace = true }
# Error handling
thiserror = { workspace = true }
anyhow = { workspace = true }
fs2 = { workspace = true }

# CLI
clap = { version = "4", features = ["derive", "env"] }
Expand All @@ -71,11 +73,16 @@ toml = "1.0"
# Filter expressions
evalexpr = { workspace = true }

# Process-group kill (safe wrapper around killpg) — Unix-only; kill_process_group
# has a #[cfg(not(unix))] fallback in acp.rs.
# Process-group kill is Unix-only; Windows adapter trees use buzz-runtime's
# Job Object helper, and other targets retain the direct-child fallback.
[target.'cfg(unix)'.dependencies]
nix = { version = "0.31", default-features = false, features = ["signal"] }
nix = { version = "0.31", default-features = false, features = ["process", "signal"] }
signal-hook = "0.3"

[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.61", features = ["Win32_Foundation", "Win32_Security", "Win32_Security_Authorization", "Win32_System_JobObjects", "Win32_System_Memory", "Win32_System_Threading"] }

[dev-dependencies]
tokio = { workspace = true, features = ["test-util"] }
httparse = "1"
tempfile = "3"
Loading