[package]
edition = "2024"
rust-version = "1.94.1"
name = "agentplane"
version = "0.10.0"
build = false
include = [
"/src/**/*.rs",
"/examples/*.rs",
"/examples/*.yaml",
"/examples/*.cedar",
"/src/bin/*.rs",
"/README.md",
"/CHANGELOG.md",
"/LICENSE-MIT",
"/LICENSE-APACHE",
"/clippy.toml",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Durable, replayable agent runtime — the journal is the plan of record"
readme = "README.md"
keywords = [
"agent",
"durable-execution",
"replay",
"runtime",
"llm",
]
categories = [
"asynchronous",
"data-structures",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/hupe1980/agentplane"
[package.metadata.docs.rs]
all-features = true
rustdoc-args = [
"--cfg",
"docsrs",
]
[features]
a2a = ["dep:reqwest"]
a2a-server = [
"http",
"manifest",
"push",
"dep:async-stream",
]
bedrock = [
"dep:aws-config",
"dep:aws-sdk-bedrockruntime",
"dep:aws-smithy-types",
"dep:base64",
"dep:jsonschema",
]
cedar = ["dep:cedar-policy"]
cli = [
"manifest",
"redb",
"providers",
"bedrock",
"testkit",
"dep:tracing-subscriber",
"dep:clap",
]
default = ["redb"]
http = [
"dep:axum",
"tokio/net",
"tokio/rt-multi-thread",
]
keyring = [
"dep:chacha20poly1305",
"dep:base64",
]
keyring-vault = [
"keyring",
"dep:reqwest",
]
manifest = [
"dep:serde_yaml_ng",
"dep:base64",
"dep:jsonschema",
]
mcp = ["dep:rmcp"]
mcp-stdio = [
"mcp",
"rmcp/transport-child-process",
]
media = [
"dep:base64",
"dep:reqwest",
"tokio/net",
]
opendal = ["dep:opendal"]
postgres = [
"dep:tokio-postgres",
"dep:deadpool-postgres",
]
providers = [
"dep:reqwest",
"dep:jsonschema",
]
push = ["dep:reqwest"]
redb = ["dep:redb"]
signing = ["dep:ed25519-dalek"]
testkit = []
witness-http = ["dep:reqwest"]
[lib]
name = "agentplane"
path = "src/lib.rs"
[[bin]]
name = "agentplane"
path = "src/bin/agentplane.rs"
required-features = ["cli"]
[[example]]
name = "a2a_peer"
path = "examples/a2a_peer.rs"
required-features = [
"redb",
"a2a-server",
"manifest",
]
[[example]]
name = "a2a_tck_live"
path = "examples/a2a_tck_live.rs"
required-features = [
"redb",
"a2a-server",
"manifest",
]
[[example]]
name = "bedrock_live"
path = "examples/bedrock_live.rs"
required-features = ["bedrock"]
[[example]]
name = "blog_room"
path = "examples/blog_room.rs"
required-features = [
"redb",
"testkit",
"manifest",
]
[[example]]
name = "clearing_case"
path = "examples/clearing_case.rs"
required-features = ["redb"]
[[example]]
name = "durable_pipeline"
path = "examples/durable_pipeline.rs"
required-features = ["redb"]
[[example]]
name = "effect_group"
path = "examples/effect_group.rs"
required-features = ["redb"]
[[example]]
name = "governed_transfer"
path = "examples/governed_transfer.rs"
required-features = ["redb"]
[[example]]
name = "hello_skill"
path = "examples/hello_skill.rs"
required-features = ["redb"]
[[example]]
name = "journal_bench"
path = "examples/journal_bench.rs"
required-features = ["redb"]
[[example]]
name = "manifest_run"
path = "examples/manifest_run.rs"
required-features = [
"redb",
"testkit",
"manifest",
]
[[example]]
name = "mcp_tools"
path = "examples/mcp_tools.rs"
required-features = [
"redb",
"testkit",
"manifest",
"mcp",
]
[[example]]
name = "media_run"
path = "examples/media_run.rs"
required-features = [
"redb",
"testkit",
"media",
]
[[example]]
name = "memory_run"
path = "examples/memory_run.rs"
required-features = ["redb"]
[[example]]
name = "model_run"
path = "examples/model_run.rs"
required-features = [
"redb",
"testkit",
]
[[example]]
name = "openai_live"
path = "examples/openai_live.rs"
required-features = [
"redb",
"providers",
]
[[example]]
name = "plan_graph"
path = "examples/plan_graph.rs"
required-features = ["redb"]
[[example]]
name = "planned_run"
path = "examples/planned_run.rs"
required-features = [
"redb",
"testkit",
"manifest",
]
[[example]]
name = "saga_checkout"
path = "examples/saga_checkout.rs"
required-features = ["redb"]
[[example]]
name = "sealed_run"
path = "examples/sealed_run.rs"
required-features = [
"redb",
"testkit",
"keyring",
]
[[example]]
name = "standing_authority"
path = "examples/standing_authority.rs"
required-features = [
"redb",
"testkit",
]
[[example]]
name = "streaming_run"
path = "examples/streaming_run.rs"
required-features = [
"redb",
"testkit",
]
[[example]]
name = "tool_loop"
path = "examples/tool_loop.rs"
required-features = [
"redb",
"testkit",
"manifest",
]
[dependencies.async-stream]
version = "0.3"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.aws-config]
version = "1.10.1"
features = [
"default-https-client",
"rt-tokio",
"credentials-process",
"sso",
"behavior-version-latest",
]
optional = true
default-features = false
[dependencies.aws-sdk-bedrockruntime]
version = "1.139.0"
features = [
"default-https-client",
"rt-tokio",
"behavior-version-latest",
]
optional = true
default-features = false
[dependencies.aws-smithy-types]
version = "1.6.1"
optional = true
[dependencies.axum]
version = "0.8.9"
features = [
"json",
"http1",
"tokio",
"query",
]
optional = true
default-features = false
[dependencies.base64]
version = "0.22"
optional = true
[dependencies.cedar-policy]
version = "4.12.0"
optional = true
default-features = false
[dependencies.chacha20poly1305]
version = "0.10"
features = [
"alloc",
"getrandom",
]
optional = true
default-features = false
[dependencies.clap]
version = "4"
features = [
"derive",
"std",
"help",
"usage",
"error-context",
"suggestions",
"env",
"wrap_help",
]
optional = true
default-features = false
[dependencies.deadpool-postgres]
version = "0.14.1"
optional = true
[dependencies.ed25519-dalek]
version = "3"
features = [
"alloc",
"zeroize",
"signature",
]
optional = true
default-features = false
[dependencies.futures-core]
version = "0.3"
[dependencies.futures-util]
version = "0.3"
features = [
"std",
"async-await",
]
default-features = false
[dependencies.hex]
version = "0.4"
[dependencies.jsonschema]
version = "0.49.5"
optional = true
default-features = false
[dependencies.opendal]
version = "0.58"
features = ["services-fs"]
optional = true
default-features = false
[dependencies.rand]
version = "0.9"
[dependencies.rand_chacha]
version = "0.9"
[dependencies.redb]
version = "3"
optional = true
[dependencies.reqwest]
version = "0.13"
features = [
"json",
"rustls",
"http2",
"charset",
"stream",
]
optional = true
default-features = false
[dependencies.rmcp]
version = "3.1"
features = [
"client",
"transport-io",
]
optional = true
default-features = false
[dependencies.schemars]
version = "1"
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.serde_yaml_ng]
version = "0.10"
optional = true
[dependencies.sha2]
version = "0.10"
[dependencies.thiserror]
version = "2"
[dependencies.time]
version = "0.3"
features = [
"serde-well-known",
"macros",
"formatting",
"parsing",
]
[dependencies.tokio]
version = "1"
features = [
"sync",
"rt",
"macros",
"time",
]
[dependencies.tokio-postgres]
version = "0.7.18"
features = ["with-serde_json-1"]
optional = true
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"fmt",
"registry",
"env-filter",
]
optional = true
default-features = false
[dependencies.ulid]
version = "1"
features = ["serde"]
[dependencies.zeroize]
version = "1"
features = [
"alloc",
"derive",
]
[dev-dependencies.aws-smithy-http-client]
version = "1"
features = ["test-util"]
[dev-dependencies.bytes]
version = "1"
[dev-dependencies.futures-util]
version = "0.3"
features = [
"std",
"async-await",
]
default-features = false
[dev-dependencies.http]
version = "1"
[dev-dependencies.rmcp]
version = "3.1"
features = [
"server",
"transport-io",
"macros",
]
default-features = false
[dev-dependencies.testcontainers-modules]
version = "0.15.0"
features = ["postgres"]
[dev-dependencies.tokio]
version = "1"
features = ["full"]
[dev-dependencies.tower]
version = "0.5.3"
features = ["util"]
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = [
"fmt",
"registry",
]
default-features = false
[lints.clippy]
missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
must_use_candidate = "allow"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "warn"
priority = -1
[lints.rust]
missing_debug_implementations = "warn"
unsafe_code = "forbid"