{"_id":"@abagraph/tui","_rev":"2-669a5305768ef84ec592624f6fd41372","name":"@abagraph/tui","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@abagraph/tui","version":"0.1.0","keywords":["abagraph","tui","cli","memory","knowledge-graph","bitemporal","vector","agent","opentui"],"license":"Apache-2.0","_id":"@abagraph/tui@0.1.0","maintainers":[{"name":"ashby1","email":"ash@abagraph.com"}],"homepage":"https://abagraph.dev","bugs":{"url":"https://github.com/abagraph/abagraph/issues"},"bin":{"aba":"bin/aba.ts"},"dist":{"shasum":"ec2ca9a45cd24f5d13c64295c131e2e3a5396fbd","tarball":"https://registry.npmjs.org/@abagraph/tui/-/tui-0.1.0.tgz","fileCount":63,"integrity":"sha512-CBLkcMo28F44F6jRc+acI5nwKfZAXAYB7zjIx7TMHaAAq1Gh6vg6QQd/C5oIwKm1vYRdn3Q7AoV6ohvNn9WuLw==","signatures":[{"sig":"MEUCIQDNTjyMMUYtlflHaAKQ1i9iNv7bcfgM7uTcr+jOVy3yRQIgMLg7fjeaC8zaOI69uz7TXz3+wI6f+vJf7Xm6A2FJZ8s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":646890},"type":"module","engines":{"bun":">=1.1"},"scripts":{"test":"bun test","check":"bunx tsc --noEmit && bun test","start":"bun bin/aba.ts","typecheck":"bunx tsc --noEmit"},"_npmUser":{"name":"ashby1","email":"ash@abagraph.com"},"repository":{"url":"git+https://github.com/abagraph/abagraph.git","type":"git","directory":"abagraph-tui"},"_npmVersion":"10.9.8","description":"aba — an interactive terminal UI for abagraph, the bitemporal graph + vector memory database. Claude Code, but for your memory data: connect, ask, digest, and pull context with control.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"react":"^19.2","@opentui/core":"^0.4","@opentui/react":"^0.4"},"_hasShrinkwrap":false,"devDependencies":{"@types/bun":"^1.3.14","typescript":"^5.6","@types/react":"^19.2"},"_npmOperationalInternal":{"tmp":"tmp/tui_0.1.0_1782729670364_0.9624894087820155","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@abagraph/tui","version":"0.1.1","description":"aba — an interactive terminal UI for abagraph, the bitemporal graph + vector memory database. Claude Code, but for your memory data: connect, ask, digest, and pull context with control.","license":"Apache-2.0","type":"module","homepage":"https://abagraph.com","repository":{"type":"git","url":"git+https://github.com/abagraph/abagraph.git","directory":"abagraph-tui"},"bugs":{"url":"https://github.com/abagraph/abagraph/issues"},"bin":{"aba":"bin/aba.ts"},"scripts":{"start":"bun bin/aba.ts","test":"bun test","typecheck":"bunx tsc --noEmit","check":"bunx tsc --noEmit && bun test"},"engines":{"bun":">=1.1"},"keywords":["abagraph","tui","cli","memory","knowledge-graph","bitemporal","vector","agent","opentui"],"dependencies":{"@opentui/core":"^0.4","@opentui/react":"^0.4","react":"^19.2"},"devDependencies":{"@types/bun":"^1.3.14","@types/react":"^19.2","typescript":"^5.6"},"_id":"@abagraph/tui@0.1.1","gitHead":"5b11f72d739c94097e34a7a43b8a62b49b489539","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-iZQmyUd2kAfDK60WvCTOqtjMfC92yxvWOvlOuZYjo874nBbbYrmura42vsqRmUjMaJIY68N9ERkMux6H5l1z7g==","shasum":"0206026d586da71175894a4950e282fe8519e9e5","tarball":"https://registry.npmjs.org/@abagraph/tui/-/tui-0.1.1.tgz","fileCount":63,"unpackedSize":647878,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDQwzrwz7+C0lxhXjYcl5zu9mlHVHEOu57rzbtK2QbykgIgY3SR/mGOQpa/8CA6m8E4WG1VTRDoTFfQihwUkdYyMh4="}]},"_npmUser":{"name":"ashby1","email":"ash@abagraph.com"},"directories":{},"maintainers":[{"name":"ashby1","email":"ash@abagraph.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tui_0.1.1_1782735230561_0.9638072479984745"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-29T10:41:10.154Z","modified":"2026-06-29T12:13:50.868Z","0.1.0":"2026-06-29T10:41:10.514Z","0.1.1":"2026-06-29T12:13:50.722Z"},"bugs":{"url":"https://github.com/abagraph/abagraph/issues"},"license":"Apache-2.0","homepage":"https://abagraph.com","keywords":["abagraph","tui","cli","memory","knowledge-graph","bitemporal","vector","agent","opentui"],"repository":{"type":"git","url":"git+https://github.com/abagraph/abagraph.git","directory":"abagraph-tui"},"description":"aba — an interactive terminal UI for abagraph, the bitemporal graph + vector memory database. Claude Code, but for your memory data: connect, ask, digest, and pull context with control.","maintainers":[{"name":"ashby1","email":"ash@abagraph.com"}],"readme":"# aba\n\n**The terminal UI for abagraph, the bitemporal graph and vector memory database.**\n\n*Think Claude Code, but for your memory data. You connect, you ask, you build context you control.*\n\n[![npm version](https://img.shields.io/npm/v/@abagraph/tui?logo=npm&logoColor=white&label=npm&color=cb3837)](https://www.npmjs.com/package/@abagraph/tui) [![runtime: Bun](https://img.shields.io/badge/runtime-Bun-14151a?logo=bun&logoColor=white)](https://bun.sh) [![built for AI agents](https://img.shields.io/badge/built%20for-AI%20agents-7c3aed)](https://abagraph.com) [![model keys: zero](https://img.shields.io/badge/model%20keys-zero-22c55e)](https://abagraph.com) [![license: Apache-2.0](https://img.shields.io/npm/l/@abagraph/tui?color=2563eb&label=license)](https://github.com/abagraph/abagraph/blob/main/abagraph-tui/LICENSE)\n\n![aba: ask a question, get a cited answer](https://cdn.jsdelivr.net/npm/@abagraph/tui@0.1.1/demo/3-ask.png)\n\n*Ask in plain English. aba gathers evidence from your graph, your local agent writes a cited answer, and every claim ships with a reliability score.*\n\n`aba` is a pure client for [abagraph](https://abagraph.com). It speaks only to your instance's public REST API and `/mcp` endpoint, ships no engine code, and never touches your model API keys.\n\nYour answers come from a local agent CLI you already have installed (`claude`, `codex`, or any compatible command). `aba` gathers the evidence from your graph, builds a grounded prompt, and streams the cited result back to you.\n\n## Install\n\n```bash\nbunx @abagraph/tui\n```\n\nOr add it to your project:\n\n```bash\nnpm i @abagraph/tui\n```\n\nOr use the one-line installer, which bootstraps [Bun](https://bun.sh) if needed and puts `aba` on your PATH:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/abagraph/abagraph-tui/main/install.sh | bash\n```\n\n`aba` reuses the same `~/.abagraph.json` (`{ \"url\", \"key\" }`) that the [`@abagraph/cli`](https://www.npmjs.com/package/@abagraph/cli) writes, so `npx abagraph init …` then `aba` just works. On first run with no config, `aba` shows a connect screen.\n\n## Demo\n\nA real story you can load with `/sample`: **Bob** (a BDR) ran a discovery call with **Google**, who reported that *data compression loses facts*. **R&D** is now root-causing it.\n\n![First run greets you with an onboarding card.](https://cdn.jsdelivr.net/npm/@abagraph/tui@0.1.1/demo/1-onboard.png)\n\n*First run greets you with an onboarding card.*\n\n![Recall renders as a branded table with status glyph, entity icon, confidence bar, and provenance.](https://cdn.jsdelivr.net/npm/@abagraph/tui@0.1.1/demo/2-recall.png)\n\n*Recall renders as a branded table with status glyph, entity icon, confidence bar, and provenance.*\n\n![/graph opens an interactive view: arrow keys to move, Enter to walk in, Esc to close.](https://cdn.jsdelivr.net/npm/@abagraph/tui@0.1.1/demo/4-graph.png)\n\n*/graph opens an interactive view: arrow keys to move, Enter to walk in, Esc to close.*\n\n![/factcheck surfaces the competing-hypothesis conflict.](https://cdn.jsdelivr.net/npm/@abagraph/tui@0.1.1/demo/5-factcheck.png)\n\n*/factcheck surfaces the competing-hypothesis conflict.*\n\n> Captured from the real OpenTUI renderer against a live instance (`scripts/snapshot.tsx`). A web walkthrough lives in the docs at `static/docs/onboarding.html`.\n\n## What you can do\n\nType a question to **ask**; or use a slash command:\n\n| Command | What it does |\n| --- | --- |\n| `<question>` | grounded, **cited** answer via your local agent (evidence-only fallback if none) |\n| `/sample` · `/onboard` | load the demo dataset (Bob → Google → R&D) · show the getting-started card |\n| `/recall [subj] [--predicate … --status … --min-confidence …]` | pattern query (rendered as a table) |\n| `/graph <entity> [--depth N]` | **interactive** graph view: ↑/↓ to move, Enter to walk in, Esc to close |\n| `/search <q>` · `/walk <entity> [--depth --dir --edges]` | semantic + graph recall |\n| `/context <goal> [--budget --max-facts --seeds --as-of --style --role]` | build a context packet **with control** |\n| `/digest <text> [--commit]` · `/digest --facts \"S\\|P\\|O; …\"` | ingest data into facts (local extraction) |\n| `/explain <fact_id>` | provenance + full lifecycle of a fact |\n| `/factcheck [subj]` | surface contradictions |\n| `/asof <epoch\\|ISO\\|-7d\\|off>` · `/changed <from> <to>` | time-travel + diff two instants |\n| `/branch <create\\|list\\|diff\\|promote\\|discard>` | speculative writes (\"git for memory\") |\n| `/assert <s> <p> <o>` · `/retract <id>` | direct writes |\n| `/use <ns>` · `/model <claude\\|codex\\|off\\|cmd \"<command>\">` · `/explainmode` · `/stats` · `/connect` | session control |\n\nThe status line shows your instance, namespace, chosen agent, active `as_of`, the `explain` toggle, and live fact counts. Facts render with their **trust signals**: status color, a confidence bar, and provenance. These are the signals a flat vector store cannot show you.\n\n### How \"ask\" works (no keys)\n\n1. `aba` gathers tenant-scoped **evidence** from your instance (`/api/search`).\n2. It builds a grounded prompt (answer strictly from the evidence, cite `[i]`).\n3. It runs your **local** agent (e.g. `claude --bare -p … --append-system-prompt …`) and streams the answer back, alongside a measured *reliability* (mean evidence confidence) and the citable facts.\n\nPick the agent with `/model claude`, `/model codex`, or `/model cmd \"ollama run llama3\"`.\n\n## Scripting / headless\n\nAnything you can type, you can run non-interactively (great for pipelines):\n\n```bash\naba --url https://your.abagraph.com --key $KEY --once \"/stats\"\naba --once \"/context 'plan next sprint' --budget 2000\"\necho | aba --once \"what do we know about Project:atlas?\"\n```\n\n`aba` runs headless automatically when stdout isn't a TTY.\n\n## Develop\n\n```bash\nbun install\nbun test                 # api client, prompt builder, slash/asof parsers\nbunx tsc --noEmit        # typecheck (OpenTUI + React)\nbun bin/aba.ts --help\n```\n\nVerify end-to-end against a local engine:\n\n```bash\n# in the abagraph engine repo:\ncargo run --bin abagraph-server -- --seed   # http://127.0.0.1:7777\n# here:\nbun bin/aba.ts --url http://127.0.0.1:7777 --once \"/stats\"\n```\n\n### Design / IP boundary\n\n`aba` only ever makes HTTP calls to the public REST API and `/mcp`. It imports no engine source, bundles no native code, reimplements no engine algorithm, and never handles model keys. `scripts/check-boundary.sh` enforces this in CI. Built on Bun and [OpenTUI](https://opentui.com) (`@opentui/react`).\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md"}