qiforge-cli npm package and runs as the qiforge-cli binary (source). It scaffolds new oracles, scaffolds new plugins inside an existing oracle, provisions on-chain identity + Matrix bots, and gives you an SSE chat client for testing.
Installation
protobufjs:
Commands at a glance
Authentication
Two modes:SignX (default)
SignX (default)
Uses the IXO Mobile App for QR-code-based authentication. Keep the app open during the session.
Offline wallet
Offline wallet
Uses a local mnemonic. No mobile app needed. Credentials are stored in Non-interactive:Flags:
~/.wallet.json.Interactive:qiforge-cli new
Scaffolds a new oracle from the bundled starter template — no git clone. Interactive by default: it walks you through auth, network, the oracle profile, and entity creation, then writes the project.--name is required:
The command optionally runs the install step and can also create the oracle entity + Matrix account in the same flow.
qiforge-cli plugin new
Scaffolds a new plugin into an existing oracle project. Run it from inside the project; the CLI walks up to find apackage.json that depends on @ixo/oracle-runtime and writes the plugin there.
--cwd — the directory to resolve the oracle project from (defaults to the current directory).
Generated layout (under src/plugins/<name>/):
qiforge-cli create-entity
Creates the on-chain entity record and Matrix bot, and writesoracle.config.json + .env. Used both standalone (e.g. when re-provisioning) and as part of new.
create-entity registers --api-url http://localhost:4000 by default, but the runtime’s own default PORT is 3000. If you take the default URL, make your running oracle reachable at it: either set PORT=4000 in your .env to match, or update the registered URL later with qiforge-cli update-oracle-api-url.
Supported model identifiers (from the interactive menu):
--model.
qiforge-cli update-entity
Updates an existing entity. Used to add controllers, rotate keys, or modify metadata after the initial create-entity.qiforge-cli update-oracle-api-url
Updates the URL the oracle entity advertises. Default ishttp://localhost:4000; switch to your deployed URL before going live.
qiforge-cli setup-encryption-key
Provisions the oracle’s encryption/signing key into its Matrix account room — the P-256keyAgreement key used to decrypt per-room secrets, plus the signing material the runtime uses to mint downstream UCAN invocations. Until it’s provisioned, authenticated routes return 401 and the boot log warns about the missing key.
qiforge-cli create-composio-key
Mints a Composio API key tied to your oracle’s DID. Required if your oracle uses the bundledcomposio plugin.
qiforge-cli create-user
Creates a new user account (DID + Matrix account) — useful for testing your oracle against multiple identities.—chat
Starts a chat session with a running oracle over SSE — renders tool calls, assistant messages, and errors in the terminal. It’s a flag, not a subcommand:new).
qiforge-cli logout
What qiforge-cli new writes
qiforge-oracle Claude Code skill at .claude/skills/qiforge-oracle/ so any AI agent you point at the project (Claude Code, Cursor, etc.) immediately has dense, scenario-specific guidance on the framework — adding plugins, adding tools, wiring env, writing tests with createTestRuntime, debugging boot. The skill is project-local: it ships inside every scaffolded oracle, no separate install needed. See the skill source in the CLI repo.
Generated .env skeleton:
Related references
- Identity and auth guide — what
create-entityandsetup-encryption-keyset up. - Environment variables — what to put in the
.envthe CLI writes. - CLI source — every command’s implementation.