Adds README.md to each of the 13 SPM packages (AgentCore, Bus, Config, DevOverlay, Harness, Keychain, Logging, MCP, Memory, Replay, Shell, Vision, Voice). Each covers purpose, key public types, deps, consumers, invariants (pulled from CLAUDE.md + grep-gates + audit findings), test stack, and notable files. Memory README explicitly marks the package functionally OFF until vec0.dylib + Ollama models land. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Config
Two-tier config snapshot model + JSON persistence. Trivial prefs go to UserDefaults; secrets go to Keychain; everything else lives here.
Key public types
| Type | Purpose |
|---|---|
LaunchSnapshot |
Read once at startup — provider selection, feature flags, logging level |
PerTurnSnapshot |
Read at every turn start — TTS, STT, AppleScript policy, confirmation policy, Ollama config |
ConfigStore |
The owning store (atomic snapshot reads + writes) |
ConfigLoader |
JSON read/write at ~/Library/Application Support/Jarvis/ |
SchemaMigrator |
Backward-compat migration on schema bump |
ProviderSelection |
.anthropic / .ollama toggle |
FeatureFlags |
Risky/in-development feature gates (no rebuild needed to flip) |
TTSConfig / STTConfig / OllamaConfig |
Per-subsystem tunables |
AppleScriptPolicy |
Per-target allowlist + confirmation requirements |
ConfirmationPolicy |
Per-tool confirmation rules |
Depends on
Keychain, Logging. External: swift-log.
Used by
App/AppDelegate, packages/AgentCore (orchestrator reads PerTurnSnapshot), packages/Voice, packages/Memory, packages/Replay.
Key invariants / contracts
LaunchSnapshotis immutable per-process. Writes go throughConfigStore.updateand require a relaunch to apply (currently — could become live-reload later).PerTurnSnapshotis read at the start of every turn. Live-reload contract for everything except provider selection.- Secrets are NEVER written to JSON config. API keys go to
Keychainonly. - Schema version on disk.
SchemaMigratorruns forward-only; downgrade is undefined.
Tests
XCTest coverage for snapshot read/write round-trips, schema migration, default-value generation. No env-flag gates.
Notable files
Sources/Config/ConfigStore.swift— the owning storeSources/Config/LaunchSnapshot.swift— startup-only configSources/Config/PerTurnSnapshot.swift— per-turn configSources/Config/SchemaMigrator.swift— migration pathSources/Config/ConfirmationPolicy.swift— tool-confirmation rules