Library / SDK
intrinsic-ai/intrinsic-core avatar
intrinsic-ai/intrinsic-core

Intrinsic Core: an open runtime for industrial robot applications

Intrinsic Core™ provides an open, local runtime, SDK, and hardware agnostic, real-time control framework for industrial robotics.

609 stars71 forksC++Apache-2.0

At a glance

What is it?
Intrinsic Core is an open, local runtime, SDK and hardware agnostic real-time control framework for industrial robotics, with modules for motion planning, 6-DoF perception, local inference, a hardware abstraction layer and a ROS 2 based execution runtime. It suits a team building an industrial cell on ROS 2 with mixed hardware, and it is far more machinery than a single task needs.
Who is it for?
Adopt Intrinsic Core if you are building an industrial robot application on ROS 2, want hardware abstraction across arms and grippers, and need grasp planning and 6-DoF perception rather than writing them. Do not adopt it for a small automation task, for a mobile robot platform, or if a purely local, dependency light stack is a requirement, because the framework brings a large module surface and a broad dependency tree.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A local robotics runtime, not a cloud service

Intrinsic Core provides an open, local runtime, SDK, and hardware agnostic, real-time control framework for industrial robotics, and the stated goal is to make it easier and faster to build AI-enabled robotics applications by providing open, foundational building blocks, from simulation and 6-DoF perception to hardware execution.

The word local does a lot of work in that sentence. The runtime is packaged as a native k3s containerized environment that runs on the machine, and the perception and inference components are described as running on the edge rather than in a data centre. For an industrial deployment that matters, because a robot that has to keep working when the network is down is a different proposition from a robot that calls a service.

The framing is also deliberate about the audience. This is not a hobby robotics SDK; it is aimed at industrial robotics, and the vocabulary reflects that. You will meet arms, grippers, fieldbus I/O, trajectory interpolation, controllers and a digital twin.

The project comes from Intrinsic Innovation LLC, and the repository carries an Apache 2.0 licence, an AUTHORS.txt, a SECURITY.md, a TRADEMARK.md and a CONTRIBUTING.md. The last push was on 2026-10-22, and the releases are date stamped: 20261012.0, 20260922.0 and 20260921.0.

Nine modules that only make sense together

The module list is the architecture, and it is worth reading as a pipeline rather than as a feature list.

intrinsic_runtime is the pre-configured local execution engine, packaged as a native k3s containerized environment. It manages process life cycle, event scheduling and application state synchronization, giving developers a stable, deterministic execution layer on top of ROS 2 without manually configuring low-level system plumbing.

intrinsic_control, which goes by the name ICON, is the real-time motion and hardware coordination engine. It combines kinematics solvers and trajectory interpolation with a deterministic control loop capable of switching controllers within a single cycle based on live sensor feedback, and it is backed by a standardized Hardware Abstraction Layer that enables sensor-driven control across arms, grippers and fieldbus I/O without hardware lock-in.

intrinsic_motion_planning is the collision-free path generation engine, providing high-throughput constraint solving across both Cartesian tasks and wide-envelope C-space movements within a unified API. It enforces kinematic and workspace limits and blends heterogeneous motion, fusing multi-segment paths with differing velocity and acceleration profiles into one continuous trajectory.

intrinsic_perception standardises camera and point-cloud interfaces and ships out-of-the-box support for NVIDIA FoundationPose for 6-DoF pose estimation of 3D parts, so a robot can detect, locate and manipulate parts that are not fixtured.

intrinsic_inference is the local machine learning execution engine, providing the hardware plumbing, model serving infrastructure and memory management to run accelerated inference on the edge, and streaming pose estimates and visual detections into the planning and control loops.

intrinsic_sdk is the developer toolkit, with base interfaces, serialization helpers and data structures for building reusable skills, custom hardware assets and execution nodes. intrinsic_apis holds the interface definitions, intrinsic_hardware the device drivers, manifests and service integrations for industrial peripherals, and intrinsic_kinematics the kinematic modelling and solver library for manipulators.

The hardware abstraction layer is the point, not a side effect

Two claims in the README are worth separating, because one is about hardware and one is about the ecosystem.

The hardware claim is the unified Hardware Abstraction Layer. Its stated purpose is to let you swap robot arms and grippers without driver rewrites, and it is what makes sensor-driven control work across arms, grippers and fieldbus I/O. The related repositories show the shape of it: icon-hwm-controller holds the ICON hardware modules, and icon-shared-memory is a high-performance shared memory IPC transport, which is the kind of piece a real-time control loop needs on the same machine.

There is a second piece aimed at the same problem, malloc-guard, described as a real-time C++ library for detecting and preventing dynamic heap allocations in real-time threads. That is a detail that tells you the framework was written by people who have had a control loop blow its deadline, because the classic cause of that is an allocation on the hot path.

The ecosystem claim is seamless ROS 2 interoperability, bridging modern C++ and Bazel development with the broader ROS ecosystem. The repository carries a ROS 2 compatibility badge, and the supporting repositories are visible: intrinsic-moveit provides MoveIt 2 integration for Intrinsic motion and grasp planning, and intrinsic-ros-camera-drivers provides Intrinsic compatible ROS camera driver nodes and adapters.

So the abstraction is not only over hardware but over the robotics software stack. A team that already runs MoveIt 2 and has its own camera drivers can reuse them, and a team that has neither gets both from the same place.

What you need before you can build anything

The prerequisites are short and specific. The operating system must be Ubuntu 24.04 LTS, known as Noble, or Ubuntu 26.04 LTS, with Ubuntu 22.04 LTS supported. The ROS 2 distribution must be ROS 2 Lyrical Luth.

The installation and setup instructions live in the Getting Started guide, a tutorial in the developer_resources/learn/tutorials directory, and the project points at that guide rather than repeating the steps. There is also a tutorials index covering step by step guides to get started, customise physical layouts and visualise the robot, and a glossary of general terms for Intrinsic Core and OMTS.

The build system is Bazel, and the tree is shaped for it: a MODULE.bazel file for module dependencies, a .bazelrc and a .bazelversion to pin the toolchain, BUILD files throughout, and a bazel/ directory for custom rules. There are a few more languages in the tree than the C++ headline suggests. There is a go.mod for a Go module named github.com/intrinsic-ai/insrc on go 1.27.2, and a requirements.txt that was autogenerated by uv with the command bazel run @@//:requirements, which means the Python dependencies are also produced by the Bazel build rather than installed by hand.

That last detail is the practical shape of this project: it is one Bazel workspace that produces the C++, the Go and the Python pieces together, and the containerised runtime packages the result.

The machine tending example is the fastest way to understand the shape

Intrinsic Core ships alongside an open source reference solution, the Open Machine Tending Solution, in its own repository, intrinsic-omts. It is described as an open-source Machine Tending reference design for a real-world machine shop use case, delivering pre-configured assets, skills and Intrinsic best practices out of the box, to jump-start the development of industrial applications.

The claim in the feature list is a zero-refactor path from prototype to deployment, and that is the honest way to describe a reference solution: it is a complete worked example rather than a tutorial, and it is assembled from the same modules that a production cell would use.

Machine tending is a good choice of example for a specific reason. It is repetitive, it involves a human-adjacent station, and it needs perception, grasping and motion planning to work together, which is exactly the intersection of intrinsic_perception, intrinsic_motion_planning and intrinsic_control. A team that wants to understand how the modules compose can read that repository, and a team that wants a starting point can fork it.

There are further examples in the ecosystem, including an sdk-examples repository for using the Solution Builder Library, which is the part of the SDK most directly aimed at application code.

Where Intrinsic Core is the wrong amount of framework

Four limits are visible, and the first one is a matter of scale rather than quality.

The framework is large. Motion planning, 6-DoF perception, local inference, a real-time control engine, a containerised runtime, an SDK and a hardware layer are all part of one product, and a task that needs one of them inherits the whole toolchain: Bazel, k3s, ROS 2, a specific Ubuntu and a specific ROS distribution. For a team automating one station with a fixed robot and no perception, that is a lot of machinery.

The second limit is the platform assumption. The hardware layer is about arms, grippers and fieldbus I/O, and the examples are industrial cells. Nothing in the description suggests coverage for mobile robots, drones or anything that is not a manipulator on a factory network.

The third is the dependency surface. The Go module pulls a long list of Google Cloud client libraries alongside the robotics work, including bigquery, firestore, spanner, pubsub, secretmanager and cloud asset. A runtime that is described as local and edge first, and that ships a k3s cluster, is not a small dependency footprint, and a team with a policy on outbound cloud connectivity has something to think about.

The fourth is the pinning. Ubuntu 24.04 or 26.04 and one named ROS 2 distribution is a narrow door, and it means the framework moves with the platform rather than with your needs.

The alternative approach is the modular one: pick the pieces you need from the ecosystem, keep MoveIt 2 and your own drivers, and build the control loop on your own hardware abstraction. The trade is that you give up the pre-configured runtime, the digital twin and the parts of the stack that are genuinely hard to rebuild, in exchange for a codebase you fully own.

Maintenance, licence and the shape of the community

The project is not archived, the last push was on 2026-10-22, and the release tags are date stamped: 20261012.0 published on 2026-10-12, following 20260922.0 on 2026-09-22 and 20260921.0 on 2026-09-21. That is a release line that tracks the calendar rather than a semver series, which suits a platform that is versioned against a ROS distribution and an operating system release.

The licence is Apache 2.0, and the badge and the LICENSE file agree on that. The trademark file in the repository is a reminder that the names are separately protected even though the code is permissively licensed, which matters if you plan to rebrand a derived system.

For support, the documentation points at the Intrinsic developer community, which hosts guides, tutorials, a community forum for questions, projects and support, and announcements of new tools. The AGENTS.md at the root of the repository is worth reading before you contribute, and CONTRIBUTING.md covers the process.

One thing to verify for yourself, because the documentation does not say it: what the runtime actually contacts at run time, and whether any of the cloud services in the dependency tree are part of a normal operating path or are there for tooling and asset management. A framework that markets a local runtime and a local inference engine deserves that question asked explicitly, and the answer belongs in your own deployment review.

Editorial conclusion

Adopt Intrinsic Core if you are building an industrial robot application on ROS 2, want hardware abstraction across arms and grippers, and need grasp planning and 6-DoF perception rather than writing them. Do not adopt it for a small automation task, for a mobile robot platform, or if a purely local, dependency light stack is a requirement, because the framework brings a large module surface and a broad dependency tree. Verify first that your distribution is Ubuntu 24.04 or 26.04 with ROS 2 Lyrical Luth, that the arms and grippers you use have hardware manifests, and that the digital twin and machine tending reference solution match the cell you are building.

Frequently asked questions

What is Intrinsic Core?

It is an open, local runtime, SDK, and hardware agnostic real-time control framework for industrial robotics, aiming to provide open foundational building blocks from simulation and 6-DoF perception to hardware execution. The project is published by Intrinsic Innovation LLC under the Apache 2.0 licence.

What are the prerequisites for Intrinsic Core?

The operating system must be Ubuntu 24.04 LTS or Ubuntu 26.04 LTS, with Ubuntu 22.04 LTS supported, and the ROS 2 distribution must be ROS 2 Lyrical Luth. The installation steps live in the Getting Started tutorial in the developer_resources/learn/tutorials directory.

What modules make up Intrinsic Core?

intrinsic_runtime for local execution, intrinsic_control for real-time motion and hardware coordination, intrinsic_motion_planning for collision-free path generation, intrinsic_perception for camera and point cloud processing, intrinsic_inference for local machine learning execution, intrinsic_sdk for application development, plus intrinsic_apis, intrinsic_hardware and intrinsic_kinematics.

How does Intrinsic Core avoid vendor lock-in on robot hardware?

Through a standardized Hardware Abstraction Layer that lets you swap robot arms and grippers without driver rewrites, with sensor-driven control across arms, grippers and fieldbus I/O. The hardware modules live in the separate icon-hwm-controller repository, with a shared memory IPC transport in icon-shared-memory.

What is the Open Machine Tending Solution?

It is an open-source reference design in the intrinsic-omts repository for a real-world machine shop use case, delivering pre-configured assets, skills and Intrinsic best practices out of the box, and it is presented as a zero-refactor path from prototype to deployment.

Official sources

  1. intrinsic-ai/intrinsic-core on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/intrinsic-ai-intrinsic-core.svg)](https://hysenlabs.com/projects/intrinsic-ai-intrinsic-core)

Was this useful?