Skip to content

Fisher

Open source · Critter Stack

Fisher

Embedded event store and document database on SQLite

The full Critter Stack experience in a database that lives inside your own process.

Fisher is the Critter Stack on SQLite: an event store and document database with no server to install, provision, or secure. It is the right fit for desktop and edge applications, small services, developer machines, and test suites that want the real programming model without a container.

It shares its API with Marten and Polecat, and leans into SQLite's strengths: a database file per tenant is a performance feature rather than an operational burden, and the whole store ships with your application.

What Fisher Gives You

No server to provision

A file on disk, created on first use. Nothing to install, nothing to secure, nothing to back up separately.

Same programming model

Streams, projections, documents, and the Wolverine integration work as they do on PostgreSQL and SQL Server.

Database per tenant

Each tenant in its own file sidesteps SQLite's single-writer limit and makes tenant lifecycle trivial.

Projections

A single-node async daemon, or projections run as Wolverine agents so CritterWatch can pause, restart, and rebuild them.

Resilient by default

A built-in resilience pipeline handles SQLite's one-writer-per-file constraint for you.

Ideal for tests

Spin up a real store per test without Docker, then move the same code to Marten or Polecat in production.

Start Here

New to Fisher? These 4 posts are the ones to read first, in order.

  1. 1Fisher: A Document Database for Anywhere SQLite is a Good ChoiceFisher gets talked about as the Critter Stack's event store on SQLite, but it's also a full document database that lives in a file inside your own process. If SQLite is the right storage for your application, Fisher is a much lower ceremony way to use it than EF Core: no mapping, no migration files, schema changes that just work through Weasel, and a first class Wolverine integration.
  2. 2Meet Fisher, and One Handler Across Three Databases: The Critter Stack Since August 2ndSixty-three releases in sixteen days across Marten, Wolverine, Polecat, Fisher, Weasel, and the shared JasperFx libraries. Fisher brings event sourcing and document storage to SQLite with no server at all, the shared contracts wave means the same Wolverine handler now runs on PostgreSQL, SQL Server, or SQLite without naming a store, and a projection loader bug that silently skipped events makes this an upgrade you should not sit on.
  3. 3Full-Text, Vector, and Hybrid Search in Polecat, Fisher, and MartenPolecat, Fisher, and Marten now share one search surface: full-text search, vector similarity search with filters, hybrid search fused by reciprocal rank fusion, and event-sourced vector projections, on SQL Server 2025, SQLite, and PostgreSQL. Here's what each store gives you, how it works, and where they differ.
  4. 4Change Documents Without Loading Them: The Patching API in Marten, Polecat, and FisherThe Critter Stack's Patching API lets you modify persisted JSON documents in place -- no deserialize, mutate, re-serialize round trip. Here's the shared API across Marten, Polecat, and Fisher, what each database does underneath, and where the three genuinely differ.

Latest on Fisher

15 posts from the JasperFx blog cover Fisher. Here are the most recent.

CritterWatch 1.2: See Inside Your Event Store, Documents, Sagas and SchedulesCritterWatch 1.2: See Inside Your Event Store, Documents, Sagas and SchedulesCritterWatch 1.2 turns the console into a real explorer for what your Critter Stack services hold: an overview of every event store, a Step Through tab for projections, a Document Store Explorer that checks your documents still deserialize, saga instances with their state and pending timeouts, a Schedule Explorer that tells you what a schedule is actually doing, and an Event Model you can drill into.Critter Stack in Review: October 12th to 30thCritter Stack in Review: October 12th to 30thThree weeks, 72 tagged releases, and 57 pull requests from 18 people outside JasperFx. The big themes were not losing messages, with a durable inbox and outbox hardening pass that closed a dozen community-reported ways a message could go missing; performance, from SQL Server index seeks to a thread pool thread the run command was quietly eating; shutting down cleanly; an async daemon that heals itself; and multi-tenancy at a scale we'd never tested before. Plus Marten's hard stream delete, Aspire parity in Wolverine, NServiceBus XML interop, and the upgrade notes you should read first.Failure Groups: Handle a Dead Letter Incident as One ThingFailure Groups: Handle a Dead Letter Incident as One ThingCritterWatch 1.1 groups dead letters by the failure that caused them, across every service and database, and lets you replay, archive, restore or discard the whole group as one tracked operation with a reason attached. Your AI agent gets the same loop over MCP, and still has to show you the preview before it deletes anything.CritterWatch 1.1, Bobcat 1.0, AI Skills 1.17, and a First Look at StoatCritterWatch 1.1, Bobcat 1.0, AI Skills 1.17, and a First Look at StoatOne release wave, four products: CritterWatch 1.1 with 83 MCP tools, cron schedules, a Document Explorer and a long list of scalability fixes earned on real systems; Bobcat 1.0, the successor to Storyteller and our answer for spec-driven development; AI Skills 1.17; and the first public preview of Stoat.Critter Stack AI Skills 1.17: One Month of Releases, Checked Against the SourceCritter Stack AI Skills 1.17: One Month of Releases, Checked Against the SourceAI Skills 1.17 is the result of a review of everything Wolverine, Marten, CritterWatch, Bobcat and Stoat shipped in the last month, checked against the product source rather than the changelogs. Thirty-six skill changes, seven of them correcting advice that had quietly gone wrong, and the CritterWatch 1.1 paired updates that were waiting in 1.16.Dead Letter Management in CritterWatch 1.1Dead Letter Management in CritterWatch 1.1Bulk replay that acts on exactly what it counted, edit-and-replay with a full audit trail, every operation followed to the end across every database, and an MCP server that lets an AI agent triage your dead letters, but asks before it deletes anything.

Get help with Fisher

JasperFx builds and maintains Fisher. A support plan gives your team direct access to us; consulting and workshops get a project moving.

The Rest of the Stack