MCP
lash-plugin-mcp wraps the official rmcp SDK and registers an McpPluginFactory with the lash plugin system. The factory owns a shared per-LashCore connection pool, so stdio servers spawn once and every session built from the same core reuses the same client. McpServerConfig supports three transports: stdio (child process), streamable_http, and sse. Tools are surfaced under mcp__<server>__<tool> names, preserving input and output schemas.
Tavily
Web search and URL extraction register only when LashConfig.auxiliary_secrets.tavily_api_key is present.
models.dev
CachedModelCatalog reads a file cache, can fetch https://models.dev/api.json, and has a bundled snapshot fallback.
Tracing
lash-trace defines schema version 2 JSONL records. Standard records cover turns, LLM starts/completions, tools, and summaries; extended records preserve provider/stream details. The optional otel cargo feature pulls in opentelemetry 0.31 and maps those events to spans. lash-trace-viewer is a standalone binary crate that consumes lash-trace JSONL directly, independent of lash-export.
File index
lash-file-index combines ignore walking, notify watching, and nucleo matching for async @ completion.
Store
lash-core/src/store.rs defines the runtime persistence contract. lash-sqlite-store is the local implementation for session heads, graph nodes, checkpoint blobs, usage deltas, tombstones, and garbage-collection metadata.
Export
lash-export renders the SQLite session plus provider trace JSONL when present, so transcript views can include prompt snapshots, context percentage, cached-token percentage, and exact token counts.