Skip to content
Software that moves

Robotics & Embedded

ROS2 applications, perception and state estimation, embedded and motor control, and the simulation-first workflow that lets behaviour be proven in a simulator where failure costs nothing before it meets hardware.

A bug in a web application prints a stack trace. A bug in a robot moves something. The response is not more caution at deployment time — it is to move the iteration into a simulator where it is cheap, and to measure the gap to the real system honestly rather than assert it is small.

What we build

The work itself

01

ROS2 and a robot-agnostic command layer

Node topology, action and service design, lifecycle management and a command-and-telemetry layer that is not fused to one chassis — so the application survives a change of hardware and so the simulator and the real robot speak the same protocol.

02

Perception and state estimation

Sensor pipelines across camera, lidar, radar and IMU, calibration, extrinsics and the filter design that produces a usable pose and a usable world model under noise. The work ends with a number for how uncertain the estimate is, not an assertion that it is accurate.

03

Simulation workflows and scenario design

Gazebo, Isaac Sim or MuJoCo as the primary development environment, with scenarios and a scorecard that evaluate behaviour under the specific conditions that matter — not whichever ones are easy to set up. The simulator is the test harness, not a demo.

04

Embedded and motor control

The firmware and real-time control underneath the stack: microcontroller work, motor control, CAN and other field buses, and the determinism budget that the control loop depends on.

05

Sim-to-real

Domain randomisation, system identification and the measurement regime that quantifies the sim-to-real gap. A deployment plan that treats the first contact with hardware as an event to instrument, not a milestone to celebrate.

The hard parts

What goes wrong, named up front

A vendor who cannot tell you where their own discipline is difficult has either not done it or is not going to tell you the truth about your project either.

Failure moves atoms

The worst outcome is not a stack trace. It is a damaged mechanism, a damaged environment or a damaged person. Every delivery practice that assumes a cheap revert has to be rebuilt around that fact, which is why the iteration happens in a simulator.

The sim-to-real gap is real

Behaviour that works perfectly in simulation can fail at first contact with hardware, because something in the model was wrong or missing. The honest version of this discipline treats closing the gap as its own ongoing engineering problem rather than something that resolves on its own.

The stack crosses three disciplines

The same system touches real-time embedded code, control engineering and probabilistic ML. Each has its own tooling, review culture and failure modes, and the integration between them is where defects hide most reliably.

AI & ML

  • Anthropic ClaudeLong-context reasoning, code generation, agentic workflows and document-heavy tasks.
  • OpenAIGeneral-purpose generation, embeddings, structured output and multimodal work.
  • Google GeminiMultimodal tasks, very long context and workloads already sitting in Google Cloud.
  • Open-weight modelsSelf-hosted inference where data residency, unit cost at volume or offline operation rules out an API.
  • Model routing & cascadesCheap model first, escalate on uncertainty or failure. Provider abstraction so a model change is configuration rather than a rewrite.
  • Vector & hybrid retrievalEmbedding pipelines, dense and keyword retrieval together, reranking, and grounding so answers cite a source.
  • Evaluation harnessesGolden sets, rubric grading and regression suites that run in CI, so a prompt or model change is measured rather than argued about.
  • Tracing & cost telemetryPer-request tracing, token accounting and unit cost per outcome, so the economics are visible before they become a problem.

Backend & Data

  • SupabasePostgres with authentication, row-level security, realtime subscriptions, storage and edge functions.
  • PostgreSQLThe default relational store, self-hosted or managed depending on the estate.
  • UpstashServerless Redis, queues and vector storage — caching, rate limiting, background jobs and retrieval indexes that bill per request.
  • RenderLong-running services, background workers and cron jobs that do not fit a serverless execution model.
  • Node.js & PythonApplication services and data or ML workloads respectively.
  • RustLatency-sensitive services and on-chain runtimes, where the performance and safety guarantees pay for the slower development cycle.
  • AWS, GCP & AzureWhere an enterprise estate, data residency or procurement requires a major cloud, with infrastructure defined in Terraform.

Delivery & Operations

  • GitHub & GitHub ActionsSource of truth, pull request review, CI pipelines and release automation.
  • Claude CodeAI-assisted implementation, migration and review inside the repository, with every change going through the same pull request and test gate as any other.
  • ResendTransactional email — enquiries, notifications and product mail — with delivery and bounce visibility.
  • OpenTelemetryVendor-neutral traces, metrics and logs, so observability is not a lock-in decision.
  • TerraformInfrastructure as code, so environments are reproducible rather than remembered.
  • Feature flags & remote configSeparating deployment from release across web and mobile, with kill switches on anything risky.

This is what we reach for when the decision is ours. When you already have an estate, we work in it — the stack is part of the engagement, not a precondition of it.

Roles we staff

  • Robotics Engineer
  • Perception Engineer
  • Controls Engineer
  • Embedded Engineer
  • Simulation Engineer

How to buy it

Pick the engagement model separately

Capability answers who works on it. The engagement model answers what we are accountable for, how it is priced and how it ends.

Other capabilities

Probabilistic systems

AI & Applied ML

LLM applications, retrieval systems, agents and applied ML built to a standard you can put in front of a regulator — with evaluation harnesses, cost controls and failure behaviour designed in rather than discovered in production.

Software that acts

Agentic Systems & Automation

Systems that choose their own next step — tool-using agents, orchestrated workflows and automation that spans your existing systems — designed so that what they are permitted to do, and what happens when they are wrong, are decided up front.

Irreversible deployment

Blockchain & Smart Contracts

Protocol and application development where a deployment cannot be rolled back and a defect is a withdrawal. Contract engineering, security review, upgradeability design and the on-chain boundary decision.

Gated releases

Mobile & Cross-Platform

iOS, Android and cross-platform applications delivered continuously despite a third party sitting between your merge and your users — staged rollouts, feature flags, release trains and a native-versus-cross-platform decision made on economics.

The paved road

Platform & Data

The substrate the other three stand on: cloud infrastructure, deployment pipelines, observability, data platforms and the internal paved road that determines how fast every team above it can move.

Evidence over opinion

Delivery Telemetry & Observability

Checks, runs, metrics and incidents across web, publishing, AI and blockchain systems — flow metrics with their denominators, daily verification of live products, and alerting designed not to cry wolf.

The work between the systems

Workflow Automation & Integration

Integration between the systems you already run, scheduled jobs with named ownership, cross-system reactions and the auto-recovery that keeps them honest — because an automation that fails silently is worse than no automation.

Publishing at cadence

Content Platforms & CMS

Ghost and headless CMS work, editorial workflow and scheduled publication, membership and subscription publishing, and the migrations that move a publication between platforms without losing URLs or archives.