FishMem

Own the memory engine and its data path.

FishMem’s TypeScript engine, SDK contract, control-plane, dashboard, and adapters are available under Apache-2.0. Embed the library or operate the verified Node + libSQL application yourself.

  1. 01EmbedUse the fishmem package inside one Node service.
  2. 02Self-hostRun the REST API, dashboard, libSQL, assets, and durable worker.
  3. 03ExtendImplement storage and provider interfaces at explicit seams.
  • 01Apache-2.0 core
  • 02Node 20+
  • 03SQLite + Postgres adapters
  • 04Cloudflare adapters

Open source is a deployable product boundary: memory authority remains portable and hosted-only operations stay visibly outside it.

One deep module for memory behavior.

The engine owns canonical writes, retrieval, temporal state, namespaces, documents, snapshots, and projections. Storage and model providers implement interfaces instead of forking memory semantics.

  • In-memory, SQLite/libSQL, Postgres, D1, pgvector, Vectorize, and Qdrant adapters are explicit.
  • No hosted account or FishMem API key is required to embed the engine.
  • Integration tests cover adapter contracts independently of the dashboard.

Operate the API and dashboard yourself.

The released Docker path uses Node, persistent libSQL, a durable asset directory, a pinned extraction container, and a task poller. Secrets fail closed at Compose configuration.

  • Projects, API keys, memories, Sources, webhooks, and operations use the same public contract.
  • The database and asset directory must be backed up as one retention unit.
  • The Postgres engine adapter is released; Postgres control-plane tables are not yet released.

Know what Cloud adds before choosing it.

FishMem Cloud imports a pinned open-core revision and adds organizations, billing, metering, managed resources, and hosted operations. Those modules do not leak back into the Apache-2.0 repository.

  • Portable namespace snapshots prevent data authority from becoming a hosted-only feature.
  • Cloud and self-host share the public memory contract, not every operational feature.
  • A pinned revision makes hosted builds reproducible instead of following main implicitly.

Start with one concrete request.

import { Memory } from "fishmem";

const memory = await Memory.create({
  embedder,
  vectorStore,
  graphStore,
  llm
});

const workspace = memory.forNamespace("product-alpha");
await workspace.add("Release gates require rollback evidence.", {
  infer: false,
  idempotencyKey: "release-gate-v1"
});

What this surface includes

  • Engine, storage adapters, TypeScript SDK, HTTP application, dashboard, docs, tests, and benchmark harnesses.
  • A verified Node + libSQL self-host path and a configurable Cloudflare path.
  • Portable snapshots and source code for the canonical memory writer.

Explicit boundary

  • Managed billing, hosted organizations, and operated infrastructure are Cloud features; service-level commitments exist only when separately contracted.
  • The self-hosted control-plane does not yet release Postgres as its application database.
  • Provider usage, backups, upgrades, monitoring, and incident response remain the operator’s responsibility.