kib — The Headless Knowledge Compiler. Bun + TypeScript monorepo.
packages/core→@kibhq/coreon npmpackages/cli→@kibhq/clion npmpackages/dashboard→@kibhq/dashboardon npm (web UI, launched viakib ui)- npm org:
kibhq - GitHub:
keeganthomp/kib
Manual workflow dispatch via GitHub Actions (release.yml). Critical rules:
-
All three version numbers must stay in sync:
package.jsonroot (versionfield)packages/core/package.json(versionfield)packages/cli/package.json(versionfield)- The release workflow verifies this and fails if they're out of sync.
-
Bump versions before releasing. Update all three
package.jsonfiles, commit, merge to main, then trigger the release workflow. -
npm won't let you republish the same version. If publish fails, you must bump to a new version — you cannot fix it by re-publishing the same number.
-
workspace:*must not appear in published packages. The CLI depends on core using^x.y.z(notworkspace:*) because npm doesn't understand the workspace protocol. Bun resolves^x.y.zto the local workspace copy during development.
- Never push directly to
main— always branch + PR - Conventional Commits:
feat:,fix:,chore:,ci:,docs: ci.yml: runs lint + tests on PRs to mainrelease.yml: manual workflow dispatch from main — creates tag, GitHub release, publishes to npm, builds binaries
bun test # run tests (402+)
bun run check # biome lint + format
bun run packages/cli/bin/kib.ts # run CLI locally@kibhq/core: vault ops, LLM providers, ingest extractors, compile engine, BM25 search, RAG query, lint, skills@kibhq/cli: commander CLI, terminal UI (spinners, prompts), command handlers- CLI lazy-imports from core to keep cold starts fast
- LLM providers: Anthropic, OpenAI, Ollama (auto-detected from env vars)
- Credentials stored at
~/.config/kib/credentials, loaded on CLI startup
Git-based team collaboration. No custom server, no accounts.
kib share <url> # connect vault to git remote
kib clone <url> # join a shared vault
kib pull # get latest from team
kib push # commit + push local changes
kib share --status # check sync state- Manifest conflicts auto-resolve via 3-way merge (union by key, prefer newer)
- Machine-local state (.kb/cache, .kb/vault.lock, pipeline.db) is gitignored
- Dashboard Team page: sync status, pull/push buttons, contributor list
- MCP tools:
kib_share_status,kib_pull,kib_push - Config:
[sharing]section in config.toml
summarize, flashcards, connections, find-contradictions, weekly-digest, export-slides, timeline, compare, explain, suggest-tags
kib skill list # list all available skills
kib skill run <name> # run a skill
kib skill install github:user/repo # install from GitHub
kib skill install <npm-package> # install from npm
kib skill uninstall <name> # remove an installed skill
kib skill create <name> # scaffold a new skill
kib skill publish <name> # validate for publishing
kib skill installed # list installed skills- Skills defined as
SkillDefinitionobjects withrun(ctx: SkillContext)method SkillContextprovides: vault read/write, LLM (complete/stream), search, logger, args,invoke()for skill-to-skill calls- Skills live in:
packages/core/src/skills/builtins.ts(built-in) or.kb/skills/(installed) - Directory-based skills use
skill.jsonfor metadata + entry point - Dependency resolution with circular dependency detection
- Hooks system: skills auto-run after compile/ingest/lint via
hooksfield or[skills.hooks]in config.toml - Config:
[skills]section inconfig.tomlfor hooks and per-skill settings
- Inbox folder — auto-ingest files dropped into
inbox/ - HTTP endpoint —
POST localhost:4747/ingest(content or URL-only) - Folder watchers — configurable multi-folder with glob patterns
- Clipboard watcher — polls system clipboard, dedup via hash, configurable min length
- Screenshot watcher — watches OS screenshot folder via vision pipeline, auto-detects per platform
- Manual save — "Save to kib" button with content extraction via Readability
- Auto-capture — dwell time tracking, configurable threshold (10–120s), toggle in popup
- History sync — periodic browser history scan, configurable interval and lookback, URL dedup
kib watch --clipboard # enable clipboard watching
kib watch --no-clipboard # disable clipboard watching
kib watch --screenshots # enable screenshot watching
kib watch --no-screenshots # disable screenshot watching