Getting started

Core concepts

Polnor is a hybrid SaaS. Understanding which half runs where is the key to everything else.

Control plane vs data plane

Polnor splits cleanly in two:

PlaneRuns whereContains
Control planeOVHcloud GRA9, France, hosted by usAPI, scheduler, Iceberg catalog, audit, billing, the web console
Data planeYour OVH or Scaleway accountAgent, compute instances, SQL warehouses, your S3 bucket

The two connect over a single outbound WebSocket from your agent to the control plane, no inbound ports on your side. Your data never transits our infrastructure.

Workspace

A workspace is your isolated tenant. Every resource, compute, notebooks, tables, jobs, audit rows, is scoped to it. Quotas (max active computes, running runs, endpoints, warehouses) are enforced per workspace.

The agent

A small service deployed by Terraform into your namespace. It maintains the WebSocket to the control plane and executes what the scheduler sends: running jobs, cloning git repos, launching containers, streaming logs, collecting CPU/RAM/GPU metrics.

Lakehouse & catalog

Your tables are Apache Iceberg on your own object storage, open format, ACID, time-travel, schema evolution. They're catalogued by Lakekeeper, an Iceberg REST catalog. Reads go through DuckDB; writes and maintenance through Spark. See Lakehouse & catalog.

Compute & warehouses

  • Compute: general GPU/CPU instances for notebooks and jobs, provisioned on your cloud.
  • SQL warehouse: a VM with DuckDB + Spark sidecars, started on demand for SQL, auto-stopped when idle.

Runs & tasks

A job executes as a run. A job can declare a DAG of tasks with depends_on edges; each run snapshots its tasks into task runs dispatched in topological order, with per-task retries and timeouts. See Jobs & pipelines.

Bring your own cloud

You supply the credentials (encrypted at rest), the VPC, the bucket and the security groups. Polnor orchestrates against them. Walk away any day with your Iceberg tables intact, there's no proprietary format holding them.