Repository navigation
Releases: skanga/AIProxy
Release list
v5.3
AIProxy 5.3
Standardize operational logging and add a single-file request/response log
for comparing successful and failed HTTP calls.
Changes:
- Add --request-log-file ./logs/requests.jsonl. A filename enables append-only
JSONL logging of all completed HTTP requests, including successes, HTTP
errors, and authentication rejections, without other logging flags. - Capture original client headers/body, final HTTP status, request ID, and
buffered response body. Support logging.request_file in YAML and
AIPROXY_REQUEST_LOG_FILE in the environment. - Use SLF4J + Logback for structured operational/access logging on stderr,
with request-ID correlation, configurable levels, and external Logback
configuration support. Preserve normal CLI output on stdout. - Make error-only logs metadata-only by default. Use --error-log-bodies,
logging.error_bodies, or AIPROXY_ERROR_LOG_BODIES to opt into payload capture. - Record detected failures inside HTTP 200 streams without changing SSE bytes.
- Use the request-completion hook so authentication rejection does not skip
access/error/request-file logging. - Reuse bounded secret redaction and synchronized JSONL appends; document
privacy controls, collection, rotation, and retention responsibilities.
Migration and limitations:
- Error-only logs no longer include bodies unless explicitly enabled.
- Operational/access logs now go to stderr instead of stdout.
- Each captured body is capped at 256 KiB; oversized bodies are marked truncated.
- SSE response bodies are not buffered or captured. Incoming streaming requests
are logged, and detected stream failures have metadata records. - Unlimited body logging and full streamed-response capture are not implemented.
- Diagnostic file writes are synchronous. Protect files and manage retention
externally; prompts and tool output may remain sensitive despite redaction.
Validation:
- 803 Java tests and 33 offline Python tests pass.
- Fat JAR builds; version command reports AIProxy 5.3.
- Packaged CLI logging options and example configuration were checked.
- Live provider authentication/inference and load testing were not performed.
Requires Java 21 and an account with access to the selected provider/model.
Download AIProxy-5.3.jar and run:
java -jar AIProxy-5.3.jar serve --request-log-file ./logs/requests.jsonl
Full Changelog: v5.2...v5.3
v5.2
AIProxy 5.2
Add optional error-only logging with request and response details in a single
append-only JSONL file.
Changes:
- Enable logging with --error-log-file ./logs/errors.jsonl. No separate toggle
is needed; logging stays off when no filename is configured. - Append one JSON object per HTTP 4xx/5xx response, including timestamp,
request ID, method, path, status, response body, and original request
headers/body. Existing log entries are preserved. - Bound each body to 256 KiB and reuse sensitive-header and structured-secret
redaction. Mark unreadable request bodies without disrupting the response. - Serialize concurrent error writes and create parent directories as needed.
- Support logging.error_file in YAML and AIPROXY_ERROR_LOG_FILE in the
environment, independently of the full request log directory. - Document usage, privacy considerations, and limitations in README.
Successful requests and errors inside HTTP 200 SSE streams are not captured.
Logs may contain sensitive prompts and response text despite redaction;
protect the file and manage retention yourself.
Validation:
- 784 Java tests and 33 offline Python tests pass.
- Fat JAR builds with Java 21; version command reports AIProxy 5.2.
- Live provider authentication and inference were not tested for this release.
Requires Java 21 and an account with access to the selected provider/model.
Download AIProxy-5.2.jar and run:
java -jar AIProxy-5.2.jar --error-log-file ./logs/errors.jsonl
Full Changelog: v5.1...v5.2
v5.1
AIProxy 5.1
Expand offline regression coverage for authentication commands, request
validation, and streaming, with 136 additional Java tests since 5.0.
Changes:
- Cover auth status, credential redaction, login option forwarding, exit codes,
interruption handling, logout preservation, and key command behavior. - Test native OAuth endpoint trust, token lifetimes, account changes,
refresh identity preservation, and revocation responses. - Exercise malformed Chat Completions and Responses requests, along with
reasoning and tool-result content preservation. - Cover native Codex request restrictions and nested tool validation.
- Test invalid Messages stream lifecycles, incomplete frames, and handling
of future event and block types. - Remove the unused BoundedBodyReader.BodyTooLargeException.maximumBytes()
accessor. HTTP APIs and credential locations are unchanged.
Validation:
- 773 Java tests and 33 offline Python tests pass.
- Fat JAR builds with Java 21; version command reports AIProxy 5.1.
- Live provider authentication and inference were not tested for this release.
Requires Java 21 and an account with access to the selected provider/model.
Download AIProxy-5.1.jar and run:
java -jar AIProxy-5.1.jar --help
Full Changelog: v5.0...v5.1
v5.0
AIProxy 5.0
AIProxyOauth is now AIProxy, a local API proxy for GitHub Copilot,
ChatGPT/Codex, and Anthropic accounts.
Changes:
- Rename the product, release JAR, Maven coordinates, Java packages,
startup output, health service name, and application identity to AIProxy. - Use ~/.aiproxy/ for proxy-managed provider credentials on every platform.
- Separate CLI commands, runtime assembly, HTTP dispatch, provider backends,
and shared protocol translation into dedicated packages. - Add package-boundary checks and regression coverage for the refactor.
- Update client configuration exports, documentation, and release tooling.
- Update Jackson to 3.2.3.
Breaking changes:
- Download and run AIProxy-5.0.jar. The Maven coordinates are now
com.aiproxy:AIProxy and Java packages use com.aiproxy. - Existing managed credentials are not automatically migrated to ~/.aiproxy/.
Log in again or explicitly configure the existing credential files. - The health endpoint reports service AIProxy; application identity strings
also use the new name. - The Java launcher is com.aiproxy.ProxyApplication.
Validation:
- 637 Java tests and 33 offline Python tests pass.
- Fat JAR builds with Java 21; version command reports AIProxy 5.0.
- Live provider authentication and inference were not tested for this release.
Requires Java 21 and an account with access to the selected provider/model.
Download AIProxy-5.0.jar and run:
java -jar AIProxy-5.0.jar --help
Full Changelog: v4.2...v5.0
v4.2
AIProxyOauth 4.2
Discover provider-reported model limits and capabilities, and export client
configuration for Codex and pi.
Changes:
- Extend the OpenAI-compatible /v1/models response with OpenRouter-style
context/output limits, names, input modalities, and supported parameters. - Add aiproxy metadata for provider-qualified IDs, source, fetch time,
reported capabilities, reasoning efforts, endpoints, and Codex auth profile. - Retain Codex catalog metadata alongside cached model IDs and account filters.
- Read Anthropic limits from the catalog instead of assuming 200K context.
- Omit unknown limits and validate optional metadata without exposing raw
upstream catalog objects or model instructions. - Preserve native Anthropic model responses for Claude Code.
- Add scripts/export-client-config.py (Python 3.11+) for Codex TOML and pi
models.json snippets. Keep credentials in environment variables. - Run all offline Python tooling tests in the release workflow.
Compatibility:
- Existing OpenAI model fields, IDs, routing, and explicit overrides remain.
- Extra model fields are extensions; clients may need explicit configuration.
- The exporter requires verified overrides for missing required token limits.
- pi's standard adapter cannot use native Codex auth because it sends output
limits that the native profile rejects. Use another supported route. - Claude Code's native model picker still does not list Copilot models;
use explicit Copilot IDs advertising /v1/messages. - Live client behavior and live account metadata were not verified.
Validation:
- 620 Java tests and 33 offline Python tests pass.
- Fat JAR builds with Java 21; version command reports AIProxyOauth 4.2.
Requires Java 21 and an account with access to the selected provider/model.
See README.md for model metadata and client configuration instructions.
Download AIProxyOauth-4.2.jar and run:
java -jar AIProxyOauth-4.2.jar --help
Full Changelog: v4.1...v4.2
v4.1
AIProxyOauth 4.1
Keep all proxy-managed logins together in ~/.aiproxyoauth on every platform.
Changes:
- Default Copilot credentials to ~/.aiproxyoauth/copilot-auth.json.
- Default native Codex credentials to ~/.aiproxyoauth/codex-auth.json.
- Default Anthropic credentials to ~/.aiproxyoauth/anthropic-auth.json.
- Preserve explicit CLI > environment > YAML credential-path overrides.
- Preserve separate Codex CLI/device-login credential paths and discovery.
- Update configuration examples and add default-path and precedence tests.
Migration:
- Existing files are not automatically moved or discovered at the former
LOCALAPPDATA/AIProxyOauth, XDG_CONFIG_HOME/AIProxyOauth, or
~/.config/AIProxyOauth defaults. - Log in again to save credentials at the new defaults, or configure the
existing file paths for both login and serving. - In Codex auto mode, a missing native file at the new default allows CLI
credential discovery as usual. Use native mode to require native login. - This release changes directory organization; file-permission behavior
and plaintext credential storage are unchanged.
Validation:
- 613 Java tests and 7 offline Python compatibility-tool tests pass.
- Live provider login was not tested for this release.
Requires Java 21 and an account with access to the selected provider/model.
Download AIProxyOauth-4.1.jar and run:
java -jar AIProxyOauth-4.1.jar --help
Full Changelog: v4.0...v4.1
v4.0
AIProxyOauth 4.0
Connect Claude Code and other Anthropic Messages clients to eligible Copilot
models using explicit copilot/ names.
Changes:
- Route POST /v1/messages to Copilot only when the account model catalog
explicitly advertises that endpoint. Works on Copilot-only servers. - Preserve native request fields, tools, JSON responses, SSE events, and usage.
Forward validated version/beta headers using the proxy's Copilot credential. - Keep unqualified and anthropic/ Messages requests on Anthropic.
Unsupported models are rejected without provider or protocol failover. - Share bounded native response delivery, with disconnect and size-limit tests.
- Add Claude Code setup instructions, including effort=auto for Haiku.
Validation:
- 611 Java tests and 23 offline Python tests pass.
- Live Copilot Haiku tests passed for JSON, streaming, tool calls, and tool results.
- User confirmed Claude Code Sonnet and Haiku operation, including Haiku tools.
Limits:
- Native Copilot model-picker discovery and token counting are not included.
- Claude Code may show unrecognized-model and classifier billing notices.
- Copilot's upstream SSE terminator is preserved; the proxy adds no sentinel.
- Enterprise Cloud and other Claude Code features remain live-unverified.
Requires Java 21 and an account with access to the selected provider/model.
Download AIProxyOauth-4.0.jar and run:
java -jar AIProxyOauth-4.0.jar --help
Full Changelog: v3.1.1...v4.0
v3.1.1
AIProxyOauth 3.1.1
Clearer startup diagnostics, consistent test-model selection, and a README
focused on downloading and using the proxy.
Changes:
- Startup Auth lines consistently identify credential sources and profiles.
- Model status distinguishes discovery, fresh/stale caches, built-in fallback,
configured lists, and unavailable catalogs across providers. - Discovery failures appear in startup warnings. Doctor reports degraded
catalogs with a nonzero exit code. - Startup inference checks prefer the first model containing luna or haiku
(case-insensitive), otherwise the last model in the list. - Remove unchecked compiler warnings from native OAuth and transport tests.
- Rewrite the README around release downloads, login, client setup,
configuration, API keys, and troubleshooting.
Requires Java 21. Provider login and inference depend on account access.
Live provider access was not retested for this release.
Download AIProxyOauth-3.1.1.jar and run:
java -jar AIProxyOauth-3.1.1.jar --help
Full Changelog: v3.1...v3.1.1
v3.1
AIProxyOauth 3.1
Adds native OpenAI / ChatGPT authentication, remote sign-in options, and
consistent configuration and diagnostic behavior across providers.
Authentication:
- Native ChatGPT login/logout with PKCE, verified ID tokens, separate secure
credential storage, atomic token refresh, and native API routing. - Explicit auto/native/cli credential selection. Invalid selected credentials
fail without silently falling back to another account or profile. - OpenAI device login: auth codex login --device-auth delegates to the official
Codex CLI and stores CLI-profile credentials. Requires Codex CLI on PATH;
serve with --codex-auth-mode cli and the same credential path. - Anthropic remote browser login: auth anthropic login --no-browser prints a
URL to open on another device, then accepts the returned code#state.
This is authorization-code login, not a device-code grant.
Settings and behavior fixes:
- Anthropic auth commands honor effective CLI/environment/YAML settings.
- Codex aliases resolve consistently after provider selection, including
provider-qualified model names. - Strict YAML section and leaf-type validation; irrelevant lower-precedence
instruction files no longer affect higher-precedence instruction modes. - Reject misplaced root options before subcommands.
- Startup probes use the initialized API key store.
- Diagnostics initialize independently of serving; IPv6 loopback host syntax
is normalized before applying local-host rules. - Configuration output includes nonsecret effective settings and provider order.
Compatibility and limitations:
- Existing Codex CLI credentials remain supported. Native credentials use the
public OpenAI API profile and its documented preview request limitations. - Native logout preserves external CLI credentials. Restart running proxies
after changing login or credential profile. - Live account login and inference have not been verified for the new flows.
Native preview protocol changes may require future maintenance.
Verification:
- mvn package: 576 tests passed; fat JAR built successfully.
- python -m unittest scripts/test_live_compatibility.py: 7 tests passed.
- Packaged --version reports AIProxyOauth 3.1.
Requires Java 21.
Download AIProxyOauth-3.1.jar and run:
java -jar AIProxyOauth-3.1.jar --help
Full Changelog: v3.0.3...v3.1