HAPI FHIR vs Medplum

HAPI FHIR is a Java library and JPA server you assemble into your own platform, while Medplum is a TypeScript developer platform with auth, bots, SDK and UI components included. This page shows which team profile fits each.

On this page

HAPI FHIR vs Medplum: when each platform is the right choice

Choose HAPI FHIR if your team has deep Java skills and wants to own the server, the data store and the security composition. Choose Medplum if you want authentication, bots, an SDK and UI components included and would rather configure a developer platform than assemble one. The decision turns on four things: the skills your engineers already have, which database and hosting constraints you must meet, the identity model your users and systems need, and how much building you are willing to sign up for. HAPI FHIR is a Java API and JPA server licensed under the Apache Software License 2.0, and it states that it does not provide a single one-size-fits-all security layer. Its authentication interceptors, AuthorizationInterceptor, consent and search narrowing interceptors and BALP audit logging are building blocks you wire together. That is an advantage when your security architecture is already defined and your team can own it, and it stops mattering when you need a working login and audit trail in weeks rather than months.

Medplum takes the opposite trade. Its components include Medplum Auth with OAuth, OpenID Connect and SMART-on-FHIR, a FHIR R4 API with GraphQL support, an SDK, a React component library, Bots and a web app, all in one Apache 2.0 project. Its server is built on Node.js and TypeScript with PostgreSQL and Redis, so a team that works in TypeScript will find the codebase closer to its own. The cost of that convenience is a platform to keep current. Self-hosted Medplum must be upgraded through each minor version in sequence, and post-deploy data migrations can run for hours or days on large datasets, so confirm your upgrade window before you commit. Ask Medplum whether your identity provider, such as Google, Auth0 or AWS Cognito, is supported as an external provider, and check which FHIR versions your partners require, since the decision is about fit, not feature count.

Which scenario favors which platform

This table maps common team situations to the platform that fits them better, with the supplied fact behind each call. Read each row for the condition that would reverse the recommendation, because either platform can be the wrong choice under the stated constraints.

ScenarioBetter fitWhy, and when it flips
A Java team exposing FHIR over an existing relational databaseHAPI FHIR (plain server)HAPI is a Java library you wire into your own code, so it sits naturally in a JVM stack. It flips if your team has no Java skills to maintain it, since Medplum's TypeScript stack would then be easier to own.
A TypeScript team needing a clinical app, bots and UI quicklyMedplumMedplum bundles auth, an SDK, a React component library and Bots for server-side logic. It flips if your team needs deep control over the server internals, where a library you assemble yourself gives more freedom.
A team that needs FHIR versions beyond R4, such as DSTU2, DSTU3 or R5HAPI FHIRHAPI's JPA server documentation covers DSTU2, DSTU3, R4, R4B and R5. Medplum's FHIR API is built around R4, so confirm its support for any other version before you commit.
A team that must run on PostgreSQL or SQL Server specificallyHAPI FHIR (JPA starter)The HAPI JPA starter supports PostgreSQL and Microsoft SQL Server for production and does not support MySQL. Medplum uses PostgreSQL with Redis, so it fits a PostgreSQL shop but not SQL Server. Confirm your database requirement first.
A team that must run in its own cloud or data center with full controlDepends on your ops modelHAPI can be deployed as a Docker image, WAR, Spring Boot app or on Kubernetes with Helm. Medplum self-hosting is offered as a free Community option, with AWS CDK recommended and GCP and Azure Terraform deployments marked Beta. Choose HAPI if you want minimal vendor tooling, and Medplum if its AWS path matches your environment.
A team that wants a vendor-managed hosted serviceMedplumMedplum lists hosted plans on its pricing page, including Free, Production at $2,000 per month and Premium at $6,000 per month, per the Medplum pricing page. HAPI is a library and server you run yourself, so you would need to host it or buy support elsewhere. Confirm current plan terms directly with Medplum.

How HAPI FHIR and Medplum are built and deployed

HAPI FHIR is a Java library with a JPA server you package into your own runtime, while Medplum is a full Node.js and TypeScript platform with its own deployment tooling. The choice shapes who builds and patches each layer, so the cards below compare the architecture, deployment routes and upgrade duties your team would own.

HAPI as a library and JPA starter

HAPI FHIR is a Java API for FHIR clients and servers, and the JPA server starter gives you a runnable FHIR endpoint backed by a database. You can run the starter as the hapiproject/hapi Docker image, with Docker Compose, under Spring Boot, as a WAR on Tomcat, Jetty or Wildfly, or on Kubernetes with a Helm chart. Choose the route your platform team already operates, because HAPI does not dictate a hosting model. Confirm which runtime your security baseline accepts before you pick one.

Database choice in HAPI

The JPA starter defaults to an embedded H2 database, which suits evaluation rather than production. For production you choose between PostgreSQL and Microsoft SQL Server, and MySQL is not supported. Your DBA standards, backup tooling and licensing for SQL Server will decide which of the two you run. Plan the database as a separate operational component from day one, since it carries the clinical data.

Medplum as a Node.js and TypeScript server

Medplum's server is built on Node.js and TypeScript and uses PostgreSQL as its database and Redis as its cache. The platform ships auth, bots, the SDK and the web app together, so the server is one part of a larger system you deploy as a unit. Your team inherits Node.js runtime management, Redis operations and the coupling between those services. Ask which components a given release requires before you size the cluster.

Medplum self-hosting routes

Medplum recommends AWS deployment with CDK and CloudFormation, and also documents Ubuntu via an APT repository, Docker, Kubernetes, DigitalOcean, and building from source. Terraform-based GCP and Azure deployments are marked Beta, so treat them as pilot options until they reach your standard. Pick the route that matches your cloud account and skills, and confirm with Medplum which path it supports for your environment.

Upgrade paths and day-two duties

Self-hosted Medplum must be upgraded through each minor version in sequence, because skipping versions causes startup failures. Post-deploy data migrations can run for hours or days on large datasets, so schedule upgrade windows and test them on a copy. HAPI upgrades are driven by the library and JDK version you pin, and you must test your own resource providers and interceptors against each release. Budget for both, and ask each vendor for its upgrade guidance before you commit.

Who operates what

With HAPI, your team owns the runtime, container images, database, authentication interceptors and audit logging, because HAPI supplies building blocks rather than one security layer. With self-hosted Medplum, your team owns infrastructure, PostgreSQL, Redis and upgrades, while the platform supplies auth and the application layer. Map each layer to a named owner in your runbook. A gap in that map is the most common source of unpatched or unmonitored components.

How the parts connect in a HAPI FHIR build versus a Medplum deployment

In a HAPI FHIR build, your team owns the application shell that wraps the server, and the security composition is yours to design. HAPI provides building blocks rather than a finished layer: authentication interceptors to validate who is calling, the AuthorizationInterceptor to decide what each caller may read or write, consent and search narrowing interceptors to limit results, CORS support for browser clients, and BALP audit logging. Partitioning, documented in HAPI's partitioning guide, lets you place each resource in a partition for multitenancy, separate data sources, or keep regional data apart, but the partition rules and the mapping from identity to partition are also yours to write and test. HAPI explicitly does not provide a single one-size-fits-all security layer, so treat the composition as a deliverable with its own design review and negative tests, not a default you inherit.

In a Medplum deployment, several of these pieces arrive as part of the platform. Medplum Auth covers OAuth, OpenID Connect and SMART-on-FHIR, and its identity options include Medplum as the identity provider, external providers, domain-level corporate identity providers, client credentials for server-to-server access and multi-factor authentication. Bots run server-side logic inside the platform, and the web app and React components sit on the same access model. Your team still owns the access policies that define which projects, roles and clients can do what, the handling of bot credentials, and the network and hosting controls around a self-hosted install. Confirm with Medplum exactly which access controls, audit outputs and consent handling your edition provides, since the shared responsibility model in its compliance documentation assigns part of that work to you.

Use this split to size the work before comparing prices. Ask each vendor, or your implementation partner, to map every row of your access and audit requirements to a named component: an interceptor or custom code in HAPI, or a built-in Medplum feature or configuration you verify. Where the answer is custom code, that code needs owners, tests and an upgrade plan, because it will be carried across every HAPI version bump. A short test plan that tries cross-tenant reads, consent bypass through search parameters and browser requests from unexpected origins will show quickly which model your team can actually operate.

Capabilities side by side

This table compares what each platform ships with, from FHIR versions and databases to identity, extensibility and UI components. Read each row as a question of how much you must build yourself versus what arrives in the box, and confirm the items marked for verification in your own environment before deciding.

CapabilityHAPI FHIRMedplum
LicenseApache Software License 2.0, Java library and JPA serverApache 2.0, maintained by Medplum in its public repository
FHIR versionsDSTU2, DSTU3, R4, R4B and R5 in the JPA server documentationFHIR R4 API with GraphQL support
DatabaseJPA API; H2 by default, PostgreSQL or Microsoft SQL Server for production, no MySQLPostgreSQL as the database and Redis as the cache
Identity and accessBuilding blocks: authentication interceptors, AuthorizationInterceptor, consent and search narrowing; you assemble the identity layerMedplum Auth with OAuth, OpenID Connect and SMART on FHIR, external identity providers, client credentials and MFA
Server-side extensibilityResource providers, interceptors and the JPA server starter; code is written in JavaBots for server-side logic; SDK in TypeScript
UI componentsNone included in the HAPI project; you build any front end yourselfSDK and React component library, plus a web app
Terminology, validation, MDM and partitioningTerminology services, validation, MDM and partitioning are documented in the JPA serverConfirm the scope of terminology, validation and MDM features against the current Medplum docs before assuming parity
HL7 messagingNot listed among HAPI's core components in the supplied facts; confirm with the project if you need HL7 v2 handlingHL7 client and server included among its components

What each license and edition includes and what it costs

HAPI FHIR is licensed under the Apache Software License 2.0, so the library and the JPA server starter carry no license fee for commercial use. The project's README points teams that need commercial support to Smile CDR, the commercial clinical data repository from the same company. This page does not state Smile CDR's terms, pricing or support levels, so those must come directly from that vendor. A public demonstration server runs at hapi.fhir.org, which lets you test FHIR behavior before you commit to infrastructure, but it is a demonstration and not a production service.

  • Apache 2.0 license: You may use, modify and distribute the code without a license fee. Your costs sit in infrastructure, build effort and the staff who run and patch the server.
  • Free public demo: The hapi.fhir.org server is useful for trying queries and resource shapes. Do not load regulated patient data into it.
  • Commercial support pointer: The README directs commercial support to Smile CDR. Ask that vendor for its support scope, term and fees in writing.
  • Recurring costs you own: Hosting, database operations, upgrades, security configuration and monitoring fall to your team or your implementation partner unless you contract them out.
  • Build-it-yourself scope: Because there is no packaged application layer, consultant or staff time to assemble authentication, consent and audit components is usually the largest one-time cost.

Before budgeting, ask your implementation partner for a written scope covering build, hardening, documentation and ongoing support, and confirm with Smile CDR whether its commercial terms apply to your deployment.

What drives running cost for each platform

Running cost for either platform is shaped by who operates the infrastructure, who carries upgrades and security work, and whether a commercial contract sits behind it. HAPI FHIR is a library and server you assemble and operate, so most cost sits with your engineering team. Medplum separates a hosted subscription from self-hosting, so its cost depends on which of those you choose.

Java and Spring operations

HAPI FHIR runs as a Java service, and the JPA server starter can be deployed with Spring Boot, as a WAR on Tomcat, Jetty or Wildfly, or on Kubernetes with a Helm chart. Your team pays for the JVM, application server and container platform skills to run it. Version 8.2.0 requires JDK 17, so confirm your runtime standard before you pick a release. Ask the vendor or integrator who owns patching the JDK and the server container.

Database ownership

The JPA server defaults to an embedded H2 database, but production use points to PostgreSQL or Microsoft SQL Server, and MySQL is not supported. Your organization pays for database hosting, backups, tuning and capacity growth, and those costs recur with data volume. Medplum also runs on PostgreSQL with Redis as its cache, so ask who operates those components in each option.

Security build-out and testing

HAPI FHIR does not provide a single security layer. It offers building blocks such as the AuthorizationInterceptor, consent and search narrowing interceptors, and BALP audit logging, which your team must configure, test and maintain. Medplum ships auth with OAuth, OpenID Connect, SMART-on-FHIR and multi-factor authentication, which reduces that build effort. Price the security design and penetration testing you need for whichever path you choose.

Commercial support sources

HAPI FHIR's open-source project points to Smile CDR for commercial support, so a supported HAPI deployment is a separate contract with that vendor or an integrator. Medplum offers hosted plans, a free Community self-hosting option and custom-priced Enterprise Self-Hosted. Ask each provider what response commitments, upgrade help and escalation paths the quoted fee includes.

Upgrade and migration effort

Self-hosted Medplum must move through each minor version in sequence, because skipping versions causes startup failures. Post-deploy data migrations can run for hours or days on large datasets, so plan maintenance windows and test runs against a copy of production. Ask Medplum or your partner how many minor steps your target version requires and how long migration tests take on your data volume.

Hosted subscription or self-hosting fees

Medplum's hosted plans are Free, Production, Premium and custom-priced Enterprise, and self-hosting is either a free Community option or custom-priced Enterprise Self-Hosted. The subscription fee recurs monthly, while self-hosting moves cost into your cloud bills and staff time. HAPI FHIR carries no vendor subscription in the open-source project, so its recurring cost is infrastructure, people and any support contract. Request a written quote that lists every line item for your expected environments.

Moving from HAPI FHIR to Medplum, or the reverse

This sequence turns a platform choice into a controlled cutover, so the team knows what data, identity rules and custom logic move, what must be rebuilt, and when the old system can be retired. It applies in either direction, with the source and target swapped at each step.

  1. Inventory resources, profiles and FHIR versions

    Start by listing every resource type in use, every custom profile or extension, and the FHIR version each interface expects. In HAPI FHIR this means checking the server's configured version (DSTU2 through R5 are supported) and the profiles loaded into it. Medplum's FHIR API is R4 with GraphQL support, so any R5 or DSTU3 content will need translation or a documented decision to drop it. Done when the team holds a signed inventory that maps each resource and profile to its target version and to the systems that read or write it.

  2. Map identity, scopes and authorization rules

    Document how clients authenticate today and what each one is allowed to read and write. On the HAPI side this usually lives in custom AuthorizationInterceptor or consent logic, since HAPI provides building blocks rather than a single security layer. On the Medplum side, plan how Medplum Auth, SMART-on-FHIR scopes, client credentials for server-to-server access and any external identity provider will carry those rules. The security or identity lead should sign off the mapping, because this is the step most likely to leave an unintended access gap. Done when each client has a named target identity and an access policy that has been reviewed.

  3. Export, transform and load the data

    Export resources from the source server using standard FHIR search or bulk export, then transform them where profiles or identifiers differ. FHIR resources and profiles transfer in standard form, so most of the payload moves without a custom format, but local extensions, code system bindings and reference IDs need explicit mapping. Load into a staging instance of the target first, then compare resource counts and sampled records against the source. Done when a reconciliation report shows matching counts per resource type and a sample of records has been checked by a clinical or data owner.

  4. Rebuild custom server logic as target equivalents

    Custom code does not transfer. HAPI interceptors, validation rules, terminology hooks or partition logic must be rewritten as Medplum Bots or other server-side logic that the Medplum platform supports, and Medplum-specific behavior must be designed as interceptor-equivalent logic in HAPI. Reconcile search parameters at this point: confirm that each search your clients depend on works on the target and returns the same results on the migrated sample. Done when every custom component has a documented replacement, a test that exercises it, and a reviewer's sign-off.

  5. Rebuild client applications against the target SDK or API

    Client applications need to move to the target's API and SDK. Medplum offers an SDK and React component library, while HAPI leaves client choice to the team and works with any FHIR client library. UI components, authentication flows and token handling usually need the most rework. Test each application against the staging instance end to end, including login, search, create, update and error paths. Done when each application passes the agreed test scripts against staging and the team has recorded any differences in behavior that users must be told about.

  6. Confirm operations, compliance evidence and upgrade plan

    Before cutover, confirm the operating model for the target. For self-hosted Medplum, this includes its upgrade rules: each minor version must be applied in sequence, and post-deploy data migrations can run for a long time on large datasets. For HAPI, confirm the JDK version required by the release you run, and the database, backup and audit logging (BALP) configuration. Compliance documentation for the target should be collected, noting that Medplum describes compliance as a shared responsibility. Done when runbooks, backup restore tests and an upgrade plan exist and have been rehearsed on staging.

  7. Cut over and keep the source read-only for rollback

    Schedule the cutover with a defined freeze on writes to the source, a final delta export and a reconciliation pass on the delta. Switch clients to the target only after the reconciliation passes. Keep the source server available in read-only mode for a rollback window that the organization sets in its own change process. Done when production traffic runs on the target, the delta reconciliation is signed off, and the source has been decommissioned or archived under the agreed retention rules.

Where HAPI and Medplum implementation projects usually run long

On a HAPI FHIR project, the authorization and consent design is usually the longest item, because HAPI does not ship a single security layer. It gives you building blocks: authentication interceptors, the AuthorizationInterceptor, consent and search narrowing interceptors, CORS support and BALP audit logging. Someone must decide which rules apply to which resource types, how patient context is enforced in searches, and how the pieces compose so that a request cannot bypass a check. Partitioning is the other common delay. JPA partitioning assigns each resource to a partition, which can serve multitenancy, separate data sources or group data by region, and changing that model after data is loaded is costly. Database tuning on PostgreSQL or Microsoft SQL Server and test coverage of the security composition should be scoped explicitly, not left as a final phase.

On a Medplum project, the slow points sit mostly around the platform's surroundings. Self-hosting infrastructure is the first decision: the recommended path is AWS with CDK and CloudFormation, while Terraform-based GCP and Azure deployments are marked Beta, so confirm which option your cloud team can own. Identity provider integration comes next. Medplum supports its own identity provider, external providers, domain-level corporate identity providers, client credentials and multi-factor authentication, and the mapping of your workforce and application identities to those options needs agreement early. Upgrade sequencing also takes planning, because self-hosted Medplum must move through each minor version in order, and post-deploy data migrations can run for hours or days on large datasets. Finally, Medplum's compliance documentation states that compliance is a shared responsibility, so each control on its published list needs an owner on your side.

DeployOpen scopes these areas as separate, fixed items in the written statement of work: the authorization and consent design, the partitioning model, database configuration and test coverage for HAPI, and the infrastructure target, identity integration, upgrade runbook and responsibility matrix for Medplum. Each deliverable is named with its owner, acceptance criteria and dependencies before work starts, and the timeline follows from that scope rather than from an estimate. Ask any implementation partner, including DeployOpen, to show which of these items sit in the scope and which remain with your team, and to confirm how upgrades and post-go-live support are handled under a retainer. Your own environment, cloud policies and data classification will decide much of the real effort, so confirm them before comparing quotes.

Questions teams ask before choosing HAPI FHIR or Medplum

How much engineering effort does a HAPI FHIR build need compared with Medplum?

HAPI FHIR gives you a FHIR server and library that you assemble into your own platform, so most of the effort sits with your team: deployment, authentication wiring, consent and audit logic, and the application layer on top. Medplum ships auth, a clinical data repository, an SDK, React components, Bots and a web app, so less of that is yours to build. The gap narrows if you already run Java services and have FHIR experience, and widens if your team is mostly TypeScript or if you need a working app quickly. Ask any implementation partner for a written scope that separates platform setup, security configuration, custom code and testing, because each one drives a different share of the effort.

Does Medplum's hosted plan replace an engineering team?

No. The hosted plans reduce infrastructure work, but they do not cover your data model, integrations with existing systems, clinical workflows, or the access rules your organization needs. Medplum's pricing page lists Free, Production at $2,000 per month, Premium at $6,000 per month and custom-priced Enterprise, and those figures cover the hosted service only. Your recurring costs will also include people who maintain the application and respond to changes in your environment. Its compliance documentation states that compliance is a shared responsibility between Medplum and its customers, so your own controls and staff remain part of the picture.

Which FHIR version should we target, R4 or R5?

Start from what your trading partners and regulators require, because that choice matters more than the server's feature list. The HAPI FHIR JPA Server documentation covers DSTU2, DSTU3, R4, R4B and R5, so it can serve several versions side by side. Medplum's FHIR API is R4 with GraphQL support. If your integrations are R4-based, both platforms cover that need. If you must support R5 or older versions, HAPI is the one to check first, and you should confirm the exact resource and operation coverage you need against the current release notes.

Can Medplum run in our own cloud account?

Yes, Medplum offers self-hosting as a free Community option or as the custom-priced Enterprise Self-Hosted plan. Its self-hosting docs describe AWS deployment with CDK and CloudFormation as the recommended option, with Ubuntu via an APT repository, Docker, Kubernetes, DigitalOcean, building from source, and Terraform-based GCP and Azure deployments marked Beta. Plan for upgrades: Medplum's upgrading guide says self-hosted installations must move through each minor version in sequence, and skipping versions causes startup failures. Confirm the GCP and Azure options against your own requirements, since they are marked Beta.

How does migration work between these platforms and from a legacy system?

Migration depends on your source data and how much of it must keep its identifiers and history. Neither platform's supplied facts describe a turnkey migration path between them, so treat the move as a data mapping and validation project. For HAPI, the JPA server supports PostgreSQL and Microsoft SQL Server for production, with H2 as the default embedded database and no MySQL support, which affects how you load and reconcile data. For Medplum, its PostgreSQL and Redis stack and its upgrade sequence shape the cutover plan. Ask for a migration plan that covers resource mapping, validation, a parallel run and rollback, and confirm the loading tools each vendor currently provides.

What compliance proof does each platform provide?

Medplum's compliance documentation lists HIPAA, SOC 2 Type II, ONC certification, CFR Part 11, HITRUST e1, CLIA/CAP and ISO 9001, and it states that compliance is a shared responsibility with its customers. Confirm the scope, dates and report type for each item directly with Medplum, because a listing in documentation is not the same as a current attestation for the product you will run. HAPI FHIR is an open-source library and server, and its compliance status for your deployment is not something the supplied facts establish. Ask the HAPI community, Smile CDR for commercial support, or your own assessor what evidence applies to your architecture. DeployOpen prepares systems, controls and evidence for compliance assessments, but it does not issue audit reports, attestations or certifications.

Is a fixed-scope implementation partner worth it for this choice?

It can be, mainly when your team lacks Java or FHIR depth, when the build must be finished within a defined window, or when you need security testing and compliance evidence alongside the platform. DeployOpen plans, implements, customizes, integrates, hardens and documents self-hosted open-source platforms inside your own infrastructure, and most engagements are fixed-scope with scope, deliverables and timelines agreed in writing before work starts. DeployOpen does not publish a price list, so ask for a quote built from a written scope. Ongoing support, upgrades and continuous testing are available as retainers. Use the cost drivers on this page, such as the number of integrations, the security controls to be built and the upgrade cadence you choose, to compare proposals.

How DeployOpen helps choose and implement either platform

DeployOpen can help you choose between HAPI FHIR and Medplum, then build the platform you pick inside your own infrastructure. DeployOpen plans, implements, customizes, integrates, hardens, backs up, upgrades, documents and supports self-hosted open-source platforms in your cloud accounts, data centers or air-gapped networks. For this decision, that means the work can cover either a Java HAPI FHIR server with its chosen database, interceptors and deployment target, or a self-hosted Medplum stack with its Node.js server, PostgreSQL, Redis and identity configuration. DeployOpen also runs security testing of the resulting applications and APIs, and prepares systems, controls and evidence for compliance assessments. It does not issue audit reports, attestations or certifications. Independent auditors and certification bodies do that work, and your compliance requirements should be confirmed with them early.

The engagement starts with a written scope. Most DeployOpen engagements are fixed-scope, so the scope, deliverables and timelines are agreed in writing before work begins. Ask for the scope to name the decisions it covers: FHIR versions, the database, the authorization model, how SMART-on-FHIR or OpenID Connect sign-in is wired, how audit logging is produced, and who operates upgrades after go-live. Medplum's self-hosted upgrade path requires stepping through each minor version in sequence, so an upgrade plan belongs in the scope rather than being left to a later retainer. Ongoing support, upgrades and continuous testing are available as retainers, and those recurring costs should be quoted separately from the one-time build. DeployOpen does not publish a price list, so the quote follows from the written scope.

DeployOpen is not an official partner, reseller or certified provider of HAPI FHIR, Medplum or any standards body. That matters for this comparison: the recommendation should follow your requirements, including your FHIR version targets, data residency, the skills your team already has, and whether you want a hosted option at all. A useful first step is to write down those requirements, then ask DeployOpen to test both options against them in a short scoping discussion. If the answer is HAPI FHIR, the team will need to commit to JDK 17 or later and to building the surrounding platform. If the answer is Medplum, the team will need to confirm which self-hosting path and identity provider match its environment. Either way, the decision should be recorded in the written scope before any build begins.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.