Skip to content
48 linesCodeBlameRaw
1{
2 "$schema": "../../node_modules/wrangler/config-schema.json",
3 "name": "g1t-telemetry",
4 "account_id": "1e6f2cffa3f445920836e8ebe446bb58",
5 "compatibility_date": "2026-09-26",
6 "main": "./src/index.ts",
7 "workers_dev": false,
8 "placement": { "mode": "off" },
9 // The OpenTelemetry endpoint: OTLP over HTTP from anywhere, with a
10 // project's ingest token. Everything else here (RPC, the live tail) is
11 // for service bindings; the public paths are /v1/* and /cloudflare/v1/*.
12 "routes": [{ "pattern": "otel.g1t.sh", "custom_domain": true }],
13 // One store per project: its requests, logs, spans, metrics, error
14 // groups, ingest tokens and exports, in the object's own SQLite storage
15 // (src/store.ts). No D1. And one meter per workspace, by slug: what all
16 // its projects sent each day and month, and the plan billing last said
17 // it is on (src/meter.ts).
18 "durable_objects": {
19 "bindings": [
20 { "name": "STORES", "class_name": "TelemetryStore" },
21 { "name": "METERS", "class_name": "TelemetryMeter" }
22 ]
23 },
24 "migrations": [
25 { "tag": "v1", "new_sqlite_classes": ["TelemetryStore"] },
26 { "tag": "v2", "new_sqlite_classes": ["TelemetryMeter"] }
27 ],
28 // What the deployments service notes under each app's hostname (its
29 // project and deployment), read to file a request the dispatcher saw
30 // before its note reached it, and Cloudflare's own export. Read only.
31 "kv_namespaces": [{ "binding": "DOMAINS", "id": "14bc5c233d4c46a5bbf23b5367cce5fd" }],
32 // Whether a project's workspace has the plan: a free workspace's projects
33 // send FREE_TELEMETRY_BYTES_PER_MONTH (1 GiB) a month between them, a
34 // thirtieth a day; past it OTLP is answered 429 and tail events keep
35 // their requests only (src/quota.ts). 0 is no cap. On the plan, what is
36 // sent past it is reported to billing (note_pending, source telemetry).
37 "services": [{ "binding": "BILLING", "service": "g1t-billing" }],
38 "vars": { "FREE_TELEMETRY_BYTES_PER_MONTH": "1073741824" },
39 // Secret, optional: CLOUDFLARE_EXPORT_KEY, which a Workers
40 // Observability destination on the account sends as x-g1t-export-key
41 // to https://otel.g1t.sh/cloudflare/v1/{traces,logs}.
42 // OTLP requests per client address, counted before the body is read or a
43 // project's store is woken (src/index.ts). Id and limit: RATE_LIMITS in
44 // packages/contracts.
45 "ratelimits": [{ "name": "TELEMETRY_INGEST_LIMIT", "namespace_id": "4701", "simple": { "limit": 600, "period": 60 } }],
46 // Its own logs: few, as every request to an app is a tail event here.
47 "observability": { "enabled": true, "head_sampling_rate": 0.05 }
48}