Files
ironclaw/crates
dependabot[bot] 0b8fbf222e chore(deps): bump the everything-else group across 1 directory with 17 updates
Bumps the everything-else group with 17 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [uuid](https://github.com/uuid-rs/uuid) | `1.24.0` | `1.26.0` |
| [base64](https://github.com/marshallpierce/rust-base64) | `0.22.1` | `0.23.1` |
| [toml](https://github.com/toml-rs/toml) | `0.9.12+spec-1.1.0` | `1.1.4+spec-1.1.0` |
| [http-body-util](https://github.com/hyperium/http-body) | `0.1.4` | `0.1.5` |
| [rstest](https://github.com/la10736/rstest) | `0.23.0` | `0.26.1` |
| [jsonschema](https://github.com/Stranger6667/jsonschema) | `0.46.10` | `0.49.9` |
| [deadpool](https://github.com/deadpool-rs/deadpool) | `0.13.0` | `0.13.1` |
| [blake3](https://github.com/BLAKE3-team/BLAKE3) | `1.8.6` | `1.8.7` |
| [quick-xml](https://github.com/tafia/quick-xml) | `0.41.0` | `0.42.0` |
| [printpdf](https://github.com/fschutt/printpdf) | `0.12.5` | `0.12.6` |
| [lru](https://github.com/jeromefroe/lru-rs) | `0.18.2` | `0.18.3` |
| [wat](https://github.com/bytecodealliance/wasm-tools) | `1.256.0` | `1.258.0` |
| [aes-gcm](https://github.com/RustCrypto/AEADs) | `0.11.0` | `0.11.1` |
| [similar](https://github.com/mitsuhiko/similar) | `3.1.2` | `3.2.0` |
| [syn](https://github.com/dtolnay/syn) | `3.0.3` | `3.0.4` |
| [open](https://github.com/Byron/open-rs) | `5.4.1` | `5.4.2` |
| [rig-core](https://github.com/0xPlaygrounds/rig) | `0.36.0` | `0.42.0` |



Updates `uuid` from 1.24.0 to 1.26.0
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/v1.24.0...v1.26.0)

Updates `base64` from 0.22.1 to 0.23.1
- [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md)
- [Commits](https://github.com/marshallpierce/rust-base64/compare/v0.22.1...v0.23.1)

Updates `toml` from 0.9.12+spec-1.1.0 to 1.1.4+spec-1.1.0
- [Commits](https://github.com/toml-rs/toml/compare/toml-v0.9.12...toml-v1.1.4)

Updates `http-body-util` from 0.1.4 to 0.1.5
- [Release notes](https://github.com/hyperium/http-body/releases)
- [Commits](https://github.com/hyperium/http-body/compare/http-body-util-v0.1.4...http-body-util-v0.1.5)

Updates `rstest` from 0.23.0 to 0.26.1
- [Release notes](https://github.com/la10736/rstest/releases)
- [Changelog](https://github.com/la10736/rstest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/la10736/rstest/compare/v0.23.0...v0.26.1)

Updates `jsonschema` from 0.46.10 to 0.49.9
- [Release notes](https://github.com/Stranger6667/jsonschema/releases)
- [Changelog](https://github.com/Stranger6667/jsonschema/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stranger6667/jsonschema/compare/cli-v0.46.10...cli-v0.49.9)

Updates `deadpool` from 0.13.0 to 0.13.1
- [Changelog](https://github.com/deadpool-rs/deadpool/blob/main/release.toml)
- [Commits](https://github.com/deadpool-rs/deadpool/compare/deadpool-v0.13.0...deadpool-v0.13.1)

Updates `blake3` from 1.8.6 to 1.8.7
- [Release notes](https://github.com/BLAKE3-team/BLAKE3/releases)
- [Commits](https://github.com/BLAKE3-team/BLAKE3/compare/1.8.6...1.8.7)

Updates `quick-xml` from 0.41.0 to 0.42.0
- [Release notes](https://github.com/tafia/quick-xml/releases)
- [Changelog](https://github.com/tafia/quick-xml/blob/master/Changelog.md)
- [Commits](https://github.com/tafia/quick-xml/compare/v0.41.0...v0.42.0)

Updates `printpdf` from 0.12.5 to 0.12.6
- [Release notes](https://github.com/fschutt/printpdf/releases)
- [Changelog](https://github.com/fschutt/printpdf/blob/master/CHANGELOG.md)
- [Commits](https://github.com/fschutt/printpdf/commits)

Updates `lru` from 0.18.2 to 0.18.3
- [Changelog](https://github.com/jeromefroe/lru-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/jeromefroe/lru-rs/compare/0.18.2...0.18.3)

Updates `wat` from 1.256.0 to 1.258.0
- [Release notes](https://github.com/bytecodealliance/wasm-tools/releases)
- [Commits](https://github.com/bytecodealliance/wasm-tools/compare/v1.256.0...v1.258.0)

Updates `aes-gcm` from 0.11.0 to 0.11.1
- [Commits](https://github.com/RustCrypto/AEADs/compare/aes-gcm-v0.11.0...aes-gcm-v0.11.1)

Updates `similar` from 3.1.2 to 3.2.0
- [Changelog](https://github.com/mitsuhiko/similar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/mitsuhiko/similar/compare/3.1.2...3.2.0)

Updates `syn` from 3.0.3 to 3.0.4
- [Release notes](https://github.com/dtolnay/syn/releases)
- [Commits](https://github.com/dtolnay/syn/compare/3.0.3...3.0.4)

Updates `open` from 5.4.1 to 5.4.2
- [Release notes](https://github.com/Byron/open-rs/releases)
- [Changelog](https://github.com/Byron/open-rs/blob/main/changelog.md)
- [Commits](https://github.com/Byron/open-rs/compare/v5.4.1...v5.4.2)

Updates `rig-core` from 0.36.0 to 0.42.0
- [Release notes](https://github.com/0xPlaygrounds/rig/releases)
- [Changelog](https://github.com/0xPlaygrounds/rig/blob/main/CHANGELOG.md)
- [Commits](https://github.com/0xPlaygrounds/rig/compare/rig-core-v0.36.0...v0.42.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-version: 1.26.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: everything-else
- dependency-name: base64
  dependency-version: 0.23.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: everything-else
- dependency-name: toml
  dependency-version: 1.1.4+spec-1.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: everything-else
- dependency-name: http-body-util
  dependency-version: 0.1.5
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: everything-else
- dependency-name: rstest
  dependency-version: 0.26.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: everything-else
- dependency-name: jsonschema
  dependency-version: 0.49.9
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: everything-else
- dependency-name: deadpool
  dependency-version: 0.13.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: everything-else
- dependency-name: blake3
  dependency-version: 1.8.7
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: everything-else
- dependency-name: quick-xml
  dependency-version: 0.42.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: everything-else
- dependency-name: printpdf
  dependency-version: 0.12.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: everything-else
- dependency-name: lru
  dependency-version: 0.18.3
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: everything-else
- dependency-name: wat
  dependency-version: 1.258.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: everything-else
- dependency-name: aes-gcm
  dependency-version: 0.11.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: everything-else
- dependency-name: similar
  dependency-version: 3.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: everything-else
- dependency-name: syn
  dependency-version: 3.0.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: everything-else
- dependency-name: open
  dependency-version: 5.4.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: everything-else
- dependency-name: rig-core
  dependency-version: 0.42.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: everything-else
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-08-31 13:15:46 +00:00
..

IronClaw crates

crates/ is the whole IronClaw Reborn production stack: one Cargo workspace arranged as ten family directories, each owning one kind of responsibility. There is no legacy tier — the v1 monolith and its crates are gone.

This page is the human map. For agent routing and the enforced dependency matrix use AGENTS.md; for the runtime narrative (how a turn actually executes) read Architecture.md; for the design record — per-family specs, the frozen proposal, the live checklist — read docs/internal/reborn/target-architecture/.

Mental model

Authority is narrow and explicit, and the tree mirrors it:

  1. contracts/ describe — shared vocabulary and ports every tier may see. Nothing here executes, persists, or names a vendor.
  2. kernel/ decides — the authority perimeter: trust, authorization, approvals, resources, runtime policy, the capability membrane, process lifecycle, turn admission, and the mediated host services.
  3. substrates/, events/, domains/ hold mechanism and state — privileged mechanisms (files, secrets, network), append-only evidence and read models, and typed record owners. All of it is mediated by the kernel.
  4. lanes/ execute — already-authorized work runs in isolation (WASM, MCP, the container sandbox) and returns normalized outcomes.
  5. loop/ decides agent behavior — deliberately untrusted; it can only request effects through typed ports.
  6. extensions/ package integrations — manifests, the generic host, and one self-contained directory per installable package.
  7. product/ owns the experience — the assistant, the operator control plane, the WebUI, the OpenAI-compatible API.
  8. app/ assembles and enforces — composition wires it, the ironclaw binary boots it, the architecture tests keep the rules mechanical.

One request stitches them together: the loop chooses a tool, the kernel permits it, a lane runs it, and domains and events remember it. If a change adds authority or persistence, put it in the family that owns that boundary — never thread it through a UI or runtime crate.

The ten families

Counts updated 2026-08-12 (cargo metadata --no-deps; the enforcing gate is python3 scripts/ci/check-target-tree.py). Every family has an AGENTS.md (its boundary and crate table) and an in-depth spec in docs/internal/reborn/target-architecture/families/; every crate has a README.md.

Directory Crates What lives there
contracts/ 6 host_api, common, prompt_envelope, loop_contracts, extension_contracts, product_contracts
substrates/ 7 filesystem, documents, libsql_runtime, secrets, network, safety, observability
events/ 4 event_log, event_store, event_projections, event_streams
domains/ 12 threads, conversations, triggers, memory, skills, auth, attachments, extractors, identity, llm, trace_commons, outbound
kernel/ 9 trust, authorization, approvals, resources, runtime_policy, capabilities, processes, turns, host_runtime
lanes/ 4 wasm, wasm_limiter, mcp, sandbox
loop/ 4 agent_loop, loop_host, turn_runner, hooks
extensions/ 8 extension_registry, extension_host, extension_manager, extension_support, plus the 4 crates under packages/ (below)
product/ 5 assistant, operator, openai_compat, webui, host_ingress
app/ 4 composition, cli (package ironclaw — the binary), config, architecture_tests

Crate directories carry the full package name (crates/kernel/ironclaw_turns → package ironclaw_turns), so moving a crate between families is never a rename. The exceptions are app/ironclaw_cli (package ironclaw) and the extension packages below.

Extension packages

crates/extensions/packages/ holds 14 self-contained package directories — the only place in the workspace where vendor names may appear. Four are workspace crates: slack and telegram (channel adapters), memory-native and mem0 (memory providers). Ten are data-only packages (manifest + prompts/schemas, some with prebuilt WASM): github, gmail, google-calendar, google-docs, google-drive, google-sheets, google-slides, nearai-mcp, notion-mcp, web-access. Each package directory has its own README.md, crate or not.

The workspace beyond crates/

65 of the workspace's 67 packages live under crates/. The other two are the root package ironclaw_integration_tests (the in-process integration suite driving tests/integration/) and tools/ironclaw_stress. One package is deliberately excluded from the workspace: tools/ironclaw_silk_decoder, a standalone helper with its own toolchain requirements.

Family directories are ownership, not compile-time trust units — the enforced dependency ladder is the seven-layer matrix in AGENTS.md.

Where to make a change

Pick the family with the table above, then follow the read order in AGENTS.md: family AGENTS.md → crate README.md → crate working rules / module spec → docs/internal/reborn/contracts/. Two program-wide rules to know before starting:

  • Product handlers, channels, scheduled triggers, and agent callers go through ProductSurface and the capability contracts — never around authorization, approvals, or the owning domain operation (root AGENTS.md, "Security and runtime invariants").
  • LLM data is never deleted. Durable state goes through the RootFilesystem mount catalog; in-memory maps are caches, never the source of truth (root AGENTS.md).

Quick commands

From the repository root:

cargo test -p <crate_name>                  # narrowest first
cargo test -p ironclaw_architecture_tests   # dependency/layer gates
python3 scripts/ci/check-target-tree.py     # tree vs documented package set

The full gate (cargo fmt, workspace clippy, workspace tests) is documented in the root AGENTS.md. Some crates test backends conditionally (PostgreSQL, libSQL, WASM) — read the crate's README.md and module spec before assuming a command covers them.