Skip to content

Crate Classification Audit (2026-05-08)

Snapshot note: This is a point-in-time audit snapshot from 2026-05-08, used to inform the workspace reorg + crate-org-followup work. Crate classifications below reflect the pre-fix state — see 2026-05-08-workspace-reorg-outcome.md and 2026-05-08-crate-org-followup-design.md for what actually shipped.

This audit classifies every crate in crates/ against five labels:

  • CORE — compiled into the default vox-cli binary (no feature flags required)
  • PLUGIN — heavy deps or hardware-specific; ships as a dylib plugin
  • SHARED — used by both CORE crates and PLUGIN crates; must remain in the workspace
  • DEAD — zero consumers in Cargo.toml; candidate for deletion after verification
  • MISPLACED — compiled as CORE today but should be extracted to a plugin

Methodology: grep -r "<crate>" crates/ --include="Cargo.toml" to count consumers, combined with review of vox-cli/Cargo.toml direct/transitive deps. Feature-gated-only deps (optional = true) are noted.


CrateClassificationConsumersNotes / Action
workspace-hackSHAREDallcargo-hakari generated; keep
vox-bounded-fsCORE18async FS jailing used widely
vox-secretsCORE21auth/keys, used in CLI, orchestrator, populi
vox-cliCORE0 (it IS the binary)default binary
vox-cli-coreCORE1 (vox-cli)CLI utilities
vox-compilerCORE7Vox language compiler
vox-configCORE8config types
vox-containerCORE4sandboxed execution
vox-corpusCORE3dataset pipeline
vox-dbCORE4SQLite/Turso store
vox-evalCORE (optional)1behind dep:vox-eval in populi
vox-identityCORE4auth identity
vox-cryptoCORE3crypto primitives
vox-jsonschema-utilCORE3JSON schema
vox-mesh-typesSHARED2mesh type definitions used by core + plugin
vox-openai-sseSHARED2SSE wire used by oratio + orchestrator
vox-openai-wireSHARED2OpenAI wire types
vox-orchestratorCORE5task orchestrator
vox-orchestrator-typesSHARED4types shared between orchestrator + plugins
vox-plugin-apiSHARED14plugin ABI surface; MUST stay
vox-plugin-catalogCORE2SSOT plugin catalog
vox-plugin-hostCORE4plugin loader/discovery
vox-packageCORE2project management
vox-populiCORE3ML inference/training dispatch
vox-primitivesCORE4shared primitive types
vox-protocolCORE3A2A protocol
vox-reqwest-defaultsCORE6HTTP client defaults
vox-repositoryCORE2repo abstraction
vox-actor-runtimeCORE2runtime helpers
vox-scaling-policyCORE2scaling decisions
vox-ssgCORE (direct dep)1 (vox-cli)static site gen; see MISPLACED note
vox-checksum-manifestCORE1checksums
vox-install-policyCORE1install policy
vox-capability-registryCORE3capability registry
vox-constrained-genCORE3constrained generation
vox-project-scaffoldCORE1project scaffolding
vox-publisherCORE (partial)1publishing; social adapters behind features
vox-exec-grammarDEAD0no consumers in workspace
vox-grammar-exportDEAD0no consumers in workspace
vox-scholaDEAD0no consumers (merge_qlora uses inline types)
vox-scientia-coreDEAD0no consumers in workspace
vox-scientia-socialDEAD0no consumers in workspace
vox-scientia-ingestDEAD0no consumers; ingestion pipeline unused
vox-searchCOREmanyagent retrieval execution (execute_search_plan, MCP); see search-retrieval-ssot-2026.md
vox-socrates-policyDEAD0policy engine; no consumer
vox-spoolDEAD0spool subsystem; no consumer
vox-toolsDEAD0tools crate; re-exported via oratio (orphaned)
vox-webhookDEAD0webhook handlers; no consumer
vox-workflow-runtimeDEAD (optional)0 direct / 1 optionaloptional in vox-cli behind workflow-runtime feature
vox-mcp-metaDEAD0MCP meta; no consumers
vox-mcp-registryDEAD0MCP registry stub; orphaned
vox-doc-inventoryDEAD0doc inventory; no consumers
vox-integration-testsDEAD0test crate with no callers; uses vox-lsp
vox-test-harnessDEAD0test harness; no consumers
vox-lspCORE (optional)1 (orchestrator behind feature)behind toestub-gate feature
vox-openclaw-runtimeCORE (optional)2 (orchestrator + runtime, mandatory)OpenClaw / ARS runtime facade; used at runtime
vox-audio-ingressMISPLACED1 (self-referential via vox-oratio dep)brings in vox-oratio; should be PLUGIN
vox-browserDEAD0browser abstraction; no consumer; MISPLACED into vox-plugin-browser
vox-forgeCORE (optional)1 (vox-cli behind coderabbit feature)GitHub/GitLab integration
vox-gitCORE (optional)1 (vox-cli behind coderabbit feature)git integration
vox-gamifyCORE (optional)0 direct / 1 optionalgamification; optional in vox-cli
vox-code-auditCORE (optional)1 optionalcompletion guard; optional
vox-doc-pipelineCORE1doc pipeline runner
vox-dashboardCORE (optional)1 (vox-cli behind dashboard feature)VS Code extension dashboard
vox-skillsCORE (optional)1 (vox-cli behind ars feature)skill registry ARS shim
vox-oratioMISPLACED2 optionalCandle Whisper; should be fully in vox-plugin-oratio
vox-tensorSHARED4 (all optional or plugin)GPU tensor; needed by plugins; see note
vox-ml-cliCORE1 (vox-cli)vox mens subcommand
vox-populiCORE3populi inference; hosts burn/candle gated code
PLUGIN crates
vox-plugin-browserPLUGIN0 runtime consumersCDP browser plugin
vox-plugin-cloudPLUGIN0 runtime consumerscloud sync plugin
vox-plugin-mens-candle-cudaPLUGIN0 runtime consumersCandle CUDA ML backend
vox-plugin-noop-codePLUGIN0 runtimetest fixture
vox-plugin-noop-code-bad-abiPLUGIN0 runtimeABI rejection test fixture
vox-plugin-noop-skillPLUGIN0 runtimeskill discover test fixture
vox-plugin-nvml-probePLUGIN0 runtimeNVIDIA NVML hardware probe
vox-plugin-oratioPLUGIN0 runtimeWhisper STT plugin
vox-plugin-oratio-micPLUGIN0 runtimemicrophone capture plugin
vox-plugin-populi-meshPLUGIN0 runtimemesh transport + skill
vox-plugin-script-executionPLUGIN0 runtimescript execution plugin
vox-plugin-skill-*PLUGIN0 runtimeagent skills (skill-only plugins)
vox-plugin-tensor-burn-wgpuPLUGIN0 runtimeBurn + wgpu tensor backend plugin

The following crates have zero consumers in Cargo.toml files across the workspace. They are safe to remove after verifying they have no external users or build-script roles:

CrateReason
vox-exec-grammarNo Cargo.toml consumer found
vox-grammar-exportNo Cargo.toml consumer found
vox-scholaInline serde types in vox-ml-cli/merge_qlora.rs replaced it; plugin owns merge
vox-scientia-coreNo consumers; social/ingestion pipeline not wired
vox-scientia-socialNo consumers
vox-scientia-ingestNo consumers
vox-socrates-policyNo consumers
vox-spoolNo consumers
vox-webhookNo consumers
vox-toolsOrphaned; vox-oratio was extracted to a plugin
vox-mcp-metaMCP meta stub; no consumers
vox-mcp-registryOrphaned MCP registry
vox-doc-inventoryNo consumers
vox-integration-testsSelf-contained test binary but no CI wiring found
vox-test-harnessNo consumers
vox-browserBrowserAutomation extracted to vox-plugin-browser; this crate is the old host-side abstraction with zero consumers left

Action: Before deleting each, verify cargo check --workspace still compiles. Run cargo tree -p vox-cli | grep <crate> for each — if empty, proceed to delete.


MISPLACED crates — Extraction Candidates

Section titled “MISPLACED crates — Extraction Candidates”
CrateCurrent StateRecommended Action
vox-oratioUsed optionally in vox-ml-cli and vox-orchestrator; pulls in heavy Candle depsFinish extraction to vox-plugin-oratio; all remaining uses should go through the plugin dispatch boundary
vox-audio-ingressOnly consumer is itself (via vox-oratio dep); orphanedDelete or fold into vox-plugin-oratio-mic
vox-ssgIn vox-cli directly; SSG is a publishing concern, not core CLIConsider extracting SSG commands to a skill plugin; low urgency

These are used by both CORE and PLUGIN code paths and cannot be safely moved:

CrateReason
vox-plugin-apiThe stable ABI surface itself
vox-plugin-hostHost-side discovery + loader; called from vox-cli
vox-plugin-catalogSSOT used by vox-cli CI gates
vox-mesh-typesMesh types shared across core and populi-mesh plugin
vox-orchestrator-typesTask/budget types shared across orchestrator and plugin dispatch
vox-tensordata, grpo, replay, lora_config modules used by both plugins and core; GPU-gated modules only used in plugins

vox-tensor currently duplicates several types that also exist in vox-populi/src/mens/tensor/:

  • LoraConfig / lora_memory_estimate — both vox-tensor/src/lora_config.rs and vox-populi/src/mens/tensor/lora/ define them
  • GPU-gated modules (lora, optim, tensor, train, vox_nn) — these should move to vox-plugin-tensor-burn-wgpu; the remaining always-compiled modules (data, grpo, replay, lora_config) are the actual shared surface

Recommended: Keep vox-tensor as a SHARED crate but shrink its scope to only the non-GPU modules (data, grpo, replay, lora_config). The GPU modules belong in vox-plugin-tensor-burn-wgpu/src/.


Two plugin IDs appear in catalog.toml but have no corresponding crate in crates/:

Catalog IDStatus
execution-apiNo vox-plugin-execution-api crate; referenced only in catalog with bundled-in = []
stub-checkNo vox-plugin-stub-check crate; referenced only in catalog with bundled-in = []

These are pre-declared future plugins. They are harmless (not in any bundle), but their default-source points to non-existent GitHub repos. They should either be removed from the catalog or have placeholder crates created.


  1. Delete DEAD crates (P1, low risk): Start with vox-exec-grammar, vox-grammar-export, vox-schola. Run cargo check after each batch.
  2. Remove catalog ghost entries (P2, trivial): Delete execution-api and stub-check entries from catalog.toml or add placeholder crates.
  3. Finish oratio extraction (P2): Move remaining vox-oratio uses to vox-plugin-oratio dispatch.
  4. Shrink vox-tensor GPU surface (P3): Move lora, optim, tensor, train, vox_nn into vox-plugin-tensor-burn-wgpu. Keep non-GPU modules.
  5. Delete vox-browser (P3): Zero consumers; vox-plugin-browser is the canonical implementation.