A command-line interface for creating and managing IXO Oracle projects. This CLI helps you set up AI Agent oracles built with LangGraph, using Matrix as a datastore with linked resources stored on the IXO blockchain.
The QiForge CLI automates the complete setup of AI Agent oracle projects. It handles:
- Blockchain Integration: Creates entities on the IXO blockchain with linked resources stored in Matrix
- Matrix Account Creation: Sets up Matrix accounts for data storage and communication
- Project Initialization: Clones the QiForge boilerplate and configures the environment
- Authentication: Supports two modes — SignX (QR code via IXO Mobile App) or offline wallet (local mnemonic)
- Non-interactive Mode: Full CI/CD support with
--no-interactiveflag and CLI flags for all parameters
- Node.js 22+
- IXO Mobile App (for SignX authentication) or a mnemonic phrase (for offline mode)
Install the CLI globally using npm:
npm install -g qiforge-cliOr with pnpm:
pnpm add -g qiforge-cliImportant for pnpm users: After installation, you need to approve build scripts:
pnpm approve-builds -gWhen prompted, select protobufjs and approve it:
✔ Choose which packages to build · protobufjs
✔ The next packages will now be built: protobufjs.
Do you approve? (y/N) · true
Or with yarn:
yarn global add qiforge-cli-
Initialize a new oracle project:
qiforge-cli --init
-
Or run the interactive CLI:
qiforge-cli
-
Follow the prompts:
- Choose authentication: SignX (QR code) or Offline (local mnemonic)
- Enter your project name
- Select the template (QiForge boilerplate or custom)
- Configure your oracle details (name, profile, LLM model, prompts, etc.)
The CLI supports two authentication modes:
Uses the IXO Mobile App for QR code-based authentication. Keep your app open during the session.
qiforge-cli
# Select "SignX Wallet (QR code with mobile app)" when promptedUses a local mnemonic phrase for authentication. No mobile app needed.
# Interactive
qiforge-cli offline-login
# Non-interactive (CI/CD)
qiforge-cli offline-login --network devnet --mnemonic "your twelve word mnemonic phrase here" --matrixPassword "your-matrix-password"Offline login flags:
| Flag | Description |
|---|---|
--network |
Network to use (devnet, testnet, mainnet) |
--mnemonic |
Mnemonic phrase for wallet derivation |
--matrixPassword |
Matrix account password |
--name |
Display name (falls back to Matrix profile name) |
Creates a new IXO Oracle project with all necessary components:
- Project Setup: Creates directory and clones the QiForge boilerplate
- Entity Creation: Creates a blockchain entity with linked resources stored in Matrix
- Matrix Account: Sets up Matrix account for data storage
- Oracle Config: Saves
oracle.config.jsonwith oracle metadata, LLM model, and prompt settings - Environment Configuration: Creates
.envfile with all necessary variables
Launches an interactive menu with the following options:
- init - Initialize a new project
- create-entity - Create a blockchain entity
- chat - Chat with the oracle
- logout - Sign out
| Command | Description |
|---|---|
create-entity |
Create an entity with oracle profile, linked resources |
chat |
Chat with the oracle |
offline-login |
Login with a local mnemonic (offline wallet) |
logout |
Clear your authentication session |
--help, -h |
Show help information and available commands |
Both init and create-entity support a --no-interactive flag for fully automated pipelines. All parameters can be passed as CLI flags.
qiforge-cli --init --no-interactive \
--name my-oracle-project \
--network devnet \
--oracle-name "My Oracle" \
--price 100 \
--api-url http://localhost:4000 \
--pin 123456Init flags:
| Flag | Description | Default |
|---|---|---|
--name |
Project name (required in non-interactive mode) | — |
--path |
Project directory path | ./<name> |
--repo |
Template repository URL | git@github.com:ixoworld/qiforge.git |
--force |
Overwrite existing directory | false |
qiforge-cli create-entity --no-interactive \
--network devnet \
--oracle-name "My Oracle" \
--price 100 \
--org-name "My Org" \
--description "Oracle description" \
--api-url http://localhost:4000 \
--model "anthropic/claude-sonnet-4" \
--pin 123456Create entity flags:
| Flag | Description | Default |
|---|---|---|
--network |
Network (devnet, testnet, mainnet) |
devnet |
--oracle-name |
Oracle name | My oracle |
--price |
Price in IXO credits | 100 |
--org-name |
Organization name | IXO |
--logo |
Logo URL | Auto-generated from oracle name |
--cover-image |
Cover image URL | Same as logo |
--location |
Location string | New York, NY |
--description |
Entity description | Default placeholder |
--website |
Website URL (optional) | — |
--api-url |
Oracle API URL | http://localhost:4000 |
--project-path |
Project directory for saving config | Current directory |
--pin |
6-digit PIN for Matrix vault | Prompted if not provided |
--model |
LLM model identifier | moonshotai/kimi-k2.5 |
--skills |
Comma-separated skill list | — |
--prompt-opening |
Opening prompt for the oracle | — |
--prompt-style |
Communication style | — |
--prompt-capabilities |
Capabilities description | — |
--mcp-servers |
JSON array of MCP servers ([{"url":"..."}]) |
— |
After entity creation, the CLI saves an oracle.config.json file in your project root (and apps/app/) with oracle metadata:
{
"oracleName": "My Oracle",
"orgName": "IXO",
"description": "Oracle description",
"location": "New York, NY",
"website": "",
"price": 100,
"apiUrl": "http://localhost:4000",
"network": "devnet",
"entityDid": "did:ixo:entity:...",
"logo": "https://...",
"prompt": {
"opening": "Welcome! I can help you with...",
"communicationStyle": "Friendly and concise",
"capabilities": "I can search the web, manage tasks..."
},
"model": "moonshotai/kimi-k2.5",
"skills": [],
"customSkills": [],
"mcpServers": []
}During interactive entity creation, you can choose from:
moonshotai/kimi-k2.5(default)anthropic/claude-sonnet-4openai/gpt-4ogoogle/gemini-2.5-prometa-llama/llama-4-maverick- Or enter a custom model identifier
After initialization, your project will have:
your-oracle-project/
├── oracle.config.json # Oracle configuration
├── apps/
│ └── app/
│ ├── .env # Environment configuration
│ ├── oracle.config.json # Copy for Docker builds
│ └── ... # Application files
├── packages/ # Shared packages
└── ... # Other project files
The CLI automatically creates a .env file with:
PORT=4000
ORACLE_NAME=your-oracle-name
# Matrix Configuration
MATRIX_BASE_URL=https://matrix.ixo.world
MATRIX_ORACLE_ADMIN_ACCESS_TOKEN=your-access-token
MATRIX_ORACLE_ADMIN_PASSWORD=your-password
MATRIX_ORACLE_ADMIN_USER_ID=your-user-id
# AI/ML Services (configure as needed)
OPENAI_API_KEY=
LANGFUSE_PUBLIC_KEY=
LANGFUSE_SECRET_KEY=
LANGFUSE_HOST=https://cloud.langfuse.com
OPEN_ROUTER_API_KEY=
# Blockchain Details (store securely)
ORACLE_ADDRESS=your-address
ORACLE_DID=your-did
ORACLE_MNEMONIC=your-mnemonic
MATRIX_VAULT_PIN=your-pin
ENTITY_DID=your-entity-didThe CLI supports two authentication modes:
- SignX: Keep your IXO Mobile App open during the login process. All transactions require QR code scanning.
- Offline: Uses a local mnemonic phrase. Transactions are signed locally — no mobile app needed. Credentials are stored in
~/.wallet.json.
Your session is persisted locally for future use. Run qiforge-cli logout to clear it.
After project initialization:
-
Navigate to your project:
cd your-project-name -
Install dependencies:
pnpm install
-
Build the project:
pnpm build
-
Start development:
cd apps/app pnpm start:dev
If you want to contribute to the CLI itself:
-
Clone the repository:
git clone https://github.com/ixoworld/ixo-oracles-cli cd ixo-oracles-cli -
Install dependencies:
pnpm install
-
Build the CLI:
pnpm build
-
Run locally:
pnpm start
Development Scripts:
pnpm build- Build the CLIpnpm dev- Watch mode for developmentpnpm test- Run testspnpm lint- Lint codepnpm type-check- Type check
For issues and questions:
- Create an issue in the repository
- Join the IXO Discord community
- Check the IXO documentation
This project is licensed under the Apache License 2.0. See License.txt for details.