a6 is a command-line tool for managing Apache APISIX from your terminal. It wraps the APISIX Admin API to provide convenient, scriptable access to routes, upstreams, services, consumers, SSL certificates, plugins, and more.
Built with an AI-first development approach — the codebase includes structured documentation and AI agent skills that enable autonomous development by coding agents.
- Resource CRUD — Create, list, get, update, and delete all 14 APISIX Admin API resources:
- Route, Upstream, Service, Consumer, SSL Certificate
- Plugin Config, Global Rule, Consumer Group
- Stream Route, Secret, Plugin Metadata, Proto
- Context management — Switch between multiple APISIX instances (
a6 context create,a6 context use,a6 context list) - Declarative configuration — Sync, dump, diff, and validate APISIX configuration from YAML files (
a6 config sync,a6 config dump,a6 config diff,a6 config validate) - Debug commands — Stream real-time APISIX error logs (
a6 debug logs) and trace request flow (a6 debug trace) - Rich output — Human-friendly tables in TTY, machine-readable JSON/YAML in pipes (
--output json|yaml|table) - Shell completions — Bash, Zsh, Fish, PowerShell (
a6 completion) - Self-update — Update the CLI binary to the latest version (
a6 update) - Export — Export resource configurations to standalone YAML or JSON (
a6 route export,a6 upstream export --label env=prod) - AI agent skills — 40 built-in SKILL.md files for AI coding agents to work effectively with APISIX
If you have Go 1.22+ installed:
go install github.com/api7/a6/cmd/a6@latestThis installs the a6 binary to your $GOPATH/bin (or $HOME/go/bin by default). Make sure it's in your PATH.
git clone https://github.com/api7/a6.git
cd a6
make build
# Binary is at ./bin/a6This walkthrough takes about 5 minutes and exercises most a6 features against a local APISIX instance.
- a6 installed (see Installation above)
- Docker with Docker Compose
# If you built from source, start APISIX from the repo directory:
docker compose -f test/e2e/docker-compose.yml up -d
# Wait ~10 seconds for APISIX to be ready, then verify
curl -s http://localhost:9180/apisix/admin/routes -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' | head -c 50# Create a context pointing to the local APISIX instance
a6 context create local --server http://localhost:9180 --api-key edd1c9f034335f136f87ad84b625c8f1
# Verify the active context
a6 context current
# List all contexts
a6 context list# Create an upstream pointing to httpbin
cat <<'EOF' > /tmp/upstream.json
{
"id": "httpbin",
"name": "httpbin",
"type": "roundrobin",
"nodes": {"httpbin:8080": 1}
}
EOF
a6 upstream create -f /tmp/upstream.json
# Create a route that references the upstream
cat <<'EOF' > /tmp/route.json
{
"id": "test-route",
"name": "test-route",
"uri": "/get",
"methods": ["GET"],
"upstream_id": "httpbin",
"labels": {"env": "test", "team": "backend"}
}
EOF
a6 route create -f /tmp/route.json# List all routes (table output in terminal)
a6 route list
# Get a specific route in JSON
a6 route get test-route --output json
# Get it in YAML
a6 route get test-route --output yaml
# List available plugins
a6 plugin list# Update the route to add a new method
cat <<'EOF' > /tmp/route-update.json
{
"id": "test-route",
"name": "test-route",
"uri": "/get",
"methods": ["GET", "POST"],
"upstream_id": "httpbin",
"labels": {"env": "test", "team": "backend"}
}
EOF
a6 route update test-route -f /tmp/route-update.json# Export all routes to YAML
a6 route export
# Export routes with a label filter
a6 route export --label env=test
# Dump the entire APISIX configuration to a YAML file
a6 config dump -f /tmp/apisix-dump.yaml
# Validate a config file
a6 config validate -f /tmp/apisix-dump.yaml
# Preview what a sync would change (dry run)
a6 config sync -f /tmp/apisix-dump.yaml --dry-run# Delete the route and upstream
a6 route delete test-route
a6 upstream delete httpbin
# Verify they're gone
a6 route list
a6 upstream list
# Stop the local APISIX stack
docker compose -f test/e2e/docker-compose.yml down- Go 1.22+
- Apache APISIX 3.x with Admin API enabled
The skills/ directory contains structured knowledge files (SKILL.md) that enable AI coding agents to configure APISIX through the a6 CLI. Skills are compatible with 39+ AI coding tools including Claude Code, OpenCode, Cursor, GitHub Copilot, and Windsurf.
| Category | Count | Examples |
|---|---|---|
| Shared | 1 | Core a6 conventions and patterns |
| Authentication | 5 | key-auth, jwt-auth, basic-auth, hmac-auth, openid-connect |
| Security & Rate Limiting | 4 | ip-restriction, cors, limit-count, limit-req |
| Traffic & Transformation | 5 | proxy-rewrite, response-rewrite, traffic-split, redirect, grpc-transcode |
| AI Gateway | 4 | ai-proxy, ai-prompt-template, ai-prompt-decorator, ai-content-moderation |
| Observability | 6 | prometheus, skywalking, zipkin, http-logger, kafka-logger, datadog |
| Advanced Plugins | 5 | serverless, ext-plugin, fault-injection, consumer-restriction, wolf-rbac |
| Operational Recipes | 5 | blue-green, canary, circuit-breaker, health-check, mTLS |
| Advanced Recipes | 3 | multi-tenant, api-versioning, graphql-proxy |
| Personas | 2 | operator, developer |
See docs/skills.md for the full skill format specification, taxonomy, and authoring guide.
- Product Requirements
- Development Roadmap
- AI Agent Skills Guide
- Architecture Decisions
- Admin API Reference
- Coding Standards
- Testing Strategy
- Documentation Maintenance
- AI Agent Guide
See AGENTS.md for development workflow, coding conventions, and how to add new commands.