{"_id":"@analyticswithharry/embrix","name":"@analyticswithharry/embrix","dist-tags":{"latest":"0.2.1"},"versions":{"0.2.1":{"name":"@analyticswithharry/embrix","version":"0.2.1","description":"Local-first AI toolkit for vector search, workflows, agents, RAG, and database querying","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"build":"tsc","dev":"tsc --watch","test":"jest","clean":"rm -rf dist","prepublishOnly":"npm run clean && npm run build"},"keywords":["vector-database","rag","agents","embeddings","sqlite","ai","workflow","local-first"],"author":{"name":"analyticswithharry"},"license":"MIT","dependencies":{"better-sqlite3":"^9.4.3","uuid":"^9.0.1"},"peerDependencies":{"openai":">=4.0.0","pg":">=8.0.0","mysql2":">=3.0.0","mongodb":">=6.0.0"},"peerDependenciesMeta":{"openai":{"optional":true},"pg":{"optional":true},"mysql2":{"optional":true},"mongodb":{"optional":true}},"devDependencies":{"@types/better-sqlite3":"^7.6.8","@types/jest":"^29.5.12","@types/node":"^20.14.2","@types/uuid":"^9.0.8","@types/pg":"^8.11.6","jest":"^29.7.0","ts-jest":"^29.1.5","typescript":"^5.4.5"},"jest":{"preset":"ts-jest","testEnvironment":"node","testMatch":["**/*.test.ts"]},"engines":{"node":">=18.0.0"},"repository":{"type":"git","url":"git+https://github.com/analyticswithharry/embrix-node.git"},"_id":"@analyticswithharry/embrix@0.2.1","bugs":{"url":"https://github.com/analyticswithharry/embrix-node/issues"},"homepage":"https://github.com/analyticswithharry/embrix-node#readme","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-EVXNH6OAeIzkO15KsW9oskQj6f+oNt3gX6EGieQXKiXd9I4sE5pWOvR0jJ5OXy9e48e/VxUwLcxeM6JpDjtH0w==","shasum":"16fadaa3b710ba6fe36e618703a35c1bcec7ea27","tarball":"https://registry.npmjs.org/@analyticswithharry/embrix/-/embrix-0.2.1.tgz","fileCount":151,"unpackedSize":355717,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCjvJR4Ch++hkI1wHmriITJGBxlVQo/GSRZFWlRT1J1sAIhAISvNfRFXW6AOzhXJYRS7TExCQD+izKfgR7QQWe+mKne"}]},"_npmUser":{"name":"analyticswithharry","email":"hemantthapa1998@gmail.com"},"directories":{},"maintainers":[{"name":"analyticswithharry","email":"hemantthapa1998@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/embrix_0.2.1_1778814781925_0.6732472316102811"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-15T03:13:01.818Z","0.2.1":"2026-05-15T03:13:02.068Z","modified":"2026-05-15T03:13:02.279Z"},"maintainers":[{"name":"analyticswithharry","email":"hemantthapa1998@gmail.com"}],"description":"Local-first AI toolkit for vector search, workflows, agents, RAG, and database querying","homepage":"https://github.com/analyticswithharry/embrix-node#readme","keywords":["vector-database","rag","agents","embeddings","sqlite","ai","workflow","local-first"],"repository":{"type":"git","url":"git+https://github.com/analyticswithharry/embrix-node.git"},"author":{"name":"analyticswithharry"},"bugs":{"url":"https://github.com/analyticswithharry/embrix-node/issues"},"license":"MIT","readme":"# Embrix for Node.js and TypeScript\n\nEmbrix is a local-first AI application toolkit for JavaScript runtimes.\n\nIt gives Node.js and TypeScript projects a clean set of primitives for:\n\n- vector storage and semantic search\n- multi-step stateful workflows\n- tool-using agents\n- retrieval-augmented generation\n- database vectorization and search\n- bring-your-own model providers\n\n## Installation\n\nPlanned scoped package:\n\n```bash\nnpm install @analyticswithharry/embrix\n```\n\nInstall the drivers or provider SDKs you actually use:\n\n```bash\nnpm install better-sqlite3\nnpm install openai\nnpm install pg\nnpm install mysql2\nnpm install mongodb\n```\n\n## What the Node package includes\n\n| Component                        | Purpose                                                      |\n| -------------------------------- | ------------------------------------------------------------ |\n| `VectorStore`                    | Local vector persistence and similarity search               |\n| `StateGraph`                     | State-based workflow execution                               |\n| `Agent`                          | Tool-using agents with iterative reasoning                   |\n| `RAGPipeline`                    | Retrieval plus grounded response generation                  |\n| `DBVectorizer` + `DBQueryEngine` | Database row vectorization, semantic search, and text-to-SQL |\n\n## Quick start\n\n### Vector storage\n\n```ts\nimport { VectorStore } from \"@analyticswithharry/embrix\";\n\nconst store = new VectorStore({ dbPath: \"embrix.db\", dimension: 3 });\n\nstore.upsert(\"docs\", [\n  {\n    id: \"intro\",\n    values: [0.1, 0.2, 0.3],\n    text: \"Embrix helps you build local-first AI features.\",\n    metadata: { topic: \"overview\" },\n  },\n]);\n\nconst results = store.query(\"docs\", [0.1, 0.2, 0.3], 1);\nconsole.log(results);\n```\n\n### Stateful workflow\n\n```ts\nimport { END, START, StateGraph } from \"@analyticswithharry/embrix\";\n\ntype WorkflowState = { question: string; context?: string; answer?: string };\n\nconst graph = new StateGraph<WorkflowState>();\ngraph.addNode(\"retrieve\", (state) => ({\n  ...state,\n  context: `facts for ${state.question}`,\n}));\ngraph.addNode(\"respond\", (state) => ({\n  ...state,\n  answer: `Answer from ${state.context}`,\n}));\ngraph.addEdge(START, \"retrieve\");\ngraph.addEdge(\"retrieve\", \"respond\");\ngraph.addEdge(\"respond\", END);\n\nconst result = await graph.compile().invoke({ question: \"What is retrieval?\" });\nconsole.log(result.answer);\n```\n\n### Agent with your own provider\n\n```ts\nimport {\n  Agent,\n  OpenAICompatibleChatModel,\n  Tool,\n} from \"@analyticswithharry/embrix\";\n\nconst calculator = new Tool(\n  \"calculator\",\n  \"Evaluate arithmetic expressions\",\n  async (input) => {\n    return String(Function(`return (${input})`)());\n  },\n);\n\nconst agent = new Agent({\n  tools: [calculator],\n  llm: new OpenAICompatibleChatModel({\n    model: \"gpt-4o-mini\",\n    apiKey: process.env.OPENAI_API_KEY,\n  }),\n});\n\nconsole.log(\n  await agent.run(\"Use the calculator tool to compute (12 * 9) + 4.\"),\n);\n```\n\n### RAG pipeline\n\n```ts\nimport {\n  OpenAIEmbedder,\n  RAGPipeline,\n  VectorStore,\n  createChatModel,\n} from \"@analyticswithharry/embrix\";\n\nconst store = new VectorStore({ dbPath: \"rag.db\", dimension: 1536 });\nconst embedder = new OpenAIEmbedder({ apiKey: process.env.OPENAI_API_KEY! });\nconst llm = createChatModel(\"ollama\", { model: \"llama3.1\" });\n\nconst rag = new RAGPipeline(embedder, llm, store);\nawait rag.ingest(\n  [\"Embrix supports search, workflows, agents, and database tooling.\"],\n  \"docs\",\n);\n\nconsole.log(await rag.query(\"What does Embrix support?\", \"docs\"));\n```\n\n### Database search and querying\n\n```ts\nimport {\n  DBQueryEngine,\n  DBVectorizer,\n  OpenAIEmbedder,\n  VectorStore,\n  dbConnect,\n  createChatModel,\n} from \"@analyticswithharry/embrix\";\n\nconst connector = dbConnect(\"sqlite\", { dbPath: \"products.db\" });\nconst embedder = new OpenAIEmbedder({ apiKey: process.env.OPENAI_API_KEY! });\nconst store = new VectorStore({\n  dbPath: \"products-vectors.db\",\n  dimension: 1536,\n});\n\nconst vectorizer = new DBVectorizer(connector, embedder, { store });\nawait vectorizer.vectorizeTable(\"products\", \"products\", {\n  textColumns: [\"name\", \"description\"],\n});\n\nconst engine = new DBQueryEngine(vectorizer, undefined, {\n  connector,\n  llm: createChatModel(\"openai-compatible\", {\n    model: \"gpt-4o-mini\",\n    apiKey: process.env.OPENAI_API_KEY,\n  }),\n});\n\nconsole.log(await engine.search(\"budget running shoes\", \"products\"));\nconsole.log(\n  await engine.sqlQuery(\"Show products under 100 dollars\", \"products\"),\n);\n```\n\n## Provider model\n\nEmbrix does not run its own hosted model platform.\n\nInstead, you connect the package to your own provider, gateway, or local runtime.\n\nBuilt-in options include:\n\n- `OpenAICompatibleChatModel`\n- `AnthropicChatModel`\n- `GeminiChatModel`\n- `OllamaChatModel`\n- `CustomChatModel`\n\nThis makes the Node package flexible for production services, local tools, internal gateways, and offline-friendly experiments.\n\n## Typical use cases\n\n- internal knowledge tools\n- API backends with retrieval and workflow steps\n- local prototypes and desktop utilities\n- semantic search over app data\n- plain-language database exploration\n- agent-driven automation with custom tools\n\n## Development\n\n```bash\ncd embrix-node\nnpm install\nnpm run build\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-7ea8737a7b453d5efcd438ced0aa9eaf"}