engelbart-cli
v0.19.20
Published
Engelbart: one-command installer for /bart, chat-scoped goals for Claude Code.
Readme
engelbart-cli
Install /bart — chat-scoped goal workspaces for Claude Code — with one
command:
curl -fsSL https://berkeley.mathetic.com/engelbart/install.sh | shThat downloads a standalone binary -- no Node, npm, or Python needed first --
verifies it against its published SHA-256, and runs the installer. If you
already have Node, npx engelbart-cli does exactly the same thing.
The installer takes no required options. It installs the hc runtime, the
Claude Code hooks, and the /bart command; connects this machine to your
Engelbart account; provisions its Claude key and Supabase project config; then
opens the first-project setup page. Authentication is a gate: setup does not
start until the account has supplied a Claude key and a usable Supabase
configuration.
Connecting your account
There is no password prompt. The installer prints a short code, opens
https://berkeley.mathetic.com/engelbart in your browser, and waits while you
sign in and approve that code on screen. Approving it writes a machine-scoped
token to ~/.human-compact/auth.json, readable only by you.
Only approve a code your own terminal printed. The installer keeps a second secret that never leaves your machine, so a pairing link someone else sends you cannot connect their terminal to your account.
engelbart auth # connect this machine (or reconnect it)
engelbart whoami # show which account this machine is connected to
engelbart env # print exports for the issued Claude credit
engelbart logout # disconnect this machine and revoke its tokenUsing your Claude credit
Approving the code also fetches the Claude key your account was allocated, so there is nothing to copy out of the browser. The key lands in the same owner-only file as the token, and the two lines a shell needs are written beside it:
source ~/.human-compact/env.sh # this terminal
claudeAdd that source line to your shell profile and every new terminal picks it
up. The file is written by engelbart auth and removed by
engelbart logout, so a disconnected machine stops pointing claude
at a key it no longer holds.
engelbart env prints the same two lines to stdout. Only the exports
reach stdout, so eval "$(engelbart env)" is safe; everything else
goes to stderr.
Credits can lag a new account. If the key is not ready when you approve the
code, the machine still connects -- run engelbart auth again once it
is.
Connecting is skipped when there is no terminal to answer in -- a scripted or
CI install never waits on a browser -- and --local-only skips it outright. The
install itself does not depend on it: run engelbart auth whenever you
are ready. Set ENGELBART_API_BASE to point at a deployment other than
https://berkeley.mathetic.com.
First-project setup
After authentication has returned a Claude key and configured Supabase, the
installer starts hc setup-ui and opens its /setup page. New work enters the
guided onboarding conversation; existing work is handed to the normal /bart
flow. If the page cannot be opened, the installer prints hc setup-ui as the
recoverable next step. --no-open keeps authentication but suppresses that
automatic launch.
From then on the hooks record each chat's own prompts and events to a local,
owner-only store under ~/.claude-vault/chat-sessions/<session-id>/ — the
same conversation Claude Code already keeps in ~/.claude/projects/. Nothing
is analyzed or injected until you run /bart in that chat, and nothing
leaves your machine except the model calls your own claude CLI makes.
Start a new Claude Code session (or run /reload-plugins), then run:
/bartThat opens the goal workspace for the current chat. From then on that chat's
goals are inferred with your own authenticated Claude CLI and injected back
into the chat as context — the whole goals document first, then only what
changed since your last message. Subagents and tool batches receive it too.
/bart disable turns analysis and injection off again for that chat;
/bart turns them back on.
The Python backend is an exact wheel bundled in both the standalone and npm
releases. It is installed into a managed private runtime under
~/.human-compact/; neither installer fetches code from a mutable Git branch.
Noninteractive installation
Scripted or deliberately local installation skips browser authentication:
engelbart install --local-only--non-interactive is still accepted for compatibility and also skips browser
authentication.
--dry-run verifies the bundled wheel and prints the plan without installing.
Neither form waits on a browser, so a scripted install finishes unattended and
leaves the account to be connected later with engelbart auth.
Experimental (HC_EXPERIMENTAL=1)
The global Vault — cross-chat conversation capture — and the global goal
inference built on it are experimental in this release. --global-vault 1 and
--goals 1 are refused unless HC_EXPERIMENTAL=1 is set, and the global
capture hooks are installed only when the flag is set at install time:
# Global Vault plus global goal inference
HC_EXPERIMENTAL=1 engelbart install --non-interactive --global-vault 1 --goals 1
# Global Vault without running goal inference now
HC_EXPERIMENTAL=1 engelbart install --non-interactive --global-vault 1 --goals 2Values other than 1 and 2 are rejected, and --goals 1 is invalid when the
global Vault is disabled.
If you already had the global Vault enabled, a plain reinstall leaves it
enabled on disk but stops capturing, because the default hook set no longer
calls the Vault hook. Reinstall with HC_EXPERIMENTAL=1 to wire it again.
See STASHED.md for the full inventory.
Requirements and state
- macOS or Linux
- Claude Code 2.1.175+
curlfor the standalone installer; Node.js 18+ only for the optional npm path
Installer metadata lives at ~/.human-compact/install.json; versioned Python
runtimes live under ~/.human-compact/runtimes/; and the stable launchers are
~/.human-compact/bin/hc and ~/.human-compact/bin/bart. Re-running the same
Engelbart version repairs the Claude integration and reuses a verified runtime.
If ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN is already exported in the
shell, unset it before launching Claude Code: shell variables take precedence
over the credential helper. Engelbart never replaces a foreign
apiKeyHelper, and logout removes only the Claude settings it authored.
The installer uses an existing compatible Python when available. Otherwise it
downloads pinned uv 0.11.32 release assets, verifies their published SHA-256,
and provisions a managed Python automatically. Set HUMAN_COMPACT_PYTHON to
an explicit Python executable when automatic interpreter discovery is
unsuitable.
Maintainer release step
After the matching hc/ source is committed, populate the immutable wheel and
its checksum manifest:
npm run build:vendor
npm test
npm publish --dry-runThe published tarball must contain vendor/manifest.json and exactly the wheel
named by that manifest.
