Claude’un aylık aboneliğiniz var ama API erişiminiz yok mu? Ya da birden fazla OAuth token’ınız var ve bunları verimli şekilde kullanmak mı istiyorsunuz? Airoxy tam olarak bu sorunu çözmek için geliştirdiğim açık kaynaklı bir Anthropic API proxy sunucusu.
Airoxy Nedir?
Airoxy, Claude API isteklerini şeffaf bir şekilde Anthropic’e ileten, arada token rotasyonu, maliyet takibi ve loglama yapan bir proxy katmanıdır. Laravel Octane + FrankenPHP üzerine inşa edilmiştir ve yüksek eşzamanlılık (concurrency) için optimize edilmiştir.
En önemli özelliği: Claude Pro/Team/Enterprise aboneliğinizin OAuth token’larını kullanarak, normal API gibi istek atmanızı sağlar. Yani API kredisi satın almadan, mevcut aboneliğinizle API erişimi elde edersiniz.
Client ──► Airoxy ──► Anthropic
(auth) (round-robin)
İstemci tarafında tek yapmanız gereken base URL’i ve x-api-key header’ını değiştirmek — başka hiçbir kod değişikliği gerekmez.
Neden Airoxy?
- Abonelik ile API kullanımı: Claude subscription’ınızın OAuth token’larını API gibi kullanın
- Token rotasyonu: Birden fazla token ekleyin, Airoxy bunları round-robin ile otomatik döndürsün
- Rate limit yönetimi: 429/529 hatasında otomatik olarak sonraki token’a geçiş
- Maliyet takibi: Her istek için tahmini maliyet hesaplama
- Tam şeffaflık: İstek gövdesi byte-for-byte iletilir, Airoxy sadece
modelvestreamalanlarını okur - Gerçek zamanlı streaming: SSE (Server-Sent Events) desteği ile sıfır tamponlama
Kurulum
Airoxy’nin kurulumu tek komutla yapılır. Ubuntu sunucunuzda şu komutu çalıştırmanız yeterli:
curl -fsSL https://raw.githubusercontent.com/oralunal/airoxy/main/install.sh | sudo bash
Bu script otomatik olarak şunları yapar:
- PHP 8.5+ kurulumu (Ondrej PPA üzerinden)
- Git kurulumu
- Gerekli PHP eklentileri (curl, mbstring, sqlite3, openssl, tokenizer, xml)
- Composer kurulumu
- Supervisor kurulumu ve yapılandırması
- Repo’yu
/var/www/airoxydizinine klonlama - Bağımlılıkların yüklenmesi
- SQLite veritabanı oluşturma ve migration’ları çalıştırma
- FrankenPHP kurulumu (Laravel Octane ile)
- Dosya izinlerinin ayarlanması
- Global
airoxykomutunun oluşturulması - Logrotate yapılandırması
Tek gereksinim: Ubuntu. Geri kalan her şey otomatik kurulur.
Hızlı Başlangıç
Kurulum tamamlandıktan sonra 4 adımda hazırsınız:
# 1. Claude OAuth token'ınızı ekleyin
airoxy token:add sk-ant-oat01-xxx sk-ant-ort01-xxx --name="Token 1"
# 2. Ya da Claude Code credential dosyasından otomatik import edin
airoxy token:auto
# 3. İstemciniz için bir API anahtarı oluşturun
airoxy api-key:add --name="Uygulamam"
# => ak-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (sadece bir kez gösterilir)
Artık istemciniz http://localhost:3800/v1/messages adresine istek atabilir.
Claude Subscription Token’ları Nasıl Çalışır?
Airoxy’nin en güçlü özelliği, Claude aboneliğinizin OAuth token’larını kullanabilmesidir. İşte akış:
- Claude Code veya Claude.ai’dan OAuth token’ınızı (
sk-ant-oat01-*) ve refresh token’ınızı (sk-ant-ort01-*) alırsınız airoxy token:autokomutuyla~/.claude/.credentials.jsondosyasından otomatik import edebilirsiniz- Airoxy bu token’ları kullanırken gerekli header’ları otomatik ekler:
Authorization: Bearerformatında kimlik doğrulamaanthropic-betaflag’leri- OAuth için gerekli
user-agentvex-appheader’ları
- OAuth token’ları için gerekli olan Claude Code sistem prompt’u otomatik enjekte edilir
- Token’lar her 6 saatte bir otomatik yenilenir (OAuth2 refresh flow)
- Claude Code sizden önce refresh token sürecini çalıştırabilir. Bu nedenle Claude Code’da yeni /login yapmanız tavsiye edilir.
Yani siz sadece token’ı bir kez eklersiniz, gerisini Airoxy halleder.
Tüm Komutlar
Servis Yönetimi
| Komut | Açıklama |
|---|---|
sudo airoxy start | Servisleri başlat |
sudo airoxy stop | Servisleri durdur |
sudo airoxy restart | Servisleri yeniden başlat |
airoxy status | Servis durumunu göster |
Access Token Yönetimi (Anthropic OAuth)
Airoxy’nin Anthropic’e istek atarken kullandığı token’lar. Birden fazla token ekleyerek round-robin rotasyon yapabilirsiniz.
| Komut | Açıklama |
|---|---|
airoxy token:add {token} {refresh_token} --name= --expires-in=28800 | Manuel token ekleme |
airoxy token:auto | Claude Code credential’larından otomatik import |
airoxy token:auto --dry-run | Import edilecekleri önizle |
airoxy token:list | Tüm token’ları listele (maskelenmiş) |
airoxy token:remove {id} | Token sil |
airoxy token:refresh | Tüm token’ları yenile |
airoxy token:refresh --id=1 | Belirli bir token’ı yenile |
API Key Yönetimi (İstemci Kimlik Doğrulama)
İstemcilerin Airoxy’ye bağlanırken kullandığı anahtarlar. Otomatik üretilir (ak- ön ekiyle).
| Komut | Açıklama |
|---|---|
airoxy api-key:add --name="Uygulamam" | Yeni API anahtarı oluştur (bir kez gösterilir) |
airoxy api-key:list | Tüm anahtarları listele (maskelenmiş) |
airoxy api-key:remove {id} | Anahtar sil |
airoxy api-key:toggle {id} | Aktif/pasif yap |
Log ve İstatistik
| Komut | Açıklama |
|---|---|
airoxy logs | Son 50 istek logunu göster |
airoxy logs --limit=100 | Son 100 log |
airoxy logs --today | Bugünkü loglar |
airoxy logs --date=2026-04-06 | Belirli bir tarihin logları |
airoxy logs --token={id} | Belirli bir token’a göre filtrele |
airoxy stats | Genel istatistikler |
airoxy stats --today | Bugünkü istatistikler |
airoxy stats --month | Bu ayki istatistikler |
Sistem Yönetimi
| Komut | Açıklama |
|---|---|
sudo airoxy update | Son kodu çek, bağımlılıkları güncelle, migrate et, yeniden başlat |
sudo airoxy doctor | Sistem sağlık kontrolü ve otomatik düzeltme |
sudo airoxy uninstall | Airoxy’yi tamamen kaldır (onay ile) |
Özellikler Detaylı
Şeffaf Proxy
Airoxy, istek gövdesini olduğu gibi Anthropic’e iletir. Tools, thinking, metadata gibi tüm Anthropic parametreleri şeffaf bir şekilde geçer. Airoxy sadece loglama için model ve stream alanlarını okur — geri kalanına dokunmaz.
Gerçek Zamanlı SSE Streaming
Streaming istekler için native cURL CURLOPT_WRITEFUNCTION callback’i kullanılır. Bu sayede her SSE chunk’ı anında istemciye iletilir — tamponlama (buffering) sıfırdır. Claude Code gibi streaming gerektiren uygulamalar sorunsuz çalışır.
Round-Robin Token Rotasyonu
Birden fazla access token eklediğinizde, Airoxy her istekte en az kullanılan (LRU – Least Recently Used) token’ı seçer. Eğer bir token rate limit (429) veya overloaded (529) hatası alırsa, otomatik olarak sonraki token’a geçiş yapar. Tüm token’lar tükenene kadar denemeye devam eder.
OAuth2 Token Yenileme
OAuth token’ları varsayılan olarak her 6 saatte bir otomatik yenilenir. Yenileme süresi .env dosyasından ayarlanabilir. Ard arda 3 başarısız yenileme denemesinden sonra token otomatik olarak devre dışı bırakılır.
Maliyet Tahmini
Her istek için input token, output token, cache oluşturma ve cache okuma token’larına göre maliyet hesaplanır. Desteklenen tüm Claude modelleri için fiyatlandırma tablosu config/airoxy.php içinde tanımlıdır:
| Model | Input (1M token) | Output (1M token) |
|---|---|---|
| claude-opus-4-6 | $15.00 | $75.00 |
| claude-sonnet-4-6 | $3.00 | $15.00 |
| claude-haiku-4-5 | $0.80 | $4.00 |
| claude-opus-4-5 | $15.00 | $75.00 |
| claude-sonnet-4-5 | $3.00 | $15.00 |
| claude-opus-4-1 | $15.00 | $75.00 |
| claude-opus-4-0 | $15.00 | $75.00 |
| claude-sonnet-4-0 | $3.00 | $15.00 |
| claude-3-haiku | $0.25 | $1.25 |
Log Saklama ve İstatistikler
Detaylı istek logları varsayılan olarak 3 gün saklanır. Loglar silinmeden önce günlük istatistiklere (daily stats) dönüştürülür ve bu istatistikler kalıcı olarak saklanır. Böylece uzun vadeli kullanım trendlerinizi her zaman görebilirsiniz.
Zamanlanmış görevler:
- Token yenileme: Her 6 saatte bir
- İstatistik toplama: Her gün saat 01:00’de
- Log temizleme: Her gün saat 01:30’da
Doctor Komutu
airoxy doctor komutu sisteminizi 16 farklı kontrolle tarar ve sorunları otomatik düzeltir:
- PHP sürümü (8.5+)
- PHP eklentileri (curl, mbstring, sqlite3, openssl, tokenizer, xml)
- Composer kurulumu
- Supervisor kurulumu ve yapılandırması
.envdosyası veAPP_KEY- SQLite veritabanı varlığı ve izinleri
- Bekleyen migration’lar
- FrankenPHP kurulumu
- Dosya sahipliği (www-data)
- Airoxy ve scheduler süreç durumu
- Global alias
- Logrotate yapılandırması
Yapılandırma
/var/www/airoxy/.env dosyasını düzenleyerek ayarları değiştirebilirsiniz:
AIROXY_HOST=0.0.0.0 # Dinleme adresi
AIROXY_PORT=3800 # Dinleme portu
AIROXY_TOKEN_REFRESH_INTERVAL=360 # Token yenileme aralığı (dakika)
AIROXY_LOG_RETENTION_DAYS=3 # Detaylı log saklama süresi (gün)
Kullanım Örneği
Standart istek:
curl http://sunucu-ip:3800/v1/messages
-H "content-type: application/json"
-H "x-api-key: ak-your-api-key-here"
-H "anthropic-version: 2023-06-01"
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Merhaba!"}]
}'
Streaming istek:
curl -N http://sunucu-ip:3800/v1/messages
-H "content-type: application/json"
-H "x-api-key: ak-your-api-key-here"
-H "anthropic-version: 2023-06-01"
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"stream": true,
"messages": [{"role": "user", "content": "Merhaba!"}]
}'
Laravel AI SDK ile kullanım — sadece environment variable’ları ayarlayın:
ANTHROPIC_BASE_URL=http://sunucu-ip:3800
ANTHROPIC_API_KEY=ak-your-api-key-here
Mimari
Airoxy şu teknoloji yığını üzerine inşa edilmiştir:
- Sunucu: Laravel Octane + FrankenPHP (yüksek performanslı, kalıcı worker’lar)
- Veritabanı: SQLite (hafif, kurulum gerektirmez)
- Süreç Yönetimi: Supervisor (otomatik yeniden başlatma)
- Log Rotasyonu: Logrotate (aylık, sıkıştırılmış, 3 ay saklama)
- Framework: Laravel 13, PHP 8.5
airoxy/
app/Services/
ProxyService.php # Çekirdek proxy mantığı (stream + non-stream)
StreamHandler.php # SSE chunk ayrıştırma, token sayma
AccessTokenRotator.php # Round-robin token seçimi
TokenRefresher.php # OAuth2 token yenileme
CostCalculator.php # Maliyet hesaplama
app/Http/
Middleware/AuthenticateToken.php # API key doğrulama
Controllers/ProxyController.php # İstek yönlendirici
app/Console/Commands/ # Tüm CLI komutları
config/airoxy.php # Fiyatlandırma, OAuth2 ayarları
Sağlık Kontrolü
Airoxy’nin çalışıp çalışmadığını kontrol etmek için:
GET http://sunucu-ip:3800/health
Kimlik doğrulama gerektirmez.
Sonuç
Airoxy, Claude aboneliğinizi bir API sunucusuna dönüştürmenin en kolay yoludur. Tek komutla kurulur, birden fazla token’ı otomatik döndürür, maliyetleri takip eder ve gerçek zamanlı streaming destekler.
Projenin kaynak kodu açıktır ve GitHub’da mevcuttur:
GitHub: github.com/oralunal/airoxy
Lisans: MIT