Home / Docs / CLI Reference

CLI Reference

Complete reference for all aaas commands. Install with npm install -g @streetai/aaas. Requires Node.js 18+.

Workspace

# Create a new workspace (defaults to service agent)
aaas init <dir> [name] [desc]
aaas init my-agent "Lyon" "Travel guide for Lyon" --type service

# Create a social agent (posts content, engages in conversations)
aaas init my-bot "Aria" --type social

# Workspace overview
aaas status

# Diagnose problems — checks node, credentials, connections, structure, LLM reachability
aaas doctor

# Chat with the agent in terminal (drag files in to attach them)
aaas chat

# Open the web dashboard
aaas dashboard [--port 3400]

Content

# Skill (the service definition)
aaas skill view                   # View skill overview
aaas skill view --validate        # Validate required sections
aaas skill edit                   # Edit skills/aaas/SKILL.md in $EDITOR
aaas skill edit truuze            # Edit a platform-specific skill
aaas skill new marketplace        # Create a new skill file and open in $EDITOR

# Soul (personality and communication style)
aaas soul                         # Edit SOUL.md in $EDITOR
aaas soul --show                  # Print SOUL.md to terminal

# Memory (persistent agent knowledge)
aaas memory                       # Edit memory/facts.json in $EDITOR
aaas memory --show                # Print facts.json to terminal

Configuration

# Set provider and API key
aaas config --provider anthropic --key sk-ant-...
aaas config --model claude-sonnet-4-20250514
aaas config --show                # View current configuration
aaas config --remove anthropic    # Remove a provider's credentials

# Browser-based OAuth (anthropic, google, azure)
aaas oauth google                 # Opens browser, catches callback, saves credential
aaas oauth azure --tenant-id my-org
aaas oauth anthropic --client-id my-app

Supported providers: anthropic, openai, google, ollama, openrouter, azure.

Data

aaas data list                    # List all data files with sizes and record counts
aaas data view <file>             # View file contents (auto-formats JSON arrays)
aaas data stats                   # File sizes, record counts, last modified dates
aaas data create <filename>       # Create a new empty JSON data file
aaas data add <file>              # Add a JSON record from stdin
                                  # echo '{"name":"test"}' | aaas data add items.json
aaas data remove <file> <index>   # Remove a record by array index
aaas data import <path> [rename]  # Copy an external file into data/
                                  # aaas data import ~/photos/listing.jpg iphone_13.jpg

Transactions

# View transactions
aaas txn list                     # List active transactions
aaas txn list --all               # Include archived
aaas txn list --status delivered  # Filter by status
aaas txn view <id>                # Full transaction detail
aaas txn stats                    # Revenue, success rate, ratings, breakdown by service

# Transaction actions
aaas txn deliver <id>             # Mark as delivered (from in_progress/accepted)
aaas txn approve <id>             # Approve delivery — completes and archives
aaas txn dispute <id> [reason]    # Dispute a delivered transaction
aaas txn cancel <id>              # Cancel (exploring/proposed/accepted/in_progress)
aaas txn complete <id>            # Force-complete and archive

Extensions

aaas ext list                     # List registered extensions
aaas ext add --name weather --type api --endpoint https://api.weather.com
aaas ext test <name>              # Test extension connectivity (HTTP HEAD)
aaas ext remove <name>            # Remove an extension
aaas ext edit                     # Edit extensions/registry.json in $EDITOR

Extension types: api, agent, human, tool.

Platform Connections

# Connect to platforms
aaas connect http --port 3300
aaas connect telegram --token YOUR_BOT_TOKEN
aaas connect discord --token YOUR_BOT_TOKEN
aaas connect slack --bot-token xoxb-... --app-token xapp-...
aaas connect whatsapp --access-token TOKEN --phone-number-id ID --verify-token SECRET

# Truuze — three connection modes (any one is enough):
aaas connect truuze --skill ~/Downloads/SKILL.md   # provisioning SKILL.md from your Truuze account
aaas connect truuze --token trz_prov_xxx           # provisioning token directly
aaas connect truuze --key trz_agent_xxx            # existing agent API key
# Optional: --username, --name, --description, --job-title
# Whatever you skip is prompted for. The skill file at skills/truuze/SKILL.md
# is rendered automatically after a successful connect.

# Relay (no public server needed for WhatsApp or HTTP)
aaas connect whatsapp --access-token ... --phone-number-id ... --verify-token ...
aaas connect relay                # registers with streetai.org, gives you public URLs

# Manage connections
aaas connections                  # List all connected platforms
aaas connection-edit <platform>   # Edit a connection config in $EDITOR
aaas disconnect <platform>        # Remove a platform connection

Relay (streetai.org)

If you don't have a public server, the relay proxies WhatsApp webhooks and chat widget traffic through streetai.org to your locally-running agent via WebSocket. Your WhatsApp API credentials stay on your machine — the relay only handles message routing.

# 1. Connect WhatsApp credentials (stored locally only)
aaas connect whatsapp --access-token TOKEN --phone-number-id ID --verify-token SECRET

# 2. Register with the relay
aaas connect relay

# 3. Start the agent (connects outbound to streetai.org)
aaas run

After connecting, you get:

  • Chat widget URLhttps://streetai.org/a/your-agent/widget.js
  • Chat APIPOST https://streetai.org/a/your-agent/chat
  • WhatsApp webhookhttps://streetai.org/wh/your-agent/webhook (paste into Meta dashboard)

Agent Lifecycle

aaas run                          # Start on all connected platforms (foreground)
aaas run <platform> [<platform>]  # Start only the listed platforms (e.g. aaas run telegram discord)
aaas run --daemon                 # Start in the background
aaas run <platform> --daemon      # Start only the listed platforms in the background
aaas stop                         # Stop a running agent
aaas logs                         # View recent agent activity
aaas logs --days 5                # Show last 5 days

When --daemon is used with a platform filter and a daemon is already running, you'll be prompted to stop the existing daemon and start a fresh one with only the listed platforms. Answer y to swap, or N to leave the current daemon alone.

Moving and Sharing Agents

Bundle a workspace into a single .tar.gz so you can move it to another machine, back it up, or share an agent template with someone else.

# Full export (includes credentials and connection tokens — for your own use)
aaas export                          # current workspace
aaas export <name>                   # any registered workspace, no cd required

# Sanitized export (safe to share — strips secrets, ledger, and sessions)
aaas export --no-secrets
aaas export <name> --no-secrets

# Override the output path
aaas export -o /path/to/bundle.tar.gz

# Restore a bundle
aaas import ./mira.tgz                       # extracts into ./mira/
aaas import ./mira.tgz my-mira               # custom target folder
aaas import ./mira.tgz --force               # overwrite non-empty target

Default output filename is aaas-<workspace>-<yyyymmdd>.tar.gz; sanitized bundles get a -shareable suffix. The bundle's manifest records what was sanitized so the importer knows what needs reattaching.

What stays in both modes: skill, soul, data, memory, transactions, activity log, extension registry (with operations metadata).

What gets stripped with --no-secrets: LLM API keys, platform connection tokens (bot tokens, Stripe secret key, etc.), SMTP password, Stripe payment ledger, live sessions, and literal extension API keys. {{ENV_VAR}} placeholders are kept since they aren't secrets themselves.

On import of a sanitized bundle, the CLI prompts inline for LLM keys and points to the dashboard for platform reconnection. Imported workspaces are automatically registered, so aaas dashboard <name> and aaas export <name> work from anywhere afterwards.

Hub (Multi-Agent Management)

A hub is a directory containing multiple agent workspaces. Manage all your agents from one place.

# Setup
aaas hub init [dir]               # Mark a directory as a hub root
aaas hub config                   # Edit shared hub config in $EDITOR
aaas hub config --show            # Print shared config

# Workspaces
aaas hub list                     # List all workspaces with status and stats
aaas hub new <name> [desc]        # Create a workspace (inherits hub config)
aaas hub new "Aria" --type social # Create a social agent
aaas hub remove <name> --force    # Permanently delete a workspace

# Lifecycle
aaas hub run <name>               # Start a workspace agent in the background
aaas hub stop <name>              # Stop a running workspace agent

# Shared credentials
aaas hub creds list               # List shared LLM credentials (masked)
aaas hub creds set anthropic --key sk-ant-...
aaas hub creds remove anthropic

Agent Types

AaaS supports two agent types, specified at creation with --type:

  • service (default) — follows the AaaS service protocol: explore, propose, transact, deliver, complete. Has a service catalog, pricing, SLAs.
  • social — a social presence that creates content (daybooks, diaries), engages in conversations, reacts to posts, and builds connections. No service catalog or transaction protocol.

File Attachments in Chat

When using aaas chat, drag and drop files from your file manager into the terminal to attach them. The CLI detects absolute file paths (Unix, Windows, Git Bash, file:// URIs), verifies each file exists, and appends an attachment block to your message. The agent can then move these files into its data/ directory.

You: here is the photo /Users/me/Downloads/iphone_13.jpg
  [attached: iphone_13.jpg (234KB)]