predicated.ai Work with us

A fleet of agents, working in concert.

predicated.ai is a software studio and consultancy for teams that build with coding agents. Every engineer now has an agent. We build the layer that makes them work as one.

Scroll — the field falls into line ↓
Practice

We build the infrastructure AI-first organisations run on.

Studio

Tools for agents doing real work

We release the software we needed to run coding agents ourselves: bosun for the fleet, the PromptRomp tools for the jobs around it, and proprietary products alongside them. Most of it began as the tool we wanted while building something else.

  • Agent fleet orchestration
  • Work ledgers & memory
  • Approvals & guardrails
  • Test selection & CI
  • Open source
Consultancy

Agent adoption, at the scale of the team

We design the adoption plan, integrate the tooling with how your teams already build, and set the practices that make agent output something you can review and ship: what to hand over, how to check it, and what stays with people. For engineering and product development alike.

  • Adoption plans
  • Tooling integration
  • Best practices
  • Evals & review
  • Team enablement
Coordination

Many agents. One crew, not a crowd.

Hand every engineer a coding agent and the speed shows up first. Then the rest does: two agents fixing the same bug in different repositories, a third relearning a deploy step another team’s agent worked out last week, and a reviewer facing a queue of pull requests nobody put in order.

Coordinated, the same agents work as a crew. Work is handed on with its context, what one agent learns about how your organisation runs is there for the next, and changes reach people in an order they can review and approve. We make this coordination happen.

Selected work

Don’t take our word for it.

Flagship · Open source · Agent fleet orchestration

bosun

A fleet of coding agents, one Claude Code or Codex session per repository, coordinated from one place: a single orchestrator hands each task to the right session, collects what each reports back, and chases the people you are waiting on. Bosun runs the work around the code, and remembers it.

Everything it handles is on record: a ledger of what is in flight, with every hand-over, report and approval kept in each item’s history, and a knowledge graph of how your organisation works, each fact carrying its source. Nothing goes out under your name until you have approved that exact action. Today it coordinates one engineer’s agents; a ledger and knowledge graph shared across a team are next.

Orchestratorone desk for every agent
Ledgerwhat is in flight
Audit trailevery hand-over and approval
Graphhow the work is done
The repo → The docs →
Engineering · Open source

PromptRomp

The open-source org bosun lives in, and the tools around it, most of them the one we wanted while building something else. pytest-impacted runs only the tests a change can actually reach, by way of git, the AST and a dependency graph. mockstack stands in for the services a microservice depends on before they exist.

aws-bootstrap-g4dn takes one command from nothing to a GPU box on AWS, and ships as an agent skill so a coding agent can bring up its own. pdfalive gives a PDF the table of contents it should have shipped with, and works out for itself when it has to OCR the thing first.

Browse the org →

pytest-impacted

A big test suite is the slowest part of every change, and most of it tests code the change never touched. This runs only the tests a change can actually reach.

It reads the git diff, parses imports without running them, and follows the dependency graph all the way down; a change to a lockfile, a conftest.py or a config glob you name runs everything. Optional Rust parsing for large codebases, and a standalone CLI for two-stage CI.

The plugin →

mockstack

Working on one service usually means running the five others it talks to, or waiting for someone to build them. This stands in for all of them.

Templated responses routed by URL; rules that serve a fixture, proxy to the real service or redirect; a record mode that captures real traffic to replay. It plays a failing dependency on purpose — a 503, a timeout — and mocks an LLM through Ollama, so a prompt can be tuned without paying by the token.

The tool →

aws-bootstrap-g4dn

One command from nothing to a working GPU machine on AWS, in about three minutes.

It launches a spot instance and falls back when capacity runs out, writes the SSH alias, and installs the PyTorch build that matches the CUDA it finds — the mismatch that usually costs the afternoon — then proves it with a matrix multiply on the GPU. It ships as an agent skill too, so a coding agent can bring up and tear down its own box.

The tool →

pdfalive

A long scanned PDF with no table of contents is a document nobody can find their way around. This gives it one: clickable bookmarks, worked out by a language model from the pages themselves.

It notices when a file is a scan and runs OCR first, batches documents of any length, and can check itself against a printed contents page. Any LangChain provider, local models included, and a record-and-replay evaluation harness, so a change to it is measured rather than guessed at.

The tool →

python-remote-debug-skill

A worker that hangs in production usually has to be killed before anyone can see why. This lets a coding agent look inside it while it is still running.

It uses Python 3.14’s sys.remote_exec() to put a script into the live process and read back a stack trace for every thread — or every greenlet, for gevent workers like Celery’s — without stopping it. It installs as a Claude Code plugin, and the post walks through the production hang it was built to find.

The skill → The post →
Language models · Blog

Enterprise LLM Design Patterns

A short series on what breaks when language models meet real systems. The first is about answers that arrive stale — a model call is slow relative to the state it is reasoning about — and pairs debouncing with optimistic locking.

The second is routing: deciding which model may see which data when compliance has an opinion about it.

Read the series →

Your LLM Is Living in the Past

A model takes seconds to answer, and the world does not wait. By the time a support assistant replies, the customer may have upgraded and asked a follow-up, and the answer is about a conversation that no longer exists.

The fix: let events settle before calling the model, number every change on a logical clock, and keep an answer only if the clock has not moved since it started — a compare-and-swap in PostgreSQL, with the stream cut off early once the answer has gone stale.

Part 1 →

Who Gets Which Model?

One client may use only models hosted in the EU, another only the versions its auditors signed off, a third only its own walled-off environment. A fallback that quietly crosses one of those lines is a breach, not a recovery.

A resolver separates which model a request needs from where it runs, keeps each client’s rules as data rather than configuration, and fails loudly when nothing compliant is left. Prompts name the models they suit, never the providers.

Part 2 →

The Vertical Integration of Development

A developer used to be the glue between the logs, the code, the dashboards and the docs. A coding agent wired into all of them can be that glue instead, which changes how software gets built, not only how fast.

From practice: a bug traced across three services through logs, live calls and git history; prototypes in days rather than weeks; internal tools cheap enough to be worth building — and the costs that remain, from managing context to the review that eats the time saved.

The essay →
Machine learning · Open source

mcmc-robust

Bayesian statistics answers with a range rather than a single number, and NUTS, the standard tool for computing it, struggles when the data has extremes in it — which is when the range matters most. This calibrates an arcsinh transform for each coordinate during warm-up, then runs NUTS on the exact transformed density, for BlackJAX and PyMC. The case for a map per coordinate is machine-checked in Lean 4.

On a sparse regression with Cauchy priors it gets 7.1 times stock NUTS’s tail effective samples per gradient, winning on all 10 paired seeds, and in a single-seed run it put the 99% quantile within 8.1% of the truth where PyMC was 41.6% off. Where it falls short is printed beside the wins: it can miss a tail that lies along a rotated direction, and on real posteriors from posteriordb it is no uniform improvement on stock NUTS.

The library →

sklearn-hierarchical-classification

Labels arranged as a tree rather than a flat list — the shape a taxonomy actually has, and the one scikit-learn leaves you to build for yourself. We wrote the estimator that fills the gap and put it out under Apache 2.0.

It did the hierarchical work in the entry that took first place in subtask B of GermEval 2019, over 343 nodes of German book blurbs — chosen ahead of the team’s own implementation, the paper says, so the result could be reproduced.

The library → The paper →
Forecasting · AI · Machine learning

A sea of possibilities. One decision.

We also specialise in using LLMs to build bespoke forecasting and machine-learning systems. Our 2026 Israeli elections forecast was one, built and kept current with coding agents: a proprietary model that aggregated every published poll, measured each pollster’s lean against past elections and corrected for it, and simulated 20,000 parliaments every day until the vote, with a Bayesian state-space model fitted by MCMC and back-tested beside it.

The dots here are its final forecast, three days out: the Netanyahu bloc with about 54 seats, the Opposition bloc with 52 and the Arab parties with 14. The final results were 53, 48 and 19. The forecast had the Netanyahu bloc ahead and neither bloc at 61, which only 4 of the 20 polls in the campaign’s last week did, and only one of those 20 came nearer the final seat counts.

101polls in the final run
20,000simulations
View the forecast →
Work with us

Bring us a repository. We’ll bring the fleet.

contact@predicated.ai →