First siax.repo.v3.json in the SIAX platform estate (P049 certification found v3 adoption at 0/40, which structurally blocked 8 of the 11 required siax-doctor commands with score 0 / *-NOMANIFEST). Additive only: siax.repo.json (v2) is left untouched per CONTRIBUTING.md. No other file changed. Every field is filled from a real source (siax.repo.json v2, package.json, LICENSE, siax.config.json, docs/runbook/*, docs/slo.md, PRODUCTION_EVIDENCE.json, siax-standard SIAX_ESTATE.yaml + SIAX_TAXONOMY.yaml, cl0ud packages/capability-registry/src/registry.ts, and a live probe of 0pt.app on 2026-09-04). Where the truth is unknown or unproven the honest schema option is used, never a value that merely looks complete: - productionEvidence.verified=false: no SHA->CI->artifact->SBOM->signature-> deployment->running-digest chain exists (PRODUCTION_EVIDENCE.json is a CI verification report, not that chain). - identity.workloadIdentity=false: outbound platform calls use an optional static ST0RE_SERVICE_TOKEN env bearer (src/clients/st0re-client.ts); cl0ud service-auth.ts registers no principal for 0pt. - consumedBy=[]: SIAX_ESTATE.yaml row says consumers UNKNOWN-not-verified; the 4 reverse-lookup candidates are labelled "inferred" there. - reliability.backupFrequency=none / provenRestore=false: production has no database (live /api/health db=not_configured); the P014 drill ran against throwaway containers, not a production backup. - licenses.approved=false: no siax.license-assessment record exists. - operationalState=degraded: live 0pt.app answers liveness 200 but db=not_configured and /api/ready is 404 (deployed build predates main). - node=null / deployment.node=null: live on Vercel, not a fleet node. - observability.metrics=false / otel=false: STATUS.md "no metrics/traces emitted"; /api/admin/metrics is business aggregates, not observability. - capabilities: exactly the 19 ids cl0ud's registry lists with owner '0pt' (5 prospekt.* + 14 0pt.*). NOTE: the repo contains zero "prospekt" code and ships no CLI/MCP surface despite the registry claiming those surfaces for prospekt.* -- flagged in the PR, not silently dropped. - surfaces=[api, ui]: only what actually ships (Next.js route handlers + FastAPI, Next.js pages). No bin, no MCP tools file, no SDK package (packages/schemas is JSON Schema files consumed by path), job execution is delegated to N0D per the registry. siax-doctor (siax-standard main, @siax/schemas): repo REPO-16 NA -> PASS (measuredScore 85 -> 85; REPO-16 is NA-safe) capabilities 0 / CAP-NOMANIFEST -> 100 (CAP-DUP-OWNER PASS, 19 ids) dependencies 0 / DEP-NOMANIFEST -> 100 (DEP-CYCLE/DEP-REVERSE/DEP-ASYM PASS) surfaces 0 / SURF-NODATA -> 0 (needs siax/capabilities/*.json records) engines 0 / ENG-NOMANIFEST -> 0 (ENG-DIRECT-COUPLING NA for core-platform; ENG-REGISTRY UNVERIFIED) licenses 0 / LIC-NOMANIFEST -> 0 (LIC-UNASSESSED UNVERIFIED -- honestly no approved=true claim) Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
0pt — your data
Data services on demand for the Nordics + Europe. Compose a data job, pay 50 % to start, watch production live, validate with full provenance, deliver anywhere. Owned by SIAX Technology AB. Honest accuracy is the moat: every field carries source, freshness and confidence; nothing is guessed.
Live: https://0pt.app · Contract: CLAUDE.md + docs/
Architecture (verified against code, not aspirational):
docs/architecture/ARCHITECTURE.md. It documents the real API surface, the real persistence story, and the known security gaps — including several places where this README is optimistic. Read it before trusting any capability claim below. Repo identity + estate classification:siax.repo.json+siax.config.json. Compliance state:docs/compliance/(INVENTORY, RELATIONS, OSS-INVENTORY, GOLDEN-STANDARD-REPORT, BACKLOG, SLUTRAPPORT).
Two planes (see docs/02-architecture.md)
- Edge (Vercel, this app) — marketing, catalog, the order lifecycle, customer portal,
admin portal, and the API route handlers. Defers to the data engine when
ENGINE_URLis set. - Engine (
services/api, runs on a VPS) — FastAPI orchestrator + worker pipeline doing the compliant sourcing (official API → bulk → authorized web → licensed → else level 0). Never on Vercel (long jobs). Bypass/stealth/proxy-rotation/fake-account paths are excluded by design (CLAUDE.md §1).
Routes
| Area | Routes |
|---|---|
| Marketing | / (hero, filosofi, katalog, motorn, visualiseringar, täckning, editorial, bevis, priser, footer) |
| Catalog | /katalog, /katalog/[id] |
| Sourcing map | /kallor |
| Order lifecycle | /bestall → /bestall/forskott → /order/[id] → /order/[id]/validera |
| Customer portal | /portal, /portal/subscriptions, /portal/files, /portal/integrationer, /portal/settings |
| Admin portal | /admin, /admin/sources, /admin/jobs, /admin/customers |
| API | /api/{health,estimates,catalog,sources,orders,orders/[id],subscriptions,admin/metrics,uploads,auth/*,payments/*,webhooks/stripe,connections/db-grant} |
Design system
Mono/editorial, light, radius 0, Inter + JetBrains Mono, single red #e40014, animated grain,
scroll-reveal motion. No photography — imagery is rendered data (DataArtifact). Every fact
shows a provenance square (ProvenanceBadge). Full spec: docs/05-design-system.md.
Run locally
pnpm install
pnpm dev # Next.js on http://localhost:3000
# data engine (separate, optional)
cd services/api && pip install -r requirements.txt && uvicorn orchestrator.main:app --reload
Deploy
- Config target (as of 2026-08-09):
siax.config.jsondeclaresdeploy.target: "coolify", matching every other SIAX Cloud OS repo (n0d, st0re, aud0, ...) — a Dockerfile "for Coolify" (already committed, seeDockerfile) plus.gitea/workflows/cd.yml(renamed fromdeploy.yml2026-08-10) that POSTs a restart to a Coolify app UUID onCOOLIFY_TOKENpush. - Actually live right now: the only running instance of
0pt.appis still on Vercel (project0pt, scope Simon Axelsson's projects) — no Coolify app has been provisioned for this repo yet, sodeploy.yml's app UUID is a placeholder that fails the job on purpose until someone fills it in. Flipping the config declares intent; it does not move traffic. Seedocs/architecture/ARCHITECTURE.md§5/§8 for the full "Vercel or fleet" state and what's still open (Coolify app provisioning + DNS cutover — a separate decision from this config change, since the live Vercel deployment is not being touched). - Engine + DB + embeds → one VPS via
infra/docker-compose.yml(Postgres+pgvector, Redis, api, worker, NocoDB, Metabase, Caddy). - Env inventory:
.env.example. - Auth on
/api/0pt/*is fail-closed: withAUTH_ENFORCEunset the middleware REQUIRES a verified Zitadel Bearer token (401 without one). Only the literalAUTH_ENFORCE=falsedisables it, and that is refused whenNODE_ENV=production(the process throws at startup rather than serving anonymously). Caveat (live-verified 2026-08-10): the deployed instance still answersGET /api/0ptwith 200 anonymously — the middleware appears not to run in production (gap S1, root cause unknown). Do not rely on this being enforced until an anonymous request gets a real 401. - Fonts: self-hosted via
@fontsource-variable/inter+@fontsource-variable/jetbrains-mono(no Google Fonts /next/font/google). - API contract (SSOT):
contracts/openapi.yaml.
Status
Frontend, full order lifecycle, customer + admin portals, edge API, payment/auth/embed infrastructure, the compliant data engine, schema and infra are all in place and building green. Integrations are env-guarded and activate when their keys/DB are provided:
- Database — Vercel → Storage → Postgres (sets
POSTGRES_URL) → durable persistence (schema insql/001_init.sql). - Stripe + Resend keys → payments + email.
- VPS for the engine → set
ENGINE_URL. AUTH_SECRET+DEV_LOGIN_KEY→ login (full OAuth via Auth.js lands with the DB).
© 2026 SIAX Technology AB. Not affiliated with Protosell.