Dependencies
abtars deps manages two independent optional-dependency systems: npm package groups and system binaries. This page is the reference for both.
Command surface
abtars deps list # show every group + system binary + install status
abtars deps install [name|all] # install a group (default: all)
abtars deps update [name|all] # refresh an installed group
abtars deps remove <name> # uninstall a groupThere is no deps check — use deps list, which shows install status for everything in one view.
Npm package groups
| Group | Packages | What it enables |
|---|---|---|
native | better-sqlite3, sqlite-vec | SQLite storage for kanban + abmind memory. Installed automatically on first boot if missing; deps install/update exist for manual repair or refresh. |
twitter | rettiwt-api | Twitter/X integration |
pdf | pdf-parse | PDF reading |
youtube | youtube-transcript | YouTube transcript fetching |
image | jimp | Image processing |
These CLI-managed npm groups install under ~/.local/lib/node_modules/ — no sudo, no system paths. Daemon mode wires NODE_PATH automatically; simple mode needs the manual export documented in Installation.
Browser runtimes
lightpanda and cloak are auto-managed external binaries rather than npm groups. They install into the user-local prefix and remain available under their original executable names:
| Name | What it enables | Install/update behavior |
|---|---|---|
lightpanda | JavaScript-rendered fetches in web-fetch level 3 | Runs Lightpanda's official installer on the nightly channel |
cloak | Action-capable stealth browser for Browsie | Installs the latest @dreamor/cloakbrowser-cli, cloakbrowser, and playwright-core, then ensures the CloakBrowser binary is downloaded |
Use abtars deps install lightpanda cloak for a first setup and abtars deps update lightpanda cloak to refresh both from upstream. No versions are pinned. abtars deps install all includes both browser runtimes.
Skill script dependencies
Skill scripts use a separate, generic dependency contract. Any skill under core/, self/, custom/, or downloaded/ may declare exact npm versions in scripts/package.json:
{
"type": "module",
"dependencies": {
"example-runtime-package": "1.2.3"
}
}Absent or empty dependencies means no preparation. Non-empty declarations are validated and installed centrally under ~/.abtars/node_modules/, then checked from a nested skill-script path. This is distinct from abtars deps: skill dependencies are prepared automatically at release deploy (before activation), boot, and explicit /skill reload. They are never installed while a model is executing a skill.
Exact semantic versions are required. A shared package may have only one direct version; conflicting skill declarations exclude the affected skills on reload or abort deployment before activation. See Skills for the declaration and recovery details.
pi (the coding-agent CLI/AI/TUI bundle) is managed through the same deps install|update|remove pi commands but is a separate external distribution with its own compatibility check — see Pi Executor.
The browser capability is not embedded in abtars. Its external cloak runtime is managed by abtars deps; see Browser.
Native deps: shared with abmind
better-sqlite3 and sqlite-vec are the one dependency group abtars and abmind both need, and both products may end up owning the same install (same shared ~/.local/lib/node_modules/ root, same target versions). abtars deps install/update native and the equivalent abmind deps command coordinate through a shared, file-locked manifest — whichever product touches the group first records ownership; the other becomes a consumer.
States you may see
deps list reports one of these states per npm group:
| State | Meaning |
|---|---|
ready | Installed at the target version and recorded in the shared manifest — nothing to do. |
absent | Not installed. deps install will fetch it. |
partial | Only some packages in the group are present. deps install/update repairs it. |
invalid | Present but corrupted (unreadable metadata, missing version). Repaired the same way as partial. |
drifted | The exact target version is present on disk, but the shared manifest doesn't already own it — usually because another install path (manual npm install, an older abtars/abmind version, or the other product) put it there first. |
What happens on drifted
A drifted group is not automatically broken — it just means abtars can't yet prove ownership through the manifest. deps install/update resolves this one of two ways:
- Adopt — if the installed package and everything it depends on (its full dependency closure) checks out exactly against the target contract, abtars records ownership in the shared manifest without running npm or touching any files. You'll see output like:
✓ native adopted (2 roots, 1 transitive; no npm install) - Repair — if the closure can't be verified as an exact match (wrong version, corrupted files, unexpected structure), abtars falls back to a normal npm-backed install/refresh instead.
Collision errors
If deps update/install stages a fresh npm install and finds an unrelated, unrecorded package already sitting in the shared root under the same name — something neither abtars nor abmind is tracking, and not the same content — it refuses to overwrite it rather than silently replacing files another tool put there:
✗ native failed: Collision with unrelated package "some-package"; refusing to overwrite.This is a real, if rare, conflict — it means something outside abtars/abmind's coordination put a same-named package in the shared root. It is not triggered by ordinary version-range differences between dependents (e.g. one package wanting ^1.2.0 and another ^1.2.3 of the same transitive dependency) — that kind of declaration diversity is normal and does not cause a collision.
If you hit this, check what else writes to ~/.local/lib/node_modules/ on your machine before re-running deps update.
System binaries (manual install)
| Binary | What for | Install command |
|---|---|---|
ollama | Local embeddings + local models | curl -fsSL https://ollama.ai/install.sh | sh |
bwrap | Sandbox (Linux only) | apt install bubblewrap |
These manual system dependencies are not installed by abtars and may require their own platform package manager. The browser runtimes above are different: their upstream installers are run by abtars deps install/update without sudo. See Prerequisites for why.
Troubleshooting
abtars deps updatefails with a collision on a transitive package you didn't expect — see Collision errors above.- A group stays
driftedafterdeps update— the closure verification failed silently; re-run with the group name explicit (abtars deps update native) and check the printed error for the specific mismatch (version, hash, ABI, platform). - Simple mode can't find installed npm packages at runtime — add
NODE_PATH="$HOME/.local/lib/node_modules:$NODE_PATH"to your shell profile; daemon mode sets this automatically. See Installation.