Skip to content

Architecture

Layers

┌───���─────────────────────────────┐
│  Your code / CLI                │
├───────────────────────────────���─┤
│  kraube.Client                  │  ← entry point
│  ├── Messages.Create()          ���  ← sync request
│  ├── Messages.Stream()          │  ← SSE streaming
│  └── Messages.CountTokens()     │  ← token counting
├─────────────────────────────────┤
│  TokenProvider                  │  ← where token comes from
│  ├── tokenManager               │  ← auto-refresh access tokens
│  ├── envTokenManager            │  ← from env variable
│  └── CallbackTokenProvider      │  ← custom function
���─────────────────────────���───────┤
│  Auth (auth.go)                 │  ← OAuth PKCE + refresh
├─────────────────────────────────┤
│  HTTP Transport                 │  ← billing header, metadata
│  └── Chrome TLS (uTLS)         │  ← Cloudflare bypass
├─────────────────────────────���───┤
│  Types (types.go, request.go)   │  ← full API type coverage
├───────────────────────���─────────┤
│  net/http + encoding/json       │  ← stdlib
└──────���──────────────────────────��

File Organization

FileResponsibility
client.goClient struct, NewClient, HTTP transport, StreamReader
provider.goTokenProvider interface and built-in implementations
options.goFunctional options for NewClient
auth.goOAuth PKCE flow, token refresh, token persistence
types.goAPI data types: Message, ContentBlock, Tool, Schema
request.goRequest/Response structs, APIError, streaming events
models.goModel constants
transport.goChrome TLS fingerprint (uTLS)
ratelimit.goRate limit parsing and caching
log.goOptional slog-based logging

Released under the MIT License.