#Workspace crate dependency graphs
On this page
Desktop app (jam-desktop)Thin CLI (jam package, default features)Daemon (jam package, daemon feature)Crate summarySources: Cargo.toml, cargo metadata --no-deps.
Normal (non-dev, non-build) dependencies between workspace crates. Dotted edges are platform-conditional (cfg(...) targets). Each product binary gets its own graph because Cargo feature unification in a whole-workspace build hides which crates a single binary actually pulls in. Optional dependencies are followed only when the binary's features enable them.
#Desktop app (jam-desktop)
The desktop must not depend on any daemon-stack crate. just no-daemon enforces this.
flowchart TD
jam_analytics["jam-analytics"]
jam_analytics_local["jam-analytics-local"]
jam_auth["jam-auth"]
jam_client["jam-client"]
jam_contract["jam-contract"]
jam_desktop["jam-desktop"]
jam_domain["jam-domain"]
jam_ipc["jam-ipc"]
jam_macos_notifications["jam-macos-notifications"]
jam_managed_config["jam-managed-config"]
jam_secure_store["jam-secure-store"]
jam_service["jam-service"]
jam_setup["jam-setup"]
jam_tls["jam-tls"]
jam_version["jam-version"]
jam_windows_ipc["jam-windows-ipc"]
jam_wire["jam-wire"]
jam_desktop --> jam_analytics
jam_analytics --> jam_domain
jam_desktop --> jam_analytics_local
jam_analytics_local --> jam_analytics
jam_analytics_local --> jam_secure_store
jam_desktop --> jam_auth
jam_auth --> jam_domain
jam_auth --> jam_tls
jam_desktop --> jam_client
jam_client --> jam_contract
jam_contract --> jam_domain
jam_client --> jam_domain
jam_client --> jam_windows_ipc
jam_client --> jam_wire
jam_wire --> jam_contract
jam_wire --> jam_domain
jam_desktop --> jam_contract
jam_desktop --> jam_domain
jam_desktop --> jam_ipc
jam_ipc --> jam_contract
jam_ipc --> jam_domain
jam_desktop --> jam_managed_config
jam_desktop --> jam_service
jam_desktop --> jam_setup
jam_desktop --> jam_tls
jam_desktop --> jam_version
jam_desktop -.-> jam_macos_notifications
jam_desktop -.-> jam_windows_ipc
#Thin CLI (jam package, default features)
Default features build band and jam, which talk to jamd over the local socket. just thin-cli checks this graph.
flowchart TD
jam["jam"]
jam_analytics["jam-analytics"]
jam_analytics_local["jam-analytics-local"]
jam_auth["jam-auth"]
jam_client["jam-client"]
jam_contract["jam-contract"]
jam_discovery["jam-discovery"]
jam_domain["jam-domain"]
jam_host["jam-host"]
jam_managed_config["jam-managed-config"]
jam_secure_store["jam-secure-store"]
jam_service["jam-service"]
jam_setup["jam-setup"]
jam_store["jam-store"]
jam_tls["jam-tls"]
jam_version["jam-version"]
jam_windows_ipc["jam-windows-ipc"]
jam_wire["jam-wire"]
jam --> jam_analytics
jam_analytics --> jam_domain
jam --> jam_analytics_local
jam_analytics_local --> jam_analytics
jam_analytics_local --> jam_secure_store
jam --> jam_auth
jam_auth --> jam_domain
jam_auth --> jam_tls
jam --> jam_client
jam_client --> jam_contract
jam_contract --> jam_domain
jam_client --> jam_domain
jam_client --> jam_windows_ipc
jam_client --> jam_wire
jam_wire --> jam_contract
jam_wire --> jam_domain
jam --> jam_contract
jam --> jam_discovery
jam_discovery --> jam_contract
jam_discovery --> jam_domain
jam --> jam_domain
jam --> jam_host
jam_host --> jam_contract
jam_host --> jam_domain
jam --> jam_managed_config
jam --> jam_service
jam --> jam_setup
jam --> jam_store
jam_store --> jam_domain
jam_store --> jam_secure_store
jam --> jam_tls
jam --> jam_version
jam -.-> jam_windows_ipc
#Daemon (jam package, daemon feature)
The daemon feature adds jamd and the full execution stack.
flowchart TD
jam["jam"]
jam_analytics["jam-analytics"]
jam_analytics_local["jam-analytics-local"]
jam_auth["jam-auth"]
jam_awake_clock["jam-awake-clock"]
jam_client["jam-client"]
jam_contract["jam-contract"]
jam_core["jam-core"]
jam_daemon["jam-daemon"]
jam_discovery["jam-discovery"]
jam_domain["jam-domain"]
jam_host["jam-host"]
jam_managed_config["jam-managed-config"]
jam_manager["jam-manager"]
jam_secure_store["jam-secure-store"]
jam_service["jam-service"]
jam_setup["jam-setup"]
jam_store["jam-store"]
jam_tls["jam-tls"]
jam_transport["jam-transport"]
jam_transport_band["jam-transport-band"]
jam_update["jam-update"]
jam_usage["jam-usage"]
jam_version["jam-version"]
jam_windows_ipc["jam-windows-ipc"]
jam_wire["jam-wire"]
jam --> jam_analytics
jam_analytics --> jam_domain
jam --> jam_analytics_local
jam_analytics_local --> jam_analytics
jam_analytics_local --> jam_secure_store
jam --> jam_auth
jam_auth --> jam_domain
jam_auth --> jam_tls
jam --> jam_client
jam_client --> jam_contract
jam_contract --> jam_domain
jam_client --> jam_domain
jam_client --> jam_windows_ipc
jam_client --> jam_wire
jam_wire --> jam_contract
jam_wire --> jam_domain
jam --> jam_contract
jam --> jam_core
jam_core --> jam_contract
jam_core --> jam_domain
jam_core --> jam_transport
jam_transport --> jam_domain
jam --> jam_daemon
jam_daemon --> jam_contract
jam_daemon --> jam_domain
jam_daemon --> jam_windows_ipc
jam_daemon --> jam_wire
jam --> jam_discovery
jam_discovery --> jam_contract
jam_discovery --> jam_domain
jam --> jam_domain
jam --> jam_host
jam_host --> jam_contract
jam_host --> jam_domain
jam --> jam_managed_config
jam --> jam_manager
jam_manager --> jam_analytics
jam_manager --> jam_auth
jam_manager --> jam_awake_clock
jam_manager --> jam_contract
jam_manager --> jam_core
jam_manager --> jam_domain
jam_manager --> jam_host
jam_manager --> jam_store
jam_store --> jam_domain
jam_store --> jam_secure_store
jam_manager --> jam_transport
jam_manager --> jam_update
jam_update --> jam_domain
jam_update --> jam_tls
jam_manager --> jam_usage
jam_usage --> jam_domain
jam_manager -.-> jam_windows_ipc
jam --> jam_service
jam --> jam_setup
jam --> jam_store
jam --> jam_tls
jam --> jam_transport_band
jam_transport_band --> jam_domain
jam_transport_band --> jam_tls
jam_transport_band --> jam_transport
jam --> jam_version
jam -.-> jam_windows_ipc
#Crate summary
| Crate | Workspace dependencies | Desktop | CLI | Daemon |
|---|---|---|---|---|
jam |
jam-analytics, jam-analytics-local, jam-auth, jam-client, jam-contract, jam-core, jam-daemon, jam-discovery, jam-domain, jam-host, jam-managed-config, jam-manager, jam-service, jam-setup, jam-store, jam-tls, jam-transport-band, jam-version, jam-windows-ipc |
yes | yes | |
jam-analytics |
jam-domain, jam-tls |
yes | yes | yes |
jam-analytics-local |
jam-analytics, jam-secure-store |
yes | yes | yes |
jam-auth |
jam-domain, jam-tls |
yes | yes | yes |
jam-awake-clock |
yes | |||
jam-client |
jam-contract, jam-domain, jam-windows-ipc, jam-wire |
yes | yes | yes |
jam-contract |
jam-domain |
yes | yes | yes |
jam-core |
jam-contract, jam-domain, jam-transport |
yes | ||
jam-daemon |
jam-contract, jam-domain, jam-windows-ipc, jam-wire |
yes | ||
jam-desktop |
jam-analytics, jam-analytics-local, jam-auth, jam-client, jam-contract, jam-domain, jam-ipc, jam-macos-notifications, jam-managed-config, jam-service, jam-setup, jam-tls, jam-version, jam-windows-ipc |
yes | ||
jam-discovery |
jam-contract, jam-domain |
yes | yes | |
jam-domain |
yes | yes | yes | |
jam-host |
jam-contract, jam-core, jam-domain, jam-setup |
yes | yes | |
jam-ipc |
jam-contract, jam-domain |
yes | ||
jam-macos-notifications |
yes | |||
jam-managed-config |
yes | yes | yes | |
jam-manager |
jam-analytics, jam-auth, jam-awake-clock, jam-contract, jam-core, jam-domain, jam-host, jam-store, jam-transport, jam-update, jam-usage, jam-windows-ipc |
yes | ||
jam-secure-store |
yes | yes | yes | |
jam-service |
yes | yes | yes | |
jam-setup |
yes | yes | yes | |
jam-store |
jam-domain, jam-secure-store |
yes | yes | |
jam-test-support |
||||
jam-tls |
yes | yes | yes | |
jam-transport |
jam-domain |
yes | ||
jam-transport-band |
jam-domain, jam-tls, jam-transport |
yes | ||
jam-update |
jam-domain, jam-tls |
yes | ||
jam-usage |
jam-domain |
yes | ||
jam-version |
yes | yes | yes | |
jam-windows-ipc |
yes | yes | yes | |
jam-wire |
jam-contract, jam-domain |
yes | yes | yes |