@uniqent/cli
v0.3.0
Published
The `uniqent` CLI — inspect and install .uniqent bundles.
Readme
@uniqent/cli
The
uniqentCLI — build, package, and install portable AI-agent brains (.uniqentbundles).
Part of Uniqent — any brain, any agent: package an AI agent's whole brain (persona, MCP stack, skills, memory, config) into one open, signed .uniqent file and install it into whatever framework you run (Claude Code, Hermes, OpenClaw).
Try it in one command
npx @uniqent/cli try research-analystAuto-detects your framework, installs a signed, creds-free research brain (no API key), and tells you exactly what to ask. npx @uniqent/cli try --list browses featured brains.
Install
npm i -g @uniqent/cli # or use: npx @uniqent/cli <command>Commands
| Command | Description |
| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| try <brain> | One-command install of a featured brain — auto-detects your agent framework and prints a suggested first prompt. Pass --list to browse featured brains. |
| install <file\|url\|slug> | Install a .uniqent bundle into a target framework directory. Accepts a local file, a raw HTTPS URL, or a registry slug. |
| inspect <file\|url\|slug> | Print a bundle's identity, components, permissions, credential requirements, and signature status — without installing it. |
| validate <dir\|file> | Validate a bundle directory or packed .uniqent file against the canonical schema and report errors. |
| pack <dir> | Pack a canonical bundle directory into a .uniqent file; validates and secret-scans before writing. |
| search <query> | Search a registry index (--registry <url> or UNIQENT_REGISTRY) and list matching bundles. |
| hub <mcp\|skills> <query> | Search MCP server hubs (MCP Registry, Smithery) or skill hubs (GitHub) for servers and skills to add to a brain. |
| export | Capture an existing framework setup (Claude Code, Hermes, or OpenClaw) back into a canonical .uniqent bundle, scrubbing secrets to credential refs. |
| import-vault <dir> | Capture an Obsidian / second-brain vault folder (markdown notes, [[links]], #tags) into a .uniqent bundle (--sign / --key <k> to sign it). |
| publish-memory <pack.json\|notes.md> | Publish a memory pack to a hosted hub (default uniqent.ai). Accepts a structured .json pack or freeform markdown. |
| keygen | Generate an Ed25519 keypair for signing bundles. Writes a uniqent.key.json file — keep it out of git. |
| sign <file.uniqent> | Sign a packed bundle with a keypair written by keygen. |
Publishing (requires login)
Publishing is per-user. Log in with:
uniqent login # opens your browser to approve the device (sign in with your
# uniqent.ai account), then stores the returned token in
# ~/.uniqent/credentials.json. On a headless machine it prints
# the URL + code to open elsewhere. You can still pass a token
# directly with `uniqent login --token <unq_live_…>` (create one
# at https://uniqent.ai/account/tokens).
uniqent publish ./my-brain # packs (optionally --sign) and uploads the .uniqent
uniqent publish-memory notes.md --slug team-playbook --name "Team playbook"
uniqent logoutToken resolution order: --token flag → UNIQENT_PUBLISH_TOKEN env → stored login.
uniqent publish accepts a packed .uniqent file or a directory (packed on the fly;
add --sign or --key <file> to sign). The registry rejects unsigned/secret-bearing
bundles, and a name owned by another publisher returns a conflict.
A few flows
Try a featured brain (zero config):
npx @uniqent/cli try research-analyst
# auto-detects Claude Code / Hermes / OpenClaw, installs, prints a suggested prompt
npx @uniqent/cli try --list
# browse all featured brainsInstall a signed bundle with credentials:
uniqent install my-brain.uniqent \
--target claude-code \
--root ~/my-project \
--cred OPENAI_API_KEY=sk-... \
--yesCredentials come from --cred <ref>=<value>, UNIQENT_CRED_<REF>, or a hidden prompt on an
interactive terminal. When stdin is not a terminal (CI, pipes) nothing is prompted: pass every
required --cred and --yes. --dry-run prints the plan — files, each MCP server's command or
URL, lossiness, and the signer's key fingerprint — and writes nothing. A bundle whose signature
is invalid is always refused; --allow-unsigned only admits unsigned bundles.
Install directly from a URL (no registry needed):
uniqent install https://example.com/brains/dev-powerpack.uniqent \
--target hermes \
--root ~/hermes-home \
--allow-unsignedPack, sign, and inspect a bundle:
uniqent keygen -o publisher.key.json
uniqent pack ./my-brain-dir --sign --key publisher.key.json -o my-brain.uniqent
uniqent inspect my-brain.uniqentExport an existing Claude Code setup into a portable bundle:
uniqent export --from claude-code --root ~/my-project -o my-brain.uniqentImport an Obsidian vault:
uniqent import-vault ~/Documents/MyVault --name "My Knowledge Brain" --sign --key publisher.key.jsonWhere this fits
The CLI is a thin front-end over @uniqent/builder + @uniqent/core and the framework adapters (@uniqent/adapter-claude-code, @uniqent/adapter-hermes, @uniqent/adapter-openclaw). The same logic powers Uniqent Studio. Secrets never travel in a bundle — the installer resolves your own credentials locally into the target framework's native credential store.
License
Apache-2.0. The .uniqent spec text/schema is CC0. See the Uniqent monorepo.
