Qhaway

npm @carloscortezcloud/qhaway · PyPI qhaway-trace

Agent observability — trace every LLM call, track cost per user/model, export to OpenTelemetry, visualize in Grafana. TypeScript and Python. Zero dependencies. Edge-native.

npm — TypeScript / Workers
npm install @carloscortezcloud/qhaway
pip — Python (OpenAI, Anthropic, LangChain)
pip install qhaway-trace

Subpackages

/trace

@carloscortezcloud/qhaway/trace

Span wrapper + storage adapters (D1, KV, Memory, Console).

/cost

@carloscortezcloud/qhaway/cost

Pricing DB + cost attribution. Aggregate by user/model/day.

/otel

@carloscortezcloud/qhaway/otel

OTLP/HTTP JSON exporter. Honeycomb, Grafana Tempo, Datadog, SigNoz.

/tinkuy

@carloscortezcloud/qhaway/tinkuy

TinkuyAgent plugin. Auto-instrument runs via hooks.

/mlflow

@carloscortezcloud/qhaway/mlflow

MLflow REST exporter. Batch + streaming modes.

QhawayTrace

The core trace wrapper. Wraps any async function with measurement.

import { QhawayTrace, ConsoleStorage } from '@carloscortezcloud/qhaway/trace';

const trace = new QhawayTrace(new ConsoleStorage(), {
  agent_id: 'my-agent',
});

const wrapped = trace.wrap(myLlmCall, {
  model: 'gpt-4o',
  provider: 'openai',
  user_id: 'user-123',
});

const result = await wrapped(prompt);
// Console: [Qhaway] gpt-4o | $0.00063 | 150->42 tok | 1234ms

Storage Adapters

ClassBest For
MemoryStorageDev/testing
ConsoleStorageDebug logging
D1StorageProduction (SQL queries, aggregation)
KVStorageHigh-scale writes at edge

QhawayCost

Built-in pricing DB for OpenAI, Anthropic, Google with fallback chain.

import { QhawayCost, aggregateByUser } from '@carloscortezcloud/qhaway/cost';

const cost = new QhawayCost();
const c = await cost.calculate('gpt-4o', 150, 42);
// → 0.00063

// Aggregation
const byUser = aggregateByUser(spans);
const byModel = aggregateByModel(spans);
const byDay = aggregateByDay(spans);

OTEL Export

Send traces to any OTEL-compatible backend. Zero protobuf dependencies.

import { QhawayOtelExporter, QhawayOtelStorage, CompositeStorage }
  from '@carloscortezcloud/qhaway/otel';

const otel = new QhawayOtelExporter({
  endpoint: 'https://api.honeycomb.io/v1/traces',
  headers: { 'X-Honeycomb-Team': process.env.HONEYCOMB_API_KEY },
  serviceName: 'my-agent',
});

const storage = new CompositeStorage([
  new ConsoleStorage(),
  new QhawayOtelStorage(otel),
]);

Prometheus Metrics

MetricTypeLabels
qhaway_cost_totalCountermodel, provider, user
qhaway_latency_secondsHistogrammodel
qhaway_tokens_input_totalCountermodel
qhaway_tokens_output_totalCountermodel
qhaway_calls_totalCountermodel, success

Edge Compatibility

Cloudflare WorkersNode.js 18+DenoBunAWS Lambda

Guides