Aperture CLI
Aperture is a command-line interface (CLI) that dynamically generates commands from OpenAPI 3.x specifications. It's designed to provide a secure, reliable, and introspectable "tool-use" endpoint for autonomous AI agents and automated systems.
Features
- OpenAPI-Native: Directly consumes standard OpenAPI 3.x documents as the single source of truth
- Dynamic & Performant: Generates commands at runtime from pre-validated, cached API specifications
- Agent-First Design: Optimized for programmatic use with structured I/O, JSON output modes, and actionable errors
- Secure & Robust: Enforces strict separation of configuration from secrets using environment variables
- Spec Validation: Validates OpenAPI specs during registration with clear error messages for unsupported features
Architecture
Aperture follows a two-phase approach:
- Setup Phase (
aperture config add): Parses, validates, and caches OpenAPI specifications - Runtime Phase (
aperture <context> <command>): Loads cached specs for fast command generation and execution
Configuration Structure
~/.config/aperture/
├── specs/ # Original OpenAPI specification files
├── .cache/ # Pre-processed binary cache files
└── config.toml # Global configuration (optional)
Security Model
Authentication is handled through custom x-aperture-secret extensions in OpenAPI specs that map security schemes to environment variables:
components:
securitySchemes:
apiToken:
type: http
scheme: bearer
x-aperture-secret:
source: env
name: API_TOKEN
Installation
Using Cargo (Recommended)
Build from Source
## Getting Started
### Basic Usage
Base URL Management
Aperture provides flexible base URL configuration for different environments:
# Set a custom base URL for an API (overrides spec and environment variables)
# Configure environment-specific URLs
# View current URL configuration
# List all configured URLs across APIs
# Use environment-specific URL
APERTURE_ENV=staging
URL Resolution Priority:
- Explicit test parameter (for testing)
- Per-API configuration (with environment support)
APERTURE_BASE_URLenvironment variable (global override)- OpenAPI spec server URL (default)
- Fallback URL (
https://api.example.com)
Agent-Friendly Features
# Get JSON description of all available commands
# Output errors as structured JSON
# Preview request without execution
# Add idempotency key for safe retries
Development
This project is built with Rust and follows Test-Driven Development practices.
Prerequisites
- Rust (latest stable version)
- Cargo
Development Commands
# Build the project
# Run all tests
# Run tests for specific module
# Format code
# Check formatting and linting
# Run with debug output
RUST_LOG=debug
Testing
The project uses comprehensive testing strategies:
- Unit Tests: Located in
tests/directory - Integration Tests: End-to-end CLI testing using
assert_cmd - HTTP Mocking: API interaction testing using
wiremock
# Run integration tests
# Run with HTTP mocking
Project Status
This project is currently in active development. See docs/plan.md for detailed implementation progress and docs/architecture.md for the complete software design specification.
License
Licensed under the MIT License. See LICENSE for details.