What is VantageOS?
Now buildingMade in Canada

One system for the whole job

ProjectVantageOSForBuilders · government · emergency response

A bridge, a hospital or a tower is built by an , a , dozens of , hundreds of workers and the watching over them, often for years.

Today each of them keeps their own records in their own tools. VantageOS is the one system they all work in: the plan, the people, safety, money and the record of what happened.

Six parts of a project shown either disconnected or linked through VantageOS VANTAGEOS

The problem

Big projects lose time and money in the gaps

The plan, safety, contracts, payments and site records each live in a different tool or on paper. Nobody has the whole picture, and the gaps between the tools are where things go wrong. Three that every project knows:

The product in use

A morning on site with VantageOS

An illustrative morning at Operation Fraser Crossing, the simulated project the platform is tested on. Each step links to where the page explains how it works.

    Who it's for

    Anyone building things where the record matters

    A company doesn't switch everything at once

    1. Pick one area. Safety, payments or the site record are natural places to start.
    2. Use it on your jobs. That part keeps its own records from the first day.
    3. Connect more over time. Each part added shares the same projects, people and history as the ones already in place.

    Questions people ask

    −3 m
    Topsoil · the productCore sample TS-03 · open a module

    Nineteen modules, one platform

    Every module shares the same projects, people and records, so nothing is typed twice. Open any module for a guided tour of the real, running app on Operation Fraser Crossing, a demo project. Each screen comes with a short explanation, and numbered callouts walk you round it one part at a time.

    1Numbered callouts explain each part of a screen↗Tabs and sidebar in the picture are clickable→Arrow keys step through the tour
    −8 m
    Clay · how the parts talkCore sample CL-08 · pick an event

    Something happens once, everyone who needs it knows

      −14 m
      Glacial till · trustCore sample GT-14 · break the chain

      A record that can't be quietly changed

      When a project ends up in a dispute, both sides argue over whose records are right. VantageOS writes contract and dispute histories to a hash chain: each entry is sealed with a fingerprint that also covers the entry before it. Change anything after the fact and every seal after it stops matching, so the platform can say exactly which entry was altered.

      Try it. Change a word in any entry.

      Driller's note: that's real SHA-256, computed in your browser. We didn't fake the fake.
      Checking…

      services/immutable_audit.py · services/contract_ledger.py

      Rule the platform holds itself toWhat it means in practice
      No made-up numbersWhere there's no evidence for a figure, the platform says so instead of showing a plausible placeholder. A checker scans the code for hard-coded values passed off as measured.
      Fail closedSecurity and safety controls refuse when unsure. The privacy engine won't start without its language model, and production won't start if its database account could get past the walls between companies.
      Nothing is deletedRetired code moves to an archive instead of disappearing, so its history stays readable.
      −22 m
      Sand and gravel · the AI layerCore sample SG-22 · flip the view

      AI that keeps your names private

      Every AI request goes through one router. It tries models on your own machines first, and moves to a cloud model only if none can answer, and only to providers the deployment has switched on. A request asks for a kind of work, never a particular model, so what runs behind it can change. The goal is models of our own.

      Your own machinesalways first
      →
      Cloud providerif switched on
      →
      Next providerif switched on

      Before a prompt leaves the building, names become tokens

      Canadian ones outlined; they check real checksums, not just the shape of a number. The answer comes back with the real values put back in. If the privacy engine can't load, it refuses to run rather than letting text through.

      JobWhat does itWhere it runs
      Speech to textA speech modelOn your own machines. Sending audio to a cloud service stays off unless an admin turns it on.
      Hard-hat and vest detectionA vision modelOn your own machines. It refuses a model that wasn't trained on safety gear, so a general one can't pass as a hard-hat detector.
      ForecastingStatistical time-series modelsOn the platform's server
      OptimisationMixed-integer and linear programmingOn the platform's server
      Schedule confidenceMonte Carlo simulationOn the platform's server
      Reading and writing documentsLanguage models, through the routerYour own machines first, then cloud
      −28 m
      Silt · Canadian rules, built inCore sample SI-28 · pick a province

      When someone gets hurt, who has to be told, and by when

      Pick a province and what happened. These are the platform's own rules, run for real when this page was built: which regulator, who is responsible, and the deadline counted from the moment it happened. Where a rule needs a fact nobody has given yet, it names the fact instead of guessing.

      Getting paid on time

      Prompt payment laws set how many days a payer has after a proper invoice. Deadlines cascade from the owner to the general contractor to each trade.

      −35 m
      Weathered rock · walls between companiesCore sample WR-35 · open a list

      Competitors share the platform, never the data

      Many companies share one VantageOS, often rivals on the same project. None can see another's records, and that isn't left to each screen to remember. A request has to get through four walls.

      Inside a project, people belong to companies and report to someone. A record is visible to the person who made it and the chain above them. Nobody can report to themselves or create a loop.

      Driller's note: the fourth wall is the fun one. The server checks its own keys at startup and refuses to run if they could open a door.
      1. 1 · Every row carries its owner

        Company tables carry an organisation that can't be empty, stamped on every insert from the signed-in person.

      2. 2 · Every query is filtered

        The database layer adds "only this organisation" to every read. A read with no organisation set raises an error instead of returning everything.

      3. 3 · The database enforces it too

        Row-level security in the database itself hides every other company's rows, even from a query that forgot the filter.

      4. 4 · It won't start without the walls

        In production, the server checks its own database account at startup and refuses to run if that account could get past row-level security.

      Every table, sorted by who it belongs to

      Measured from the code. Most tables carry their company. Some hang off a parent that does. Some belong to a project, where members come from several companies. A few belong to nobody on purpose, each with its reason written down.

      −50 m
      Bedrock · where it standsCore sample BR-50 · talk or dig

      Measured, not claimed

      Most software describes itself from its plans. VantageOS generates its own map from the code on every pass: which routes the running app serves, which screens reach them, which tables are walled off, which parts are on the event spine. Every claim cites a file and line, and a validator checks the citations still hold. Every number on this page comes from that map.

      What the recent work was about

      Tested by living a real project

      Operation Fraser Crossing is a simulated major project in Port Coquitlam, BC. Its dataset runs to thousands of workers, and none of it is bulk-loaded: every company, person and incident is entered through the screens, as the people who lived them, on their own dates.

      • Incident reports couldn't be saved at all, because of a stale table.
      • Once they could, each took 33 seconds, from a self-deadlock in the security audit.
      • Five regulator notices the dataset records were refused by the platform's own rules. Each became a decision, not a hidden bug.

      Or keep digging

      Below here is for engineers: the path of one request, the whole event spine drawn, the guards that keep the code honest, and every change to the database. There's something at the bottom for anyone who makes it.

      Keep digging ↓

      scripts/readiness/run_all.py · scripts/platform_map.py · apps/api/src/platform_api/replay

      −65 m
      Granite · the path of one request · Core sample GR-65 · send one

      What happens when you press a button

      Every tap becomes a request to the server. Before it touches any data, it passes through layers, outermost first, each with one job. This list is read from the running application, in the order it runs.

      Driller's note: nobody gets to the data without going through every layer. We checked.
      −80 m
      Gneiss · the event spine, drawnCore sample GN-80 · trace a wire

      Who announces what, and who is listening

      Left, the parts of the platform that announce events. Middle, every kind of event, read from the code. Right, the handlers that act on them. Tap anything to trace its wires; tap empty space to reset.

      Driller's note: lots of talking, not much listening yet. Most events are heard only by the screens that refresh on them. Wiring up the listeners is the next job.

      −95 m
      Schist · the ratchetCore sample SC-95 · search the guards

      Checks that only let things get better

      Each time the code changes, a set of guards reads the whole codebase. Most carry a list of known problems. The rule is one-way: a new problem fails the build, and a fixed one must be crossed off, so each list can only shrink. The orange line is its history.

      Every backend module, graded

      Ready means served, reached from a screen, walled off by company, on the event spine and free of silent fallbacks. The rest work and are being brought up to that bar, one guard at a time.

      Driller's note: a ratchet clicks one way. Ask anyone who's tried to back one out.

        −125 m
        Peridotite · how the ground was laidCore sample PE-125 · drag the timeline

        Every change to the database, in order

        The database's shape is built by a chain of migrations: numbered steps, each building on the last, from an empty database to today's. The bars show how many landed each day. Drag through them.

        −160 m

        You hit the core. Hello, nerd.

        0
        Surface tourist

        Almost nobody reads this far.