Skip to main content

WowBits AI Platform CLI - Manage connectors and integrations for AI workflows

Project description

WowBits CLI

CLI and API for building and running WowBits AI agents. The CLI is a thin client; all operations go through the WowBits API.

Architecture (API-first)

  • One API instance = one workspace. The API is started with WOWBITS_ROOT_DIR set to the workspace path.
  • CLI requires WOWBITS_API_URL and only calls the API (no direct DB or subprocess).
  • Layout: core/ (business logic), api/ (FastAPI), cli/ (HTTP client), db/, pylibs/.

To use the CLI: Start the API first (see Running the API), then set WOWBITS_API_URL (e.g. http://localhost:8000) and run wowbits commands.

Table of Contents

Installation

Install the WowBits CLI using pip:

pip install wowbits-cli

Or install from source:

git clone https://github.com/wowbits/wowbits-cli.git
cd wowbits-cli/src
pip install -e .

Quick Start

  1. Create a workspace directory and set it as the API's workspace:
export WOWBITS_ROOT_DIR=~/wowbits   # or your path
mkdir -p $WOWBITS_ROOT_DIR
  1. Start the WowBits API (from this repo, with the same workspace):
cd wowbits-cli/src
export WOWBITS_ROOT_DIR=~/wowbits
pip install -r requirements.txt
wowbits start
  1. Use the CLI (in another terminal):
export WOWBITS_API_URL=http://localhost:8000
wowbits setup --db-url "sqlite:///$WOWBITS_ROOT_DIR/data/wowbits.db"
wowbits list agents
  1. Verify installation:
wowbits --version

Running the API

The API serves one workspace per process (Option B). You can start it with the CLI or manually.

Option 1: wowbits start (recommended)

export WOWBITS_ROOT_DIR=/path/to/workspace
wowbits start
# Or with host/port (runs as daemon; use wowbits stop to stop):
wowbits start --host 0.0.0.0 --port 8000
# Run attached to terminal instead of daemon:
wowbits start --foreground
# Stop the daemon:
wowbits stop

Option 2: Run uvicorn directly

export WOWBITS_ROOT_DIR=/path/to/workspace
cd wowbits-cli/src
uvicorn api.main:app --host 0.0.0.0 --port 8000

Optional: create a .env in the workspace with WOWBITS_DB_CONNECTION_STRING=... so the API can connect to the DB after setup.

Commands (CLI)

Start

Start the WowBits API server for the current workspace. Does not require WOWBITS_API_URL (you are starting the API, not calling it).

wowbits start [--host HOST] [--port PORT] [--root-dir PATH]

Options:

  • --host: Host to bind (default: 0.0.0.0)
  • --port, -p: Port (default: 8000)
  • --root-dir: Workspace path. If omitted, uses WOWBITS_ROOT_DIR from the environment.
  • --foreground, -f: Run attached to the terminal instead of as a daemon.

By default the server runs as a daemon: logs go to workspace/logs/system/api.log, PID to workspace/logs/system/api.pid. Use wowbits stop to stop it.

Example: Run wowbits start (starts API as daemon; use wowbits stop to stop). In another terminal set WOWBITS_API_URL=http://localhost:8000 and use other wowbits commands. Use wowbits start --foreground to run attached to the terminal.

Stop

Stop the WowBits API server when it was started with wowbits start (daemon mode).

wowbits stop [--root-dir PATH]

Options:

  • --root-dir: Workspace path. If omitted, uses WOWBITS_ROOT_DIR.

Sends SIGTERM to the process whose PID is stored in the workspace .wowbits-api.pid file, then removes the file. If the process is already gone, the PID file is removed.

Setup

Initialize the workspace (create dirs, DB tables, init data, save .env). Requires the API to be running and WOWBITS_API_URL set.

wowbits setup [--db-url URL]

Options:

  • --db-url URL: Database URL (e.g. sqlite:///./data/wowbits.db). If omitted, you will be prompted.

What it does: Calls the API to create workspace subdirs, create tables, load YAML from data/, and write WOWBITS_DB_CONNECTION_STRING to the workspace .env.

List

List available resources.

List Functions

wowbits list functions

Displays all Python functions registered in the database.

List Connectors

wowbits list connectors

Shows all configured connectors (API keys, credentials, etc.).

List Agents

wowbits list agents

Lists all agents available in the system.

Create

Create new resources.

Create Function

Register Python functions from your functions directory:

wowbits create function [--dir PATH]

Options:

  • --dir PATH: Custom functions directory (default: WOWBITS_ROOT_DIR/functions)

What it does:

  • Scans the functions directory for .py files
  • Installs dependencies from functions/requirements.txt if present
  • Registers functions in the database
  • Updates existing functions if they already exist

Function Structure: Place your Python functions in WOWBITS_ROOT_DIR/functions/. Each .py file should contain a function with the same name as the file (without .py extension).

Example: functions/my_function.py should contain a function named my_function.

Create Connector

Create a new connector (API credentials, etc.):

wowbits create connector [--provider PROVIDER] [--config JSON]

Options:

  • --provider PROVIDER: Provider name (e.g., openai, anthropic)
  • --config JSON: JSON configuration string (if omitted, interactive mode is used)

Interactive Mode: If --config is not provided, the CLI will prompt you for configuration values:

wowbits create connector --provider openai

JSON Config Mode: Provide configuration as a JSON string:

wowbits create connector --provider openai --config '{"api_key": "sk-..."}'

Available Providers: Run wowbits list providers (if available) or check the providers configuration for supported providers.

Create Agent

Create an agent from a YAML configuration file:

wowbits create agent NAME [-c PATH]

Arguments:

  • NAME: Agent name (looks for WOWBITS_ROOT_DIR/agent_studio/NAME.yaml)
  • -c, --config PATH: Custom path to YAML configuration file (optional)

Example:

wowbits create agent my_agent

This will look for ~/wowbits/agent_studio/my_agent.yaml and create the agent based on that configuration.

Update

Update existing resources.

Update Connector

Update an existing connector's configuration:

wowbits update connectors NAME --config JSON

Arguments:

  • NAME: Connector name or ID
  • --config JSON: JSON configuration string

Example:

wowbits update connectors openai --config '{"api_key": "sk-new-key"}'

Delete

Delete resources.

Delete Connector

Remove a connector:

wowbits delete connectors NAME

Arguments:

  • NAME: Connector name or ID

Example:

wowbits delete connectors old_connector

Start

Start agents with the ADK server.

Start Agent

Start an agent server:

wowbits start agent NAME [--mode MODE] [--host HOST] [--port PORT]

Arguments:

  • NAME: Agent name

Options:

  • --mode, -m MODE: Execution mode - web (ADK web UI) or api (ADK API server only). Default: web
  • --host HOST: Host to bind the server to. Default: 0.0.0.0
  • --port, -p PORT: Port to run the server on. Default: 5151

Examples:

# Start agent with web UI (default)
wowbits start agent my_agent

# Start agent in API-only mode
wowbits start agent my_agent --mode api

# Start on custom host and port
wowbits start agent my_agent --host 127.0.0.1 --port 8080

# Stop the running agent
wowbits stop agent my_agent

Pull

Pull resources from remote repositories.

Pull Functions

Fetch Python functions from a GitHub repository:

wowbits pull functions [FUNCTION_NAMES...] --repo-url URL

Arguments:

  • FUNCTION_NAMES: Specific function names to pull, or * or omit to pull all functions

Options:

  • --repo-url URL: GitHub repository URL (required)

Examples:

# Pull all functions from a repo
wowbits pull functions --repo-url https://github.com/org/repo

# Pull specific functions
wowbits pull functions function1 function2 --repo-url https://github.com/org/repo

# Pull all functions (explicit)
wowbits pull functions * --repo-url https://github.com/org/repo

What it does:

  • Fetches .py files from the repository's functions/ directory (or repo root)
  • Saves them to WOWBITS_ROOT_DIR/functions/
  • Fetches requirements.txt if available
  • Registers/updates functions in the database

Examples

Complete Workflow Example

# 1. Initial setup
wowbits setup

# 2. Create a connector for OpenAI
wowbits create connector --provider openai
# Follow interactive prompts to enter API key

# 3. Pull functions from a repository
wowbits pull functions --repo-url https://github.com/org/my-functions

# 4. Or create functions locally
# Edit ~/wowbits/functions/my_function.py
wowbits create function

# 5. Create an agent from YAML config
# Edit ~/wowbits/agent_studio/my_agent.yaml
wowbits create agent my_agent

# 6. Start the agent
wowbits start agent my_agent

Function Example

Create a function file ~/wowbits/functions/calculate_sum.py:

def calculate_sum(a: int, b: int) -> int:
    """Add two numbers together."""
    return a + b

Then register it:

wowbits create function

Agent YAML Example

Create ~/wowbits/agent_studio/my_agent.yaml:

name: my_agent
description: A simple agent example
model: gpt-4
connector: openai
skills:
  - name: basic_skill
    tools:
      - calculate_sum

Then create the agent:

wowbits create agent my_agent

Multi-document YAML format: When using multiple YAML documents (e.g. tools, skills, and agents in one file), use the kind field with WowBits-prefixed values so you can easily filter WowBits configs on GitHub:

  • kind: wowbits_tool — tool definition
  • kind: wowbits_skill — skill definition
  • kind: wowbits_agent — agent definition

Legacy values tool, skill, and agent are still accepted.

Configuration

Configuration

  • WOWBITS_API_URL (required for CLI): Base URL of the WowBits API (e.g. http://localhost:8000).
  • WOWBITS_ROOT_DIR (required for API): Workspace path. Set when starting the API; one API process serves one workspace.
  • WOWBITS_DB_CONNECTION_STRING: Database URL. Set in workspace .env or before starting the API after running wowbits setup --db-url ....

Directory Structure

After running wowbits setup, your root directory will have this structure:

~/wowbits/
├── functions/          # Python function files
│   ├── __init__.py
│   ├── requirements.txt
│   └── *.py           # Your function files
├── agent_studio/      # Agent YAML configurations
│   └── *.yaml
├── agent_runner/      # Generated agent code
│   └── __init__.py
├── data/             # Data files
└── .env              # Environment configuration

Database Configuration

Database connection is configured in the .env file in your root directory. The setup command will prompt you for database credentials.

Troubleshooting

"WOWBITS_API_URL is not set"

Solution: Start the WowBits API (see Running the API), then set the URL:

export WOWBITS_API_URL=http://localhost:8000

Add to ~/.zshrc or ~/.bashrc to make it persistent.

Database Connection Errors

Solution: Check your .env file in WOWBITS_ROOT_DIR and verify database credentials are correct.

Function Not Found

Solution:

  1. Ensure the function file exists in WOWBITS_ROOT_DIR/functions/
  2. Run wowbits create function to register it
  3. Verify with wowbits list functions

Agent Creation Fails

Solution:

  1. Verify the YAML file exists at WOWBITS_ROOT_DIR/agent_studio/NAME.yaml
  2. Check YAML syntax for errors
  3. Ensure referenced connectors and functions exist

Port Already in Use

Solution: Use a different port:

wowbits start agent my_agent --port 8080

Getting Help

  • View help for any command: wowbits COMMAND --help
  • View general help: wowbits --help
  • Check version: wowbits --version

License

MIT License - see LICENSE file for details.

Support

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wowbits_cli-0.1.0b6.tar.gz (57.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wowbits_cli-0.1.0b6-py3-none-any.whl (73.9 kB view details)

Uploaded Python 3

File details

Details for the file wowbits_cli-0.1.0b6.tar.gz.

File metadata

  • Download URL: wowbits_cli-0.1.0b6.tar.gz
  • Upload date:
  • Size: 57.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for wowbits_cli-0.1.0b6.tar.gz
Algorithm Hash digest
SHA256 4173103bc048d355bcdfffe447f55964f2a9edb5f51b66297d6ca268689e3a91
MD5 479a44c55fa592bf01a4c63a77c5e0d6
BLAKE2b-256 e4edb12cbc4b1a283195b99154f87895b51adb820c7a3a2a2851223913155ab9

See more details on using hashes here.

File details

Details for the file wowbits_cli-0.1.0b6-py3-none-any.whl.

File metadata

  • Download URL: wowbits_cli-0.1.0b6-py3-none-any.whl
  • Upload date:
  • Size: 73.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for wowbits_cli-0.1.0b6-py3-none-any.whl
Algorithm Hash digest
SHA256 8a1b406e50094376c3c0c8f3ba66ec7408d3a4d6238edde33b4a09afd2249501
MD5 4c152827f8119d42dda91e384d69b33a
BLAKE2b-256 46bdf2b3ca696397f3cddd4908d16028b7800be9b40fc2b53f562f3139f10bce

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page