FabricFabricHarness
EcosystemDatabases

SQLite

Use fixed, parameterized SQLite operations as governed agent tools.

Scaffold better-sqlite3 with the first-party adapter:

fh add database sqlite
import { sqliteTool } from '@fabric-harness/databases/sqlite';

const lookup = sqliteTool({
  client: database,
  name: 'lookup_account',
  description: 'Read one tenant-scoped account.',
  statement: 'select id, status from accounts where tenant_id = ? and id = ? limit 1',
  parameters: ({ tenantId, accountId }) => [tenantId, accountId],
});

The statement is fixed in application code. Read tools reject mutations and multiple statements; row, byte, and time limits protect model context. Mark controlled writes with effect: 'write' and attach approval policy as required.

This is model-facing data access. For durable Harness sessions, configure the Node store.backend: 'sqlite' session store separately.