1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
[]
= "0.0.0.0:3000"
= 120
= 32
# Optional. Uncomment to cap in-flight requests.
# max_concurrent_requests = 128
# Optional. Uncomment to cap total requests per minute.
# rate_limit_per_minute = 600
# Optional non-streaming upstream resilience. Streaming requests are not retried.
# retry_attempts = 2
# retry_backoff_ms = 100
# circuit_breaker_failures = 5
# circuit_breaker_cooldown_secs = 30
[]
= "info"
= "text"
[]
= false
# api_keys_env = "FERRYLLM_API_KEYS"
# Optional per-client caps, keyed by the authenticated API key.
# per_key_rate_limit_per_minute = 120
# per_key_max_concurrent_requests = 8
[]
= true
[]
# LiteLLM-style automatic Anthropic cache breakpoint injection.
# This preserves client-provided cache_control and adds ephemeral breakpoints
# on stable system/tools/last user blocks when they are missing.
= true
= true
= true
= true
# OpenAI-compatible prompt cache routing key. Keep it stable; do not include
# request-specific conversation text in this value.
= "ferryllm"
# Optional, if the upstream accepts it.
# openai_prompt_cache_retention = "24h"
# Safe long-running diagnostic: logs request structure, lengths, and hashes
# without logging prompt text or tool-result bodies.
= true
# Claude Code may place a volatile line near the beginning of system text.
# Move the full line intersecting this byte range into a later user context
# block so stable system instructions remain first for provider prompt caches.
= "0..1"
# Temporary investigation only: this prints the relocated prompt text.
# Disable after confirming the moved line.
= false
# Strip transport metadata lines from system before forwarding.
= ["x-anthropic-billing-header:"]
[[]]
= "codexapis"
= "openai"
= "https://codexapis.com"
= "CODX_API_KEY"
[[]]
= "cc-gpt55"
= "exact"
= "codexapis"
= "gpt-5.4"
[[]]
= "claude-"
= "codexapis"
= "gpt-5.4"
[[]]
= "gpt-"
= "codexapis"
[[]]
= "grok-"
= "codexapis"
[[]]
= "*"
= "codexapis"
= "gpt-5.4"