Home/Developers/Changelog

Changelog

This product is in development; version numbering starts with the first beta. Until that day you will see a phase tag here rather than a date — and only the work that has actually been written.

Tag: Phase 0 · development

Phase 0 · development

What works so far?

Everything below is in the repository and runs in the local development environment. There is no production, no customer, no real money has moved — this log does not hide that either.

Repository skeleton Phase 0

A Go workspace was set up with three modules: control-plane, agent, cli. Alongside them: proto definitions, the Next.js console, a Makefile and docker-compose. The architectural rule is fixed: one modular Go monolith — no microservices.

Control plane REST endpoints Phase 0

Offer search (filters, facets, pagination, scoring), pod lifecycle (create, stop, start, terminate), pod events, file listing and metrics, billing summary and line items, host panel endpoints, /v1/me and /healthz are written.

SSE streams Phase 0

Three live streams are open: pod logs, pod telemetry (GPU utilisation, VRAM, temperature, power, health) and the live cost counter. When the client closes the connection the stream is cleaned up; the server sends a ping every 15 seconds.

The console's four screens Phase 0

The marketplace, pod detail, billing and host panel screens are up on Next.js + Tailwind. Pod detail shows the log stream and live cost, billing shows the counter and the budget card, and the host panel shows the scorecard and earnings.

Supply source registry Phase 0

Supply now sits behind an adapter layer. The mock adapter runs without a key and returns two offers (one TR, one EU); the live adapter connects to a real supply source. The user sees one endpoint; whose GPU spins underneath is the adapter's business.

In-memory metering engine Phase 0

A loop that runs once a second: for every running pod the billable seconds increase and the cost takes its share of the hourly price. Seconds that fail the health check are written to a separate counter and are not charged — this is where the guarantee turns into code.

Hard budget cap Phase 0

The cap, and the behaviour when the cap is reached (pause or notify only), can be set through the API. When the cap fills, running pods are stopped and a budget event is written; an overrun that arrives through a request is refused with 402 · budget_cap_reached.

Idempotency and the error contract Phase 0

Pod creation reads the Idempotency-Key header; the same key returns the same pod for 24 hours. All errors share one body shape: code, machine-readable reason, human message and context.

CLI skeleton Phase 0

kaldera offers, kaldera pods, kaldera pod create and kaldera version work. Money is converted to dollars for display; raw micro-dollars are never shown. The move to Cobra and the log and ssh commands are not done yet.

The store starts empty Phase 0

A deliberate decision: no fake pods, no fake invoices, no fake hosts. Spend starts at zero and metering really does run per second. The first number you see on screen is a number you produced.

Marketing site Phase 0

This static site: no build step, one file per page, shared style and behaviour in two shared files. The price and earnings figures on the pages are marked as examples.

Phase 0 HTTP contract Phase 0

Every body between the console and the control plane is bound to a written contract: micro-dollar currency, RFC 3339 time, empty lists returning [], pagination rules. When proto comes online the field names carry over one to one.

Not there yet

We do not show unwritten work as written.

The items below are on the roadmap, with the phase they belong to. We do not give dates, because we do not have an honest date to give.

Persistent database (PostgreSQL)Phase 0 · data is in memory for now
ConnectRPC generation pipelinePhase 0 · proto exists, pipeline not wired
Identity, sessions, API key enforcementfirst beta
Payments: PayTR (Turkish payment gateway) + Stripe (international)first beta
Pod lifecycle and job migration with Temporalend of Phase 0
Web terminal (WebSocket ↔ SSH bridge)end of Phase 0
Host agent and our own supplyPhase 1
Serverless inference endpointPhase 2
Sovereign region package and Verified tierPhase 3
Python and TypeScript SDKsfirst beta and after

The scope and done criteria of each phase are written in the technical plan; this list is derived from it.

Versioning

The day we give a number, our promise starts too.

There is no version number right now, because we have not promised anyone stability. With the first beta, three things start at the same moment:

  • Numbering. The API version travels in the path prefix (/v1); the client and the CLI carry their own versions separately.
  • Breaking-change notice. If a field is going to be removed, it is first marked deprecated, and the transition period and the alternative are written on this page.
  • Backward-compatibility rule. Adding a field is not breaking; removing a field, changing its meaning and changing a default are breaking. Anything breaking goes to a new version prefix.

Until those three rules take effect, endpoints can change. That is the only honest warning we can give about code you write against Phase 0.

You will not find a past date, an incident record or a version number on this page — because there aren't any yet. An invented history would be the product's first lie.

Follow

Track what shipped from here.

Our promise stays put: you don't pay for seconds that don't work, a hard budget cap, per-second billing. The only thing that changes is how much of it is running.