Monowai

Lowering the cost of change.

I work alongside engineering teams to make delivery routine: shorter lead times, fewer hands on each change, and platforms that cost less to own. Hands-on, time-boxed, and finished when your team can do it without me.

Mike Holdsworth, Singapore. Working across APAC, and remotely further out.

What changes.

Productivity

Lead times in minutes, not days.

Small changes, tests worth trusting, every commit exercised the same way - then a release train that carries it. Teams stop scheduling releases and start shipping them.

A release model on Kubernetes across mobile, web and server-side cut production lead time from days to minutes, and became the organisation's standard.

Read: Is the organisation the next codebase? · The platform is the product

Efficiency

Fewer hands on every change.

Executable contracts, CI gates and machine-readable runbooks replace review meetings and approval queues. Governance becomes something the pipeline does - and the politics go with it.

Distributed teams aligned through executable contracts and automated governance rather than committee; a spec-review harness that gives structured feedback on an API design before a line of code is written.

Read: AI amplifies the architecture it finds · Agents propose, contracts permit

Cost of ownership

Platforms that do more and cost less to keep.

Where you cut a system decides who pays for every change after it. Domain ownership, a platform run as a product, and reference implementations teams copy rather than reinvent - so the compliance burden and the integration tax stop being paid one team at a time.

Strategic direction at a tier-1 insurer on platform-engineering principles to cut the organisation-wide compliance burden; horizontal microservices reframed toward domain ownership at an APAC retail bank.

Read: AI amplifies the architecture it finds · Is the organisation the next codebase?

Ways to collaborate.

Three shapes of collaboration. Each one ends with something your team keeps.

  1. Embedded architect

    Weeks to months, inside your teams

    I design the seams, build the reference implementation and ship alongside the engineers who will own it. Direction by working example, not slide deck - inside tier-1 regulated institutions across APAC: banking, insurance, wealth.

    You keep: A pattern running in production, and the people who built it with you.

  2. Enablement

    Cohorts and pairing

    Sessions and hands-on pairing on AI-assisted development, TDD and contract-first design - twenty-plus engineers at a time. Adoption that sticks because the team builds the muscle, not a dependency on me.

    You keep: Skills and runbooks the team runs without me.

  3. Small organisation, short engagement

    Days to weeks, process first

    The work is mostly the same and the budget is not. I am building a case tracker for a nurse in a private practice: her day is admin the clinic's software does not know about - theatre bookings, insurer letters, post-op kits - every patient at a different stage. The first job was not AI. It was writing the process down, so the tool can answer one question: what needs me today. AI came in on the paperwork once that existed.

    You keep: A written process, and a tool that answers it.

AI that outlasts the engagement.

Three years embedding LLM tooling into how enterprise teams design and ship. Not demos - assets that keep paying after I leave.

Skills framework
Portable markdown runbooks that let AI agents carry institutional knowledge - reusable across Claude, Cursor and China-accessible platforms. Tribal know-how becomes a machine-readable asset the team keeps.
Spec-review harness
Composable YAML trait definitions, CLI and FastAPI modes, Docker deployment - automated, structured feedback on API designs before anyone writes code against them.
AI inside continuous delivery
Agentic prompt workflows, AI-assisted code generation and LLM-integrated CI tooling embedded in the pipeline, with Specmatic contract validation as the guardrail that keeps the output honest.

What you can expect.

Practices before pipelines
Continuous delivery is a set of habits before it is a toolchain. Tooling amplifies those habits; it does not supply them.
Boundaries decide what can change
A regulated payments programme and a three-person product team need different seams. Find the one that fits the problem in front of the team, then let the pipeline carry it.
Explicit agreements
Every handoff between teams is a contract, written down or not. Writing them down - versioned, verified - keeps teams loosely coupled, one of the strongest predictors of delivery performance in DORA's research.
Pragmatic over dogmatic
Ship the smallest thing that proves the idea, then iterate on evidence. Automate to the edge of what the organisation will allow and bridge the rest by hand. No big-bang rewrites.
I stay in the code
Architects who stop writing code lose the plot, and the team's confidence. I maintain open-source projects and contribute to the platforms I design.
Govern through automation, not meetings
Executable contracts, CI gates and machine-readable skills replace manual review cycles. That removes the bottleneck - and the politics.
Prove it with one squad, then scale
Codify what worked as a reference implementation, a contract or a skill, then propagate through automation and enablement. Patterns that scale are patterns teams want to adopt.
Plain language, both directions
Engineering reality to board level; strategic intent back to delivery teams. Board-level funding has followed from technical presentations that translated honestly.

Where it has worked.

Regulated domains, where the cost of a slow change is highest.

  • Banking
  • Wealth management
  • Insurance
  • Compliance
  • Broking

Client names available on request under NDA.

  1. 2026 - current

    Tier-1 APAC insurer

    Arbitrating delivery between near-shore and on-shore teams. Platform-engineering direction to cut the organisation-wide compliance burden - the platform is the product.

  2. 2024 - 2026

    Tier-1 APAC insurer

    LLM adoption across the engineering organisation: skills framework, spec-review harness, Specmatic CI gates, a modular BFF and component development kit.

  3. 2021 - 2023

    US insurer, outsourced delivery

    Release model on Kubernetes and Helm across mobile, web and server-side. Production lead times from days to minutes; adopted as the organisation's standard.

  4. 2020 - 2021

    Global investment bank

    Eight-person team modernising a customer due diligence service across four markets. Strangler-fig Java to Kotlin and Spring Boot, PCF to OpenShift.

  5. 2018 - 2019

    APAC retail bank

    Bank-assurance domain. Horizontal microservices reframed toward vertically aligned domain boundaries.

See the standard, running.

Working examples beat written standards. This one is public: a reference implementation a team can take apart, copy and argue with.

monowai/amqp-broker

Kotlin · Spring Integration · Apache-2.0

Broker-backed asynchronous messaging with distributed tracing. The whole topology - publisher, consumer, dead-letter route and incident route - runs in-process on an ephemeral port. No Docker, no shared environment, no port to collide over. Built for locked-down corporate workstations - the constraint most integration examples assume away without saying so.

Loose coupling you can check

The service and model packages import no messaging type at all - no Message, no AMQP, no Spring Integration. The business service is called directly in a test, with no broker anywhere near it.

Evidence across a process boundary

W3C trace context rides the message. Publish, consume, dead-letter and incident land in one trace - and the tests assert the span tree rather than assuming it.

Stubs, then the real dependency

CI runs twice on purpose: an in-memory broker on every push, then the image against a real RabbitMQ 4. The second job exists because of a bug the first could never catch.

It also names what it does not do. Idempotent consumers, schema evolution, independent deployability, retry with backoff - each written down as a gap, in the order it would hurt you. A reference implementation that hides its own boundaries teaches the wrong lesson.

Kotlin 2.4 Java 25 (virtual threads) Spring Boot 4.1 Spring Integration 7.1 Spring AMQP 4.1 QPID Broker-J 10 RabbitMQ 4 OpenTelemetry / OTLP Gradle 9

Where the thinking lives.

11 essays trace one loop - design the boundary, agree it as a contract, deliver it, prove it continuously, then delegate against it. The same arguments run as decks, and get tested on apps I ship myself.

Start with a conversation.

Bring the delivery problem. Happy to talk it through before there is an engagement attached - and to say so if I am not the right fit.