Skip to main content

CLI and API for 10xscale AgentFlow

Project description

AgentFlow CLI

A professional Python API framework for building agent-based applications with FastAPI, state graph orchestration, and comprehensive CLI tools.

๐Ÿ“š Documentation

Quick Start

Installation

pip install 10xscale-agentflow-cli

Initialize a New Project

# Create project structure
agentflow init

# Or with production config
agentflow init --prod

Start Development Server

agentflow api

Start API With Play

agentflow play

Generate Docker Files

agentflow build --docker-compose

Key Features

  • โœ… CLI Tools - Professional command-line interface for scaffolding and deployment
  • โœ… State Graph Orchestration - Build complex agent workflows with LangGraph
  • โœ… FastAPI Backend - High-performance async web framework
  • โœ… Authentication - Built-in JWT auth and custom authentication support
  • โœ… ID Generation - Distributed Snowflake ID generation
  • โœ… Thread Management - Intelligent thread naming and conversation management
  • โœ… Docker Ready - Generate production-ready Docker files
  • โœ… Dependency Injection - InjectQ for clean dependency management
  • โœ… Development Tools - Hot-reload, pre-commit hooks, testing

CLI Commands

For detailed command documentation, see the CLI Guide.

agentflow init

Initialize a new project with configuration and sample graph.

# Basic initialization
agentflow init

# With production config (pyproject.toml, pre-commit hooks)
agentflow init --prod

# Custom directory
agentflow init --path ./my-project

# Force overwrite existing files
agentflow init --force

agentflow api

Start the development API server.

# Start with defaults (localhost:8000)
agentflow api

# Custom host and port
agentflow api --host 127.0.0.1 --port 9000

# Custom config file
agentflow api --config production.json

# Disable auto-reload
agentflow api --no-reload

# Verbose logging
agentflow api --verbose

agentflow play

Start the development API server and open the hosted playground with your local backend URL preconfigured.

# Start with defaults and open the playground
agentflow play

# Custom host and port
agentflow play --host 127.0.0.1 --port 9000

# Custom config file
agentflow play --config production.json

# Disable auto-reload
agentflow play --no-reload

agentflow build

Generate production Docker files.

# Generate Dockerfile
agentflow build

# Generate Dockerfile and docker-compose.yml
agentflow build --docker-compose

# Custom Python version and port
agentflow build --python-version 3.12 --port 9000

# Force overwrite
agentflow build --force

agentflow version

Display version information.

agentflow version

Configuration

The configuration file (agentflow.json) defines your agent, authentication, and infrastructure settings:

{
  "agent": "graph.react:app",
  "env": ".env",
  "auth": null,
  "checkpointer": null,
  "injectq": null,
  "store": null,
  "redis": null,
  "thread_name_generator": null
}

Configuration Options

Field Type Description
agent string Path to your compiled agent graph (required)
env string Path to environment variables file
auth null|"jwt"|object Authentication configuration
checkpointer string|null Path to custom checkpointer
injectq string|null Path to InjectQ container
store string|null Path to data store
redis string|null Redis connection URL
thread_name_generator string|null Path to custom thread name generator

See the Configuration Guide for complete details.

Authentication

AgentFlow supports multiple authentication strategies. See the Authentication Guide for complete details.

No Authentication

{
  "auth": null
}

JWT Authentication

agentflow.json:

{
  "auth": "jwt"
}

.env:

JWT_SECRET_KEY=your-super-secret-key
JWT_ALGORITHM=HS256

Custom Authentication

agentflow.json:

{
  "auth": {
    "method": "custom",
    "path": "auth.custom:MyAuthBackend"
  }
}

auth/custom.py:

from agentflow_cli import BaseAuth
from fastapi import Response, HTTPException
from fastapi.security import HTTPAuthorizationCredentials

class MyAuthBackend(BaseAuth):
    def authenticate(
        self,
        res: Response,
        credential: HTTPAuthorizationCredentials
    ) -> dict[str, any] | None:
        # Your authentication logic
        token = credential.credentials
        user = verify_token(token)

        if not user:
            raise HTTPException(401, "Invalid token")

        return {
            "user_id": user.id,
            "username": user.username,
            "email": user.email
        }

ID Generation

AgentFlow includes Snowflake ID generation for distributed, time-sortable unique IDs.

pip install "10xscale-agentflow-cli[snowflakekit]"

Usage:

from agentflow_cli import SnowFlakeIdGenerator

# Initialize
generator = SnowFlakeIdGenerator(
    snowflake_epoch=1704067200000,  # Jan 1, 2024
    snowflake_node_id=1,
    snowflake_worker_id=1
)

# Generate ID
id = await generator.generate()
print(f"Generated ID: {id}")

Environment Configuration:

SNOWFLAKE_EPOCH=1704067200000
SNOWFLAKE_NODE_ID=1
SNOWFLAKE_WORKER_ID=1
SNOWFLAKE_TIME_BITS=39
SNOWFLAKE_NODE_BITS=5
SNOWFLAKE_WORKER_BITS=8

See the ID Generation Guide for more details.

Thread Name Generation

Generate human-friendly names for conversation threads.

from agentflow_cli.src.app.utils.thread_name_generator import AIThreadNameGenerator

generator = AIThreadNameGenerator()
name = generator.generate_name()
# Output: "thoughtful-dialogue", "exploring-ideas", etc.

See the Thread Name Generator Guide for custom implementations.

Security

AgentFlow CLI provides enterprise-grade security features for production deployments.

Security Features

  • โœ… Authentication - Built-in JWT and custom authentication backends
  • โœ… Authorization - Resource-based access control with extensible backends
  • โœ… Request Limits - DoS protection with configurable size limits (default 10MB)
  • โœ… Error Sanitization - Production-safe error messages preventing information disclosure
  • โœ… Log Sanitization - Automatic redaction of sensitive data (tokens, passwords, secrets)
  • โœ… Security Warnings - Startup validation for insecure configurations
  • โœ… HTTPS Ready - SSL/TLS support with secure headers

Production Security Checklist

Before deploying to production, ensure:

# Required: Set production mode
MODE=production

# Required: Strong JWT secret (32+ characters)
JWT_SECRET_KEY=<generate-with-secrets.token_urlsafe(32)>

# Required: Disable debug mode
IS_DEBUG=false

# Required: Specific CORS origins (not *)
ORIGINS=https://yourdomain.com

# Required: Specific allowed hosts (not *)
ALLOWED_HOST=yourdomain.com

# Recommended: Disable API docs
DOCS_PATH=
REDOCS_PATH=

# Recommended: Configure request size limit
MAX_REQUEST_SIZE=10485760  # 10MB default

Quick Security Setup

1. Enable JWT Authentication:

{
  "auth": "jwt"
}

2. Implement Authorization:

# auth/rbac_backend.py
from agentflow_cli.src.app.core.auth.authorization import AuthorizationBackend

class RBACAuthorizationBackend(AuthorizationBackend):
    async def authorize(self, user, resource, action, resource_id=None, **context):
        role = user.get("role", "viewer")
        # Implement your authorization logic
        return role == "admin" or (role == "developer" and action == "read")

3. Configure in agentflow.json:

{
  "auth": "jwt",
  "authorization": {
    "path": "auth.rbac_backend:RBACAuthorizationBackend"
  }
}

Security Validation

AgentFlow automatically validates your configuration and warns about security issues:

โš ๏ธ  SECURITY WARNING: CORS ORIGINS='*' in production.
   Set ORIGINS to specific domains.

โš ๏ธ  SECURITY WARNING: DEBUG mode enabled in production!
   Set IS_DEBUG=false

Comprehensive Security Guide

For detailed security documentation, threat model, best practices, and deployment guidelines, see:

๐Ÿ“– SECURITY.md - Complete Security Guide

Topics covered:

  • Threat model and attack vectors
  • Authentication and authorization patterns
  • Production deployment checklist
  • Docker and Kubernetes security configurations
  • Security testing and monitoring
  • Incident response procedures
  • Vulnerability reporting

Deployment

See the Deployment Guide for complete deployment instructions.

Docker Deployment

# Generate Docker files
agentflow build --docker-compose

# Build and run
docker compose up --build -d

# Check logs
docker compose logs -f

Kubernetes

See Deployment Guide - Kubernetes for complete manifests.

Cloud Platforms

Project Structure

agentflow-cli/
โ”œโ”€โ”€ agentflow_cli/          # Main package
โ”‚   โ”œโ”€โ”€ __init__.py        # Package exports
โ”‚   โ”œโ”€โ”€ cli/               # CLI commands
โ”‚   โ”‚   โ”œโ”€โ”€ main.py       # CLI entry point
โ”‚   โ”‚   โ””โ”€โ”€ commands/     # Command implementations
โ”‚   โ””โ”€โ”€ src/              # Application source
โ”‚       โ””โ”€โ”€ app/          # FastAPI application
โ”‚           โ”œโ”€โ”€ main.py   # App entry point
โ”‚           โ”œโ”€โ”€ core/     # Core functionality
โ”‚           โ”œโ”€โ”€ routers/  # API routes
โ”‚           โ””โ”€โ”€ utils/    # Utilities
โ”œโ”€โ”€ graph/                 # Agent graphs
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ””โ”€โ”€ react.py          # Sample React agent
โ”œโ”€โ”€ docs/                  # Documentation
โ”œโ”€โ”€ tests/                 # Test suite
โ”œโ”€โ”€ agentflow.json        # Configuration
โ”œโ”€โ”€ pyproject.toml        # Project metadata
โ””โ”€โ”€ README.md             # This file

Development

Setup

# Clone repository
git clone https://github.com/10xHub/agentflow-cli.git
cd agentflow-cli

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install in development mode
pip install -e ".[dev]"

# Install pre-commit hooks
pre-commit install

Testing

# Run all tests
pytest

# With coverage
pytest --cov=agentflow_cli --cov-report=html

# Run specific test file
pytest tests/test_cli.py -v

Code Quality

# Format code
ruff format .

# Lint code
ruff check .

# Fix auto-fixable issues
ruff check --fix .

Using the Makefile

# Show available commands
make help

# Install development dependencies
make dev-install

# Run tests
make test

# Format and lint
make format
make lint

# Build package
make build

# Clean build artifacts
make clean

Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests and linting
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

License

MIT License - see LICENSE file for details.

Support

Credits

Developed by 10xScale and maintained by the community.


Made with โค๏ธ for the AI agent development community

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

10xscale_agentflow_cli-0.3.0.tar.gz (106.7 kB view details)

Uploaded Source

Built Distribution

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

10xscale_agentflow_cli-0.3.0-py3-none-any.whl (112.8 kB view details)

Uploaded Python 3

File details

Details for the file 10xscale_agentflow_cli-0.3.0.tar.gz.

File metadata

  • Download URL: 10xscale_agentflow_cli-0.3.0.tar.gz
  • Upload date:
  • Size: 106.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for 10xscale_agentflow_cli-0.3.0.tar.gz
Algorithm Hash digest
SHA256 34835408eac4a137d0931fad458bf31c061138d192deb7b45a58fb77a1641894
MD5 e078aad8cc2c5b2aa44e61b7f2584ac5
BLAKE2b-256 80f9bc56ef4004b9b9d8fb2d5f33565194331644c3a7c364e25bfb0f050f6d08

See more details on using hashes here.

File details

Details for the file 10xscale_agentflow_cli-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for 10xscale_agentflow_cli-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ccfd574dd6f62ddaae55a14a6bc0bd348008aafa876a38d78bb9f74cff5dca36
MD5 8accd5d0dea83248aee7edc62ba6d8a1
BLAKE2b-256 496f977988195f03510bb1476bc62f86969a79b22c326b95115ab3c0f9d0cfe6

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