Embed GNO Directly
Import GNO into another Bun or TypeScript app. Open a store with inline config, run retrieval directly, and trigger update/index flows without CLI subprocesses or a local server.
Key Benefits
- Package-root import surface
- Inline config support
- Direct search/query/ask/get APIs
- Programmatic update/embed/index flows
- Explicit lifecycle via close()
Example Commands
bun add @gmickel/gno
import { createGnoClient } from '@gmickel/gno'
Get Started
Ready to try SDK?
Why This Matters
Some integrations do not want a CLI subprocess or a localhost server at all. They want a typed client they can call directly inside the same process.
The GNO SDK provides that path.
Quick Example
import { createDefaultConfig, createGnoClient } from "@gmickel/gno";
const config = createDefaultConfig();
config.collections = [
{
name: "notes",
path: "/Users/me/notes",
pattern: "**/*",
include: [],
exclude: [],
},
];
const client = await createGnoClient({
config,
dbPath: "/tmp/gno-sdk.sqlite",
});
await client.index({ noEmbed: true });
const results = await client.query("JWT token", {
noExpand: true,
noRerank: true,
});
console.log(results.results[0]?.uri);
await client.close();
Core Surface
The current stable SDK surface includes:
createGnoClientsearch,vsearch,query,askget,multiGet,list,statusupdate,embed,indexclose
Inline Config Or Existing Config
You can either:
- pass an inline config object and your own DB path
- or point at an existing
gnoconfig file and reuse the normal install layout
That makes the SDK work for both embedded apps and existing-user automation.
No Forced YAML
Inline config is first-class. You do not need to write config files just to use GNO as a library.