Hook
When building local-first architectures, the instinct is often to tightly couple everything. If a system needs a new shell execution tool or a data filter, the default move is to drop it in as an in-memory plugin. It feels like the cleanest path: it runs in the same process, shares the same lifecycle, and requires zero initial configuration.
But that tight coupling is exactly where local systems fracture.
As the environment grows, the plugin model starts exposing its limits. You lose process ancestry when a local daemon restarts. You hit cold caches on reconnections. You lose your audit trail because plugins can't log independently from the host process, burying critical observability.
What starts as a simple 20-line feature turns into an architectural bottleneck.






