Skip to content

Releases: skanga/AIProxy

v5.3

Choose a tag to compare

@github-actions github-actions released this 24 Oct 09:14

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

Choose a tag to compare

@github-actions github-actions released this 19 Oct 23:44

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

Choose a tag to compare

@github-actions github-actions released this 03 Oct 20:27

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

Choose a tag to compare

@github-actions github-actions released this 03 Oct 02:08

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

Choose a tag to compare

@github-actions github-actions released this 01 Oct 12:31

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

Choose a tag to compare

@github-actions github-actions released this 01 Oct 11:43

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

Choose a tag to compare

@github-actions github-actions released this 30 Sep 22:19

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

Choose a tag to compare

@github-actions github-actions released this 30 Sep 19:39

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

Choose a tag to compare

@github-actions github-actions released this 30 Sep 06:10

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

v3.0.3

Choose a tag to compare

@github-actions github-actions released this 25 Sep 00:11

Full Changelog: v3.0.2...v3.0.3