Crate Structure
Dependencies Between Crates
Each crate is independent except for these relationships:| Crate | Depends On | Reason |
|---|---|---|
laminae-psyche | laminae-ollama | Id/Superego LLM calls |
laminae-persona | laminae-ollama | Voice extraction LLM calls |
laminae-cortex | laminae-ollama | LLM-powered edit analysis |
laminae-shadow | laminae-ollama | LLM adversarial review |
laminae-ironclad | laminae-glassbox | Event logging |
laminae-anthropic | laminae-psyche | Implements EgoBackend |
laminae-openai | laminae-psyche | Implements EgoBackend |
WASM Compatibility
Crates are split into browser-safe and native-only:Browser-safe (WASM)
laminae-glassbox — regex + string matchinglaminae-persona — voice filter (no extractor)laminae-cortex — edit tracking + pattern detectionNative-only
laminae-psyche — needs async runtimelaminae-shadow — needs process executionlaminae-ironclad — needs OS-level process controllaminae-ollama, laminae-anthropic, laminae-openai — HTTP clientscfg gates. If you target WASM and try to import Shadow, it won’t compile.
Extension Points
| Trait | What You Implement | First-Party Implementations |
|---|---|---|
EgoBackend | Plug in any LLM | ClaudeBackend, OpenAIBackend |
Analyzer | Custom Shadow analysis stages | StaticAnalyzer, SecretsAnalyzer, DependencyAnalyzer, LlmReviewer |
GlassboxLogger | Route events to your logging | TracingLogger |
SandboxProvider | Custom process sandboxing | SeatbeltProvider, LinuxSandboxProvider, WindowsSandboxProvider, NoopProvider |

