CLI and API for 10xscale AgentFlow
Project description
10xScale Agentflow CLI
10xScale Agentflow CLI turns an Agentflow CompiledGraph into a production-grade FastAPI service, plus a Typer-based command line to scaffold, run, build, test, and evaluate it. You write a graph, point agentflow.json at it, and agentflow api serves it over REST + WebSocket with authentication, rate limiting, media handling, checkpointer/thread management, and a memory store API.
๐ฆ Part of the 10xScale Agentflow library
This package (
10xscale-agentflow-cli) is the API server + CLI layer of the larger 10xScale Agentflow framework. The core orchestration engine โStateGraph,Agent,ToolNode, state, persistence, memory, and tools โ lives in the separate10xscale-agentflowpackage. This CLI builds on top of it to expose your agent graphs as a deployable service.
- Core framework:
10xscale-agentflowยท source- This package (API + CLI):
10xscale-agentflow-cli- TypeScript client:
@10xscale/agentflow-client- Docs: agentflow.10xscale.ai
โจ Key Features
- ๐ฅ๏ธ Professional CLI - Scaffold, run, build, test, and evaluate agents from one command line
- โก FastAPI Backend - Your compiled graph auto-served over REST + WebSocket, high-performance and async
- ๐ Config-Driven - One
agentflow.jsonwires agent, auth, checkpointer, store, Redis, and rate limits - ๐ Authentication - Built-in JWT auth, custom
BaseAuthbackends, and RBAC authorization - ๐ฆ Rate Limiting - Sliding-window limits with memory, Redis, or custom backends
- ๐ Distributed IDs - Snowflake ID generation for multi-node deployments
- ๐งต Thread Management - Conversation thread naming, listing, state, and message APIs
- ๐ผ๏ธ Multimodal & Media - File upload/download endpoints and media handling for multimodal agents
- ๐๏ธ Realtime Audio Bridge - WebSocket endpoint for live audio-to-audio agents (Gemini Live)
- ๐ณ Docker & Kubernetes Ready - Generate production Dockerfiles and compose files with one command
- ๐ก๏ธ Production Hardening - Error/log sanitization, request size limits, security headers, startup validation
- ๐ Dependency Injection - InjectQ for clean, testable dependency wiring
Installation
Basic installation:
pip install 10xscale-agentflow-cli
Optional extras โ install only what you configure:
pip install "10xscale-agentflow-cli[redis]" # Redis rate-limit / cache backend
pip install "10xscale-agentflow-cli[jwt]" # JWT authentication
pip install "10xscale-agentflow-cli[media]" # Document text extraction (multimodal)
pip install "10xscale-agentflow-cli[otel]" # OpenTelemetry tracing
pip install "10xscale-agentflow-cli[snowflakekit]" # Snowflake ID generation
Requires Python โฅ 3.12. Depends on the core 10xscale-agentflow framework.
๐ Quick Start
# 1. Scaffold a project (interactive: dev vs production, auth, rate limiting)
agentflow init
# 2. Start the dev API server (127.0.0.1:8000)
agentflow api
# 3. Or start the server and open the hosted playground
agentflow play
# 4. Generate production Docker files
agentflow build --docker-compose
๐ฅ๏ธ CLI Commands
For detailed command documentation, see the CLI Guide.
agentflow init
Initialize a new project with configuration and a sample graph.
agentflow init # interactive (chooses dev vs production setup)
agentflow init --path ./my-app # custom directory
agentflow init --force # overwrite existing files
agentflow api
Start the development API server.
agentflow api # defaults (127.0.0.1:8000)
agentflow api --host 127.0.0.1 --port 9000 # custom host/port
agentflow api --config production.json # custom config file
agentflow api --no-reload # disable auto-reload
agentflow api --verbose # verbose logging
agentflow play
Start the dev server and open the hosted playground with your local backend URL preconfigured.
agentflow play
agentflow play --host 127.0.0.1 --port 9000
agentflow play --config production.json
agentflow build
Generate production Docker files.
agentflow build # Dockerfile
agentflow build --docker-compose # Dockerfile + docker-compose.yml
agentflow build --python-version 3.12 --port 9000
agentflow build --force
agentflow eval / agentflow test
Run agent evaluations (discovers *_eval.py / eval_*.py, writes HTML + JSON to eval_reports/) and project tests (pytest).
agentflow eval --parallel --threshold 0.8
agentflow test --coverage
agentflow skills
Install bundled coding-agent skills (Codex, Claude, GitHub Copilot) into your project so your AI assistant knows how to build with Agentflow.
agentflow skills --all # install for every supported agent
agentflow skills --agent claude # install for one
agentflow skills --list # show supported agents
agentflow version
Display CLI and package 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,
"rate_limit": {}
}
Configuration Options
| Field | Type | Description |
|---|---|---|
agent |
string | Path to your compiled agent graph, "module:attribute" (required) |
env |
string | Path to environment variables file |
auth |
null | "jwt" | object | Authentication configuration |
authorization |
string | null | Path to an AuthorizationBackend (RBAC / per-tool access) |
checkpointer |
string | null | Path to a custom checkpointer |
injectq |
string | null | Path to an InjectQ container |
store |
string | null | Path to a data store |
redis |
string | null | Redis connection URL |
rate_limit |
object | null | Sliding-window rate limiting configuration |
thread_name_generator |
string | null | Path to a custom thread name generator |
See the Configuration Guide for complete details.
๐ Authentication
Agentflow supports multiple authentication strategies. See the Authentication Guide for details.
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:
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]"
from agentflow_cli import SnowFlakeIdGenerator
generator = SnowFlakeIdGenerator(
snowflake_epoch=1704067200000, # Jan 1, 2024
snowflake_node_id=1,
snowflake_worker_id=1,
)
new_id = await generator.generate()
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()
# "thoughtful-dialogue", "exploring-ideas", ...
See the Thread Name Generator Guide for custom implementations.
๐ก๏ธ Security
Agentflow CLI provides production-grade security features.
- โ Authentication - 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
MODE=production # production mode
JWT_SECRET_KEY=<32+ chars> # strong secret (secrets.token_urlsafe(32))
IS_DEBUG=false # disable debug
ORIGINS=https://yourdomain.com # specific CORS origins (never *)
ALLOWED_HOST=yourdomain.com # specific allowed hosts (never *)
DOCS_PATH= # recommended: disable API docs
REDOCS_PATH=
MAX_REQUEST_SIZE=10485760 # request size limit (10MB default)
For deployment hardening and authentication patterns, see the Deployment Guide and Authentication Guide.
๐ณ Deployment
See the Deployment Guide for full instructions.
# Generate Docker files
agentflow build --docker-compose
# Build and run
docker compose up --build -d
# Check logs
docker compose logs -f
Cloud targets covered in the guide: AWS ECS, Google Cloud Run, Azure Container Instances, Kubernetes, and Heroku.
๐ Project Structure
agentflow-cli/
โโโ agentflow_cli/ # Main package
โ โโโ __init__.py # Package exports (BaseAuth, SnowFlakeIdGenerator, ThreadNameGenerator)
โ โโโ cli/ # Typer CLI: main.py + commands/ + templates/
โ โโโ src/app/ # FastAPI application (main.py, loader.py, core/, routers/, utils/)
โโโ docs/ # Documentation
โโโ tests/ # Test suite
โโโ agentflow.json # Configuration
โโโ pyproject.toml # Project metadata
โโโ README.md # This file
๐ง Development
# Clone and set up
git clone https://github.com/10xHub/agentflow-cli.git
cd agentflow-cli
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pre-commit install
# Quality gate
pytest # tests (coverage gate: 80%)
pytest --cov=agentflow_cli --cov-report=html
ruff check . && ruff format . # lint + format
pre-commit run --all-files # full gate (ruff + bandit, pinned versions)
Using the Makefile
make build # build sdist + wheel
make test # run tests
make test-cov # run tests with coverage
make publish # upload to PyPI (maintainers)
make clean # remove build artifacts
Releasing
Releases are cut by pushing a version tag that matches pyproject.toml. The
release.yml workflow then verifies the tag, builds the
sdist + wheel, checks the distribution metadata, and creates a GitHub Release with auto-generated
notes and the artifacts attached. PyPI publishing is manual (make publish).
git tag v0.3.2.9 && git push origin v0.3.2.9
๐ License
MIT License - see LICENSE for details.
๐ Links & Resources
- Documentation - Full framework docs
- Core framework (
10xscale-agentflow) - The orchestration engine this CLI serves - This repository - Source code and issues
- PyPI Project - Package releases
- Local docs - CLI, configuration, deployment, auth, rate limiting, IDs, thread names
๐ Contributing
Contributions are welcome! Fork the repo, create a feature branch, run tests and linting, and open a Pull Request. See the repository for issue reporting and guidelines.
๐ฌ Support
- Documentation: agentflow.10xscale.ai and local docs
- Issues: GitHub Issues
- Repository: GitHub
Developed by 10xScale and maintained by the community.
Made with โค๏ธ for the AI agent development community
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file 10xscale_agentflow_cli-0.4.0.tar.gz.
File metadata
- Download URL: 10xscale_agentflow_cli-0.4.0.tar.gz
- Upload date:
- Size: 199.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4488dded27f3a8c3b778b8281316711345f84d2fd84e55be1efa22128d2fa176
|
|
| MD5 |
84945a915f5736e0acdf16f5ca3df52f
|
|
| BLAKE2b-256 |
92d9caf5c74198c79af250562be05d5a66c419a8d60dcff0d2828abfa19a893c
|
File details
Details for the file 10xscale_agentflow_cli-0.4.0-py3-none-any.whl.
File metadata
- Download URL: 10xscale_agentflow_cli-0.4.0-py3-none-any.whl
- Upload date:
- Size: 247.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bcea288818deb8958203f7ef301979ee12be86137f1ee0164a40f5d2513d003d
|
|
| MD5 |
2eafda64297f7ddd58d178f666d34387
|
|
| BLAKE2b-256 |
de992d46a6939f8c700fc42c140d7e30860f8c5387e8eef9952b6fef4bc2e74a
|