Skip to content
VAIR Co. No. 16938467

Rev. A / 2026-08-07 Specification vairworks.co.uk

VAIR LTD, build infrastructure and CI tooling, London Build infrastructure, specified before it is shipped.

VAIR LTD is a London software company working on caching, scheduling and reproducibility for CI build systems. We are pre-release. This page is the specification we are building against.

Registered office Flat 6 Caledonian Court, Highwood Close, London, SE22 8NW
Incorporated 1 January 2026, England and Wales
Company number 16938467 (SIC 62012, business and domestic software development)
Status Pre-release. Two consulting engagements available in Q4 2026.

01 / Scope

Three work areas, and the state each one is in

The company works on the layer that sits between a repository and its CI runners. The table below states what each area covers and how far it has got. Nothing in the right-hand column is a release announcement.

Scope register, revision A, 7 August 2026
Ref Work area What it covers Current state
01 Build caching Content-addressed cache keys derived from a task's declared inputs, a local tier and a shared remote tier, and a rule that failures are never promoted to the shared tier. In development. No binary released, publicly or privately.
02 Task scheduling Dependency graph resolution, fan-out of independent tasks across ephemeral runners, and queue admission against a stated concurrency budget rather than an unbounded pool. In development. No binary released, publicly or privately.
03 Reproducibility auditing Recording the resolved input set for every task so that a build can be replayed later and any divergence attributed to a named input rather than to chance. Design stage. Written specification only, no implementation.

Table scrolls sideways on narrow screens.

02 / What we build

Three capabilities, written as intent

These are design commitments, not achievements. Each card describes what the tooling is meant to do when it ships. None of them describes behaviour you can run today.

01

Cache keys that describe the whole input

A cache key will be a digest over the declared file set, the pinned toolchain versions and an explicit allow-list of environment variables. Anything not on the list is stripped before hashing, so an unrelated variable in the runner environment cannot silently invalidate a hit or, worse, cause a false one.

Design commitment

02

Scheduling against a stated budget

Fan-out will be admitted against a concurrency budget the team sets, not against whatever the runner pool happens to allow. Cold-start cost on ephemeral runners is treated as a first-class input to that decision, because on short tasks it is frequently the dominant term.

Design commitment

03

Builds you can replay and argue with

Every task will emit the resolved input set it actually hashed. Two runs that disagree can then be diffed at the level of inputs, which turns "it works on the other runner" from a shrug into a question with an answer.

Design commitment

Specimen: intended configuration format, revision A
# vair.toml
# The interface being designed against. No binary that reads this
# file has been released, publicly or privately.

[workspace]
root      = "."
toolchain = "lockfile"   # every tool version resolved, none inherited

[cache]
tiers  = ["local", "remote"]
key    = ["inputs", "toolchain", "env"]
write  = "on-success"       # failures never reach the shared tier

[[task]]
name    = "build"
inputs  = ["src/**", "Cargo.lock"]
outputs = ["target/release/app"]
env     = ["TARGET_TRIPLE"]  # the allow-list; the rest is stripped

[[task]]
name      = "test"
depends   = ["build"]
inputs    = ["tests/**"]
fanout    = 12                # admitted against the concurrency budget

This is published so the design can be argued with before it ships. It is not documentation for a product you can install, and there is no download link on this site because there is nothing to download.

03 / Method

How a release or an engagement is approached

Five steps, procedural. The same sequence governs our own tooling and any consulting engagement we take, because the second is how the first gets tested against a build we did not write.

  1. Read the build as it actually runs

    The starting artefact is the CI configuration and the task graph it produces, not a description of them. Steps that were added for one incident and never removed are usually visible within an hour of reading.

  2. Measure before changing anything

    Wall-clock per task, queue wait, runner cold-start and cache hit rate are recorded first, on the team's own runners. A change with no baseline in front of it is a guess, and we would rather publish a number the team can reproduce than one they have to trust.

  3. Declare the inputs

    Each task gets an explicit input set: files, toolchain versions, and the environment variables it is genuinely allowed to read. Most of the work in caching is here, and most of the false cache hits people have been burned by trace back to this step being skipped.

  4. Introduce caching at one boundary

    One task, one boundary, verified by replaying the build with the cache cold and then warm and comparing outputs byte for byte. Only after that boundary holds does a second one get touched.

  5. Leave the reasoning behind

    The deliverable includes the input declarations, the measurements and the written reasons for each decision, in the team's repository. An engagement that only works while we are still on the call has not finished.

04 / Reference architecture

The intended system, drawn as a design

The schematic below is a design document. It is not a deployment diagram, no part of it is running in production anywhere, and it will change as the specification does.

Reference architecture, revision A A left-to-right schematic. A repository feeds an input hasher, which feeds a content-addressed cache index. The cache index feeds a scheduler, which fans work out to a pool of ephemeral runners. The runners write to an artefact and audit store, which writes results back to the cache index. Repository source and lockfiles Input hasher declared inputs only Cache index content addressed Scheduler graph plus admission Runner pool ephemeral, cold start Artefact and audit store resolved input sets A B C D E F Rev. A / 2026-08-07 / design, not a deployment Dashed return path: cache promotion on success only
Figure 1. Reference architecture, revision A. Solid lines are the intended data path. The dashed return path is the cache promotion rule: an artefact reaches the shared index only after the task that produced it succeeded.
  • A

    Repository. Source, lockfiles and the CI configuration. Taken as given. Nothing in the design requires a team to restructure a repository before it can be cached.

  • B

    Input hasher. Reads only the declared input set for a task. Undeclared files and unlisted environment variables are invisible to it by construction, which is what makes a key mean something.

  • C

    Cache index. Content addressed, so an entry is named by what went into it. Two teams that produce the same inputs land on the same key without coordinating.

  • D

    Scheduler. Resolves the dependency graph, drops tasks whose key already resolves, and admits the remainder against a concurrency budget the team states rather than one the runner pool implies.

  • E

    Runner pool. Ephemeral by assumption. Cold-start cost is modelled as an input to admission, not treated as noise to be averaged away.

  • F

    Artefact and audit store. Holds outputs alongside the resolved input set that produced them, which is what makes a later replay comparable rather than merely repeated.

05 / Engagement

Availability, shape and jurisdiction

Alongside its own tooling the company takes a small number of consulting engagements on other teams' build systems. The availability line is the only fact on this page that changes week to week.

Stage
Pre-release. No product has been publicly released.
Availability
Two consulting engagements, Q4 2026.
Engagement shape
Fixed written scope agreed in advance, work carried out on the team's own runners, deliverable is a written report plus the configuration changes it describes, committed to the team's repository.Remote by default. On-site in London by arrangement.
Rates
[TO CONFIRM: day rate and minimum engagement length are not yet set. Ask by email and you will get a figure, not a range.]
Out of scope
Workforce, training and credentialing software. Building-performance inspection. General IT support. We do not take work in these areas and will say so rather than subcontract it.
Certifications
We do not hold ISO 27001 certification, a SOC 2 report or Cyber Essentials certification, and will not represent otherwise.
Contact route
hello@vairworks.co.ukMonitored on working days. A person replies within five working days.
Jurisdiction
Contracts are governed by the law of England and Wales.

06 / Notes and disclosures

What this page is not claiming

  1. Trading record. VAIR LTD was incorporated on 1 January 2026. No product has been publicly released. Nothing on this page describes work delivered to a client.
  2. Figures. This site carries no benchmarks, speed multiples, build counts, customer counts or download figures, because none have been measured on a shipped product. Any number that appears later will name the workload it came from.
  3. Certification. The company holds no ISO 27001 certification, no SOC 2 report and no Cyber Essentials certification. No badge to that effect appears on this site and none will until one is genuinely held.
  4. Name. "Vair" is the heraldic term for the pattern of alternating bell shapes representing squirrel fur, and the French word for that fur. The mark on this site is a pair of those bells. The compound "vairworks" is what the company brands on.
  5. Not connected with. VAIR LTD has no connection to Vair IT Technologies Pvt Ltd, VAIRKKO, The Vair Companies Inc., VAIR Networks or Vair Corporation. Similar names, separate businesses.
  6. Revision. This document is revision A, dated 7 August 2026. When the specification changes the revision letter changes with it, and the previous statement is not quietly edited away.

One address

There is no contact form on this site. A form that posts nowhere is worse than no form, so the only route is email, and it is read by a person.

hello@vairworks.co.uk

Replies come from a vairworks.co.uk address within five working days. Written enquiries can also be sent to the registered office below.