TC 02Vaethra reference

Architecture

How the system is put together: every component, every trust boundary, every external service, and what moves between them.

Production regions
global edge + AWS us-east-2
Environments
production, preview, local
Model inference
inside Cloudflare
Reviewed
7 September 2026
01System overview

Four planes, and what crosses between them

  ─────────────────────────────────────────── PUBLIC INTERNET ──────────

    Browser                     API client                  Upstream
    (Terminal,                  (issued key)                data sources
     Atropos, site)                                         (55 public feeds)
        │                            │                            │
        │ TLS 1.3                    │ TLS 1.3                    │ TLS,
        ▼                            ▼                            │ outbound only
  ══════════════════════════ CLOUDFLARE EDGE ═══════════════════════════
                                                                  │
    Pages ─── static HTML, no execution                            │
    Workers ─ the API. Stateless. Rate-limited. Key check. ◄───────┘
        │       Licence filter. Responses cached by class.
        │
        ├── KV .............. cache, cursors, counters   (reconstructible)
        ├── R2 .............. bulk extracts, scene cache (reconstructible)
        ├── Durable Objects . coordination locks         (reconstructible)
        ├── Workers AI ...... extraction + embeddings    (stays in Cloudflare)
        └── Hyperdrive ...... pooled DB connections
                │
                │ TLS, Cloudflare private network
                ▼
  ═══════════════════ SUPABASE — AWS us-east-2 ═════════════════════════

    PostgreSQL 17  ── the durable record
      • Row-level security, deny by default, on 50 of 50 tables
      • Public role: execute permission on 0 of 77 functions
      • pgvector (HNSW), pg_trgm, pg_cron
        ▲
        │ privileged role, never leaves this boundary
        │
    Database function (Deno) ◄──── shared secret + fixed operation allowlist
  ──────────────────────────────────────────────────────────────────────
  

Three properties of this design answer most of the questions that follow.

  • Connections to upstream sources are outbound only. No provider connects to us. We fetch on a schedule, and the request carries nothing beyond a Vaethra user-agent string.
  • A request never waits on an upstream provider. Reads are answered from our own store, so a provider outage affects freshness rather than availability, and is shown on the public sources panel.
  • The privileged database credential never crosses the database provider's boundary. The application holds a shared secret; the database-side function holds the role. Compromise of the application's secrets does not yield database superuser access.
02Environments

Production, preview and local, and what each can reach

EnvironmentPurposeReaches production data
Production api.vaethra.com, terminal.vaethra.com, atropos.vaethra.com, vaethra.com Yes
Preview Per-branch deployments of the static site No — static HTML only, no secrets bound, no database binding
Local developmentAn engineer's machine No by default. Local runs use a local store with synthetic fixtures. Reaching production requires deliberately supplying production credentials, which is treated and recorded as production access.

There is no shared staging environment holding a copy of production data. This is deliberate: a staging copy is a second copy of the data under weaker controls, and is a common source of exposure. Changes are validated by an automated suite against fixtures, then deployed as an immutable version that can be rolled back in about a minute. See development.

03Data flows

Every flow, and what it contains

FlowDirectionContents
Source ingestionVaethra to provider, outbound An HTTP request and a user-agent. Where a provider requires a key, ours. Nothing relating to any customer.
Record write Application to database function to PostgreSQL Public-source records: events, entities, observations, graph edges, and a revision hash for each
API readClient to application to cache or PostgreSQL The record, filtered by licence class. The request is logged against the key.
Terminal and Atropos readBrowser to application The same records. No account, no cookie, no session identifier.
Text extraction Application to Workers AI, inside Cloudflare Headline and summary text from public sources
Embeddings Application to Workers AI, inside Cloudflare Event titles and entity names
Bulk extractScheduled job to object storage to client Pre-built event files, excluding restricted licence classes
Webhook alertApplication to the URL you registered The event that matched your rule
Operational alertApplication to our incident channel Problem descriptions and counts. No customer data.
04AI and model processing

Inference runs inside Cloudflare and text does not leave it

  • Two models, both on Cloudflare Workers AI, which executes within Cloudflare's own network: @cf/meta/llama-3.1-8b-instruct-fast for text extraction and relationship assessment, and @cf/baai/bge-base-en-v1.5 for embeddings.
  • No external model provider is called. There is no request to OpenAI, Anthropic or any other model API on any code path.
  • What is sent: headline and summary text from public sources, and entity names.
  • What is never sent: customer data of any kind.
  • Nothing is used for training. Inference runs against hosted open-weight models. There is no fine-tuning and no training corpus built from data we hold.
  • Model output is labelled as model output wherever it appears. An extracted relationship carries its evidence tier and remains distinguishable from a recorded fact.
05External services

Every outbound dependency, and whether it sits on the request path

ServiceUsed forOn the request path
Cloudflare — Workers, Pages, KV, R2, Durable Objects, Workers AI, Hyperdrive, Access, Turnstile, Web Analytics The edge platformYes
Supabase — PostgreSQL and database functions The durable recordYes, on a cache miss
55 public data providersThe record itself No — scheduled and outbound only
GitHubSource control and continuous integration No, and never holds production data

Web fonts are served from our own origin rather than from a third-party font service, so no visitor's IP address is disclosed to one. The Content-Security-Policy on every page enumerates the permitted origins and the browser blocks anything else; you can read it in the response headers of this page.

06Tenancy

The current position, and what the enterprise workspace adds

Vaethra's record is a single public-source dataset, identical for every reader, and the product holds no customer content. There is therefore no cross-tenant exposure risk: your operational data is not in the system.

The enterprise workspace is the product that changes this. It lets an organisation connect its own facilities, routes and dependencies to the world monitor, and it introduces authentication, single sign-on, role-based access, per-customer data isolation and a customer-facing audit log. Its isolation model and the testing behind it will be documented here before it is sold.

The customer records that do exist today — API key digests, usage and contact details — are stored in the analytical database, protected by row-level security, and reachable only by the privileged role.

07Network boundaries

What is reachable from where

TargetReachable from
Public API routes The internet, with a key or a first-party origin. Rate-limited per caller.
Administrative routes Identities permitted by the identity-aware proxy, and then only with the application bearer token
PostgreSQL The application through Hyperdrive, and the database-side function. No public listener an arbitrary client can use.
The database function The URL is reachable; a request without the shared secret is refused before anything is parsed. Beyond it, only the fixed operation allowlist.
Object storage The application. Extracts are served through the API, not from a public bucket URL.

Cloudflare's web application firewall, bot management and DDoS protection sit in front of all of it, and the API applies its own per-caller rate limits behind them.

↑↓ to move · Enter opens the highlighted result