Skip to content

Fortemi/fortemi-react

Repository files navigation

fortemi-react

Local-first knowledge management for the browser — real PostgreSQL, private by default, no cloud required.

Build notebooks, research tools, and AI-powered knowledge apps where the data lives on the user's device, search runs locally, and any cloud or AI provider is opt-in and yours to choose. Full PostgreSQL in the browser (PGlite + pgvector), typed React 19 hooks, and portable Knowledge Shard archives — no backend, no account, no lock-in.

pnpm add @fortemi/core @fortemi/react
pnpm dev

core npm version react npm version License: AGPL-3.0-only Node Version React TypeScript Built with aiwg

Why · Get Started · Packages · Features · AI Capabilities · Documentation · License


Why fortemi-react

Most knowledge tools make you choose: capable but cloud-bound, or private but primitive. fortemi-react refuses the trade-off — it runs a full PostgreSQL engine inside the browser, so data never has to leave the device to be searchable, structured, and AI-ready.

  • Private by default. Notes live in the browser on the user's device — no server, no sync service, no cloud backup, no account. The only thing that ever leaves the device is a cloud AI call you explicitly opt into.
  • Capable, not toy-grade. Real PostgreSQL with tsvector full-text, pgvector HNSW semantic search, and BM25 reciprocal-rank fusion — production-grade retrieval that stays fast as an archive grows, entirely client-side.
  • AI on your terms. Embeddings and LLMs are opt-in and bring-your-own: run locally (WebGPU, Ollama, LM Studio, llama.cpp, vLLM, Jan) or route to a provider you control. Nothing is wired to a vendor you can't swap out.
  • Yours to keep. Knowledge Shard archives (tar.gz, with checksums and JSON format parity) export the whole graph on demand, and the AGPL-3.0 license keeps the stack open. No lock-in by design.

Use it when you need local-first note storage, semantic retrieval, agent-readable tool functions, or portable archives inside a web application — whether that's a personal notebook, a research workspace, or a product that must keep user data on the user's device.

Quick Start

Install the published packages:

pnpm add @fortemi/core @fortemi/react
# or
npm install @fortemi/core @fortemi/react

Run the standalone app from this repository:

pnpm install
pnpm dev          # http://localhost:5173

Minimal React setup:

import { FortemiProvider, useCreateNote, useSearch } from '@fortemi/react'

export function App() {
  return (
    <FortemiProvider persistence="opfs" archiveName="default">
      <Notebook />
    </FortemiProvider>
  )
}

function Notebook() {
  const { createNote } = useCreateNote()
  const { data, search } = useSearch()

  return (
    <main>
      <button onClick={() => void createNote({ title: 'Hello', content: 'First note.' })}>
        Add note
      </button>
      <input onChange={(event) => void search(event.target.value)} />
      <ul>
        {data?.items.map((item) => <li key={item.id}>{item.title}</li>)}
      </ul>
    </main>
  )
}

Packages

Package Published Purpose
@fortemi/core npm Headless data layer: PGlite repositories, migrations, workers, tool helpers, event bus, capability system
@fortemi/graph npm Framework-agnostic graph add-on: pure layout, filtering, coloring, degree sizing, bounds/fit, neighborhood, and snapshot helpers, plus a GraphController for graph-source selection. No React. Depends on @fortemi/core; consumed by @fortemi/react and JS-only hosts
@fortemi/react npm React 19 provider and hooks for notes, search, tags, collections, jobs, capabilities, shards, embedding sets, similarity graphs, and communities
@fortemi/standalone workspace app Vite application for local development and static deployment

All packages are versioned together — the npm badges above always show the current release.

What You Get

  • Full note CRUD with revision history, soft delete, starring, pinning, and archiving
  • PGlite-backed local storage with opfs, idb, and memory persistence modes
  • Full-text search with PostgreSQL tsvector / tsquery, phrase search, filters, facets, and snippets
  • Hybrid semantic search with pgvector HNSW and BM25 reciprocal-rank fusion
  • Virtual embedding-set selectors, cached similarity graphs, and graph/community artifact persistence
  • Dynamic and user-authored communities with React graph-controller hooks for source switching
  • Tags, collections, inter-note links, SKOS schemes, concepts, and relations
  • Knowledge Shard tar.gz import/export with checksums and JSON format parity
  • 10 manifest-backed Fortemi tools plus 11 exported direct tool helper functions
  • Optional embeddings, LLM, local-provider discovery, WebGPU detection, and fallback routing
  • React 19 hooks for common UI workflows and direct context access for lower-level integration

Runtime Support

Runtime Storage AI capability notes
Chrome 113+ / Edge 113+ OPFS recommended WebGPU available when enabled; Linux Chrome may require flags
Firefox 111+ IndexedDB fallback WASM embeddings work; WebGPU production support is limited
Safari 17+ Memory or IndexedDB depending context Use memory for previews and tests when persistence is restricted

No backend is required. Deploy apps/standalone/dist/ to any static host.

AI Capabilities

fortemi-react supports opt-in capabilities through the runtime capability manager:

Capability Runtime Enables
Semantic embeddings transformers.js WASM Hybrid search, related notes, link discovery
Local LLM WebLLM / compatible provider AI revision, concept tagging, title generation
GPU detection WebGPU adapter probing Hardware tier and model-fit guidance
Local provider discovery Ollama, LM Studio, llama.cpp, vLLM, Jan Remote/local provider fallback routing

On Linux Chrome, local WebGPU inference commonly needs:

google-chrome --enable-features=Vulkan --enable-unsafe-webgpu http://localhost:5173

Tool Integration

@fortemi/core exports fortemiManifest for bridge registration and direct helper functions for application code. The manifest currently includes:

capture_knowledge, manage_note, search, get_note, list_notes, manage_tags, manage_collections, manage_links, manage_archive, manage_capabilities.

Direct helper exports also include manageAttachments for attachment metadata and blob operations.

Development

pnpm install
pnpm typecheck
pnpm lint
pnpm test:core
pnpm test:e2e
pnpm build

The repository uses Node.js 22, pnpm 10, TypeScript, Vitest, Playwright, and Vite.

Documentation

Guide Description
Getting Started Installation, provider setup, first note, search
Package Architecture Diagram and capability tables for each npm package and how they layer
Search Text, semantic, and hybrid search modes, filters, RRF fusion, snippets
Integration Guide Embedding in React apps, tool helpers, events, jobs, capabilities
API Reference Full API surface for @fortemi/core, @fortemi/graph, and @fortemi/react
Deployment Static hosting, Vite config, browser compatibility, WebGPU, CI/CD
Extending Custom tools, job handlers, capabilities, migrations, hooks
Supply Chain Release signing, workflow pinning, and publishing controls

License

AGPL-3.0-only. See LICENSE.

About

React port of fortemi knowledge management — PGlite, semantic search, MCP tools, SKOS tagging. AGPL-3.0

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages