diff --git a/README.md b/README.md index 1a9145c..ae1caf3 100644 --- a/README.md +++ b/README.md @@ -35,13 +35,28 @@ After setup and installing dependencies, you can run the proxy in either of thes ### 1. Recommended: Run via the CLI/main entrypoint ```bash -# Run as module: +# Run as module with environment variables: python -m claudex.main --host 0.0.0.0 --port 8082 --reload -# Or (if installed as a script): -claudex --host 0.0.0.0 --port 8082 --reload +# Or with command line arguments: +python -m claudex.main --target-api-base https://api.openrouter.ai/v1 --big-model openai/gpt-4.1 --small-model openai/gpt-4.1-mini --log-level INFO + +# Or if installed as a script: +claudex --host 0.0.0.0 --port 8082 --target-api-base https://api.openrouter.ai/v1 --big-model openai/gpt-4.1 --small-model openai/gpt-4.1-mini ``` +#### CLI Options + +- `--host` - Host to bind (default: 0.0.0.0) +- `--port` - Port to bind (default: 8082) +- `--reload` - Enable live-reload for development +- `--target-api-base` - Base URL for target OpenAI-compatible API +- `--big-model` - Target model for Claude Sonnet/larger models +- `--small-model` - Target model for Claude Haiku/smaller models +- `--log-level` - Logging level (DEBUG, INFO, WARNING, ERROR) + +Note: The API key must still be provided via the TARGET_API_KEY environment variable for security reasons. + ### 2. Alternative: Run directly with Uvicorn ```bash diff --git a/claudex/main.py b/claudex/main.py index 4efc435..8142200 100644 --- a/claudex/main.py +++ b/claudex/main.py @@ -1,4 +1,5 @@ import uvicorn +import os from .proxy import app def main(): @@ -7,8 +8,22 @@ def main(): parser.add_argument('--host', default='0.0.0.0', help='Host to bind (default: 0.0.0.0)') parser.add_argument('--port', type=int, default=8082, help='Port to bind (default: 8082)') parser.add_argument('--reload', action='store_true', help='Enable live-reload (for development)') + parser.add_argument('--target-api-base', help='Base URL for target OpenAI-compatible API (default: from TARGET_API_BASE env)') + parser.add_argument('--big-model', help='Target model for Claude Sonnet/larger models (default: from BIG_MODEL_TARGET env)') + parser.add_argument('--small-model', help='Target model for Claude Haiku/smaller models (default: from SMALL_MODEL_TARGET env)') + parser.add_argument('--log-level', choices=['DEBUG', 'INFO', 'WARNING', 'ERROR'], default=None, help='Logging level (default: from LOG_LEVEL env)') args = parser.parse_args() + # Set environment variables from CLI arguments if provided + if args.target_api_base: + os.environ['TARGET_API_BASE'] = args.target_api_base + if args.big_model: + os.environ['BIG_MODEL_TARGET'] = args.big_model + if args.small_model: + os.environ['SMALL_MODEL_TARGET'] = args.small_model + if args.log_level: + os.environ['LOG_LEVEL'] = args.log_level + uvicorn.run("claudex.proxy:app", host=args.host, port=args.port, reload=args.reload) if __name__ == "__main__":