Elixir for Automotive Software

Elixir is becoming a popular option for automotive software. Toyota Connected has used it in production vehicles for years. RemotiveLabs built its vehicle signal platform with it. Other teams are now using Elixir and Nerves to control and update real cars.
The reason is simple: automotive systems need to handle many tasks at once, recover from failures, and run reliably for long periods. Elixir, built on the Erlang VM, was designed for exactly this kind of work.
For CTOs and product leaders choosing a platform, Elixir offers four clear benefits. Erlang OTP lets individual processes fail and restart without taking down the whole system. Functional programming makes code easier to understand and test. Elixir can handle both low-level data, such as CAN bus signals, and higher-level backend tasks. And the Phoenix framework and Nerves give teams a production-ready path to real-time APIs and embedded Linux without leaving the Elixir ecosystem.
Software-Defined Vehicles make this even more relevant. As automotive platforms grow, maintaining embedded, middleware, and cloud layers in several languages gets expensive. Elixir can bring these layers together in a simpler, more maintainable architecture.
Why Elixir works well for automotive software
The case for Elixir in automotive development is not about syntax. It is about what the Erlang VM was built to do and how closely that matches the needs of modern vehicle software.
Simple concurrency. The Erlang VM can run millions of lightweight, isolated processes. Vehicle subsystems such as battery management, telematics, and CAN bus communication can run at the same time, exchange messages, and restart independently after a failure. This model comes built in rather than being added later.
Fault tolerance by design. Erlang OTP has kept telecom systems running continuously for decades. Each process keeps its own state, and failures can be handled at the process level instead of crashing the whole application. For automotive platforms where reliability matters, this can be more useful than winning a raw speed benchmark.

Vehicle signals at scale. Erlang was originally built for telephone switching and signal routing. Vehicle software faces a similar problem: hundreds of signals from sensors, ECUs, and APIs must be processed safely in parallel. RemotiveLabs chose Elixir for its vehicle signal platform because its concurrency tools make this work easier to manage and scale.
One language across more of the stack. Automotive teams often use C or C++ for embedded systems and Python, Go, or another language for backend services. Elixir can work at both levels, from raw CAN bus frames to fleet management services. Using fewer languages reduces context switching and makes the whole system easier to follow.
Nerves for embedded devices. The Nerves framework brings Elixir and Erlang OTP to embedded Linux devices such as Raspberry Pi. The same language and supervision model can run in the vehicle and in the cloud. For teams building connected vehicles, that consistency can remove a lot of integration work.
Real automotive projects built with Elixir
Production use is the best proof of any technology. Elixir is newer to automotive than C++ or Python, but the projects already using it are meaningful.
Toyota Connected has used Elixir since 2018 in its Mobility Services Platform. The system supports car-sharing services for Toyota and Lexus models, including the Prius and Camry. It handles driver authentication, digital keys, real-time geospatial processing, and fleet management APIs. This is not a small experiment. It is core infrastructure that has been running in production for years.
Invision AI uses Elixir and Phoenix for the backend of its embedded vehicle occupancy and traffic-lane monitoring systems. The product captures images of passing vehicles, counts passengers in high-occupancy lanes, and manages services through a real-time web interface. Elixir handles service coordination, while Phoenix provides the web layer.
The Open Vehicle Control System (OVCS) is a more experimental but impressive example. Spin42 converted a Volkswagen Polo to an electric drivetrain and rebuilt its control system with Elixir and Nerves. Raspberry Pis work as CAN bus bridges, a Nerves system manages communication, and a Nerves-and-Flutter touchscreen powers the infotainment system. The team reverse-engineered CAN messages, built hardware, and wrote firmware in Elixir. The car can now be driven both manually and remotely.
Elixirator’s work with Aelloy shows how Elixir can improve automotive reporting. We sped up report generation through pre-calculation, optimized complex SQL, and improved ingestion for large dealership datasets. Real-time PubSub updates, responsive data streams, and scalable feature controls helped create a faster and more flexible platform for multiple dealerships.
RemotiveLabs built its development platform on Elixir to process large volumes of vehicle signal data, including ARXML and DBC formats. The founders chose Elixir because it could handle detailed binary data and high-level service coordination in one codebase. Its RemotiveBroker processes signals in parallel without the complexity common in more traditional automotive stacks.
“Automotive development is basically a giant cluster of signals that need to operate safely and securely together. Elixir was a key discovery — giving access to vehicle signals in a modern development environment enables automotive developers to not only develop software for cars faster, but also develop code of higher quality.” — Aleksandar Filipov, Co-founder, RemotiveLabs
That matches our experience. Teams get the most from Elixir when they use its process model, supervision trees, and message passing as part of the architecture—not when they simply replace one language with another.
How Elixir fits into an existing automotive stack

Adopting Elixir does not mean throwing away everything your team has already built. In most cases, the practical approach is to introduce it where it adds the most value.
Connecting to vehicle hardware. Elixir can communicate with hardware through CAN bus, OBD-II, and proprietary OEM interfaces. In OVCS, Raspberry Pis running Nerves act as CAN bus bridges and turn hardware signals into Elixir messages for the Vehicle Management System. Elixir’s binary pattern matching also makes raw protocol data easier to parse and read.
Nerves as the embedded layer. Nerves is a small embedded Linux environment that runs Erlang OTP directly on hardware. A vehicle controller and cloud backend can share the same process architecture, supervision model, and language. It supports over-the-air updates, fast boot times, and automatic process recovery—useful for EV systems managing batteries, motors, and temperature.
Phoenix for APIs and live interfaces. Phoenix handles backend APIs and real-time communication. Phoenix Channels provide low-latency, two-way communication between vehicles and external services. That makes them a good fit for live telemetry, diagnostics, fleet tools, and remote coordination.
Flutter for in-vehicle interfaces. The OVCS infotainment system combines a Flutter frontend with Phoenix Channels to show live vehicle data on a touchscreen. This creates a modern interface connected directly to the Elixir backend without requiring another native UI layer.
Working with legacy C++. Most vehicles will continue to rely on existing C++ components. Elixir can connect through middleware, NIFs, ports, and protocol adapters. The goal is usually not a full rewrite. It is to add Elixir at the orchestration and services layer while proven legacy systems continue doing their job.
Challenges to consider before adopting Elixir
Elixir can be a strong fit for automotive software, but teams should plan for a few real adoption challenges.
The functional programming learning curve. Developers coming from C++, Java, or Python need time to get comfortable with immutability, pattern matching, and the process model. This is more than learning new syntax; it changes how engineers think about state and failure. The long-term gains can be significant, but they are not instant.
Safety and compliance. Safety-critical automotive software must meet standards such as ISO 26262. Elixir does not have the same certified ASIL toolchain as established C and C++ solutions. It is usually best for orchestration, telemetry, connected services, and non-critical vehicle functions, while certified components keep direct control over safety-critical systems.
Testing and verification. ExUnit and StreamData give Elixir a mature testing ecosystem. However, hardware-in-the-loop testing and real-time failure scenarios are still difficult. Simulation, process isolation, and supervision-tree testing help teams test subsystems and recovery behaviour earlier.
Legacy integration. Proprietary hardware, vendor protocols, and older embedded code can take time to connect. Reverse-engineering CAN bus messages, as the OVCS team did, requires specialist knowledge. The best teams combine strong Elixir experience with hands-on automotive expertise.
A smaller automotive ecosystem. Elixir’s automotive ecosystem is growing, but it is still smaller than its web ecosystem. Useful protocol libraries exist, though some projects will need custom work that more established automotive languages already provide out of the box.
Pro tip: Before planning a full rewrite, review the current architecture through the lens of concurrency, reliability, and integration. This usually makes it clear where Elixir adds real value and where existing components should stay.
How Elixirator supports automotive teams
We help automotive teams when the product direction is clear, but the platform needs stronger Elixir, data, or automotive expertise. That may mean improving an existing system, removing performance bottlenecks, or building new functionality around complex vehicle workflows.
Our work with Aelloy is a good example. Aelloy helps dealerships analyze resource use and produce detailed financial and performance reports. We built custom reports, optimized complex SQL, and introduced pre-calculated report generation. Most reports now load within seconds instead of taking 30 seconds to more than a minute.
We also added real-time PubSub updates for editable projections, improved data loading with streams and infinite scrolling, and built a responsive dashboard for large dealership datasets. The result was faster reporting, more than 99% data accuracy, better scalability, and threefold growth in user adoption.
For teams facing similar issues, Elixirator can help across the development process—from reviewing architecture and improving data-heavy workflows to building real-time features, dashboards, reporting tools, and scalable backend services. Our experience with Elixir, Phoenix, SQL, and automotive products helps teams make measurable improvements without rebuilding the entire platform.
Key takeaways
Elixir is a strong architectural choice for real-time, distributed, and long-running automotive platforms.
| Point | What it means |
|---|---|
| Proven in production | Toyota Connected has used Elixir in its Mobility Services Platform since 2018 for fleet APIs, geospatial processing, and digital keys. |
| Embedded support through Nerves | Teams can use the same language and supervision model in the vehicle and the cloud. |
| Clear safety boundaries | Elixir fits best at the orchestration and services layer, while certified C/C++ components handle safety-critical control logic. |
| Easier long-term maintenance | Immutability and process isolation reduce hidden-state bugs and make systems easier to test and understand. |
| Faster adoption with the right expertise | Elixirator provides architecture reviews, dedicated teams, and hands-on automotive product experience. |
Bring Elixir expertise to your automotive platform
If your team is moving toward a Software-Defined Vehicle architecture or scaling a mobility platform, we can help close the gap between evaluating Elixir and shipping it in production.
That can include architecture reviews to identify where Elixir fits, dedicated teams with embedded and backend experience, or performance work for live telemetry and vehicle data services. We help with the practical details: legacy protocols, integrations, supervision trees, data-heavy workflows, and reliable real-time features.
The automotive teams moving fastest treat the vehicle platform as a distributed system from the start. If that is where you are heading, get in touch to discuss an architecture review or a dedicated Elixir team for your platform.
FAQ
Is Elixir suitable for safety-critical vehicle systems?
Not usually for ASIL-rated control logic. Elixir is a better fit for orchestration, telemetry, APIs, fleet systems, and other connected services. Safety-critical control can remain in certified C or C++ components and connect to Elixir through clear interfaces.
Can Elixir work with CAN bus and existing C++ systems?
Yes. Elixir can parse binary CAN data and connect to existing systems through middleware, ports, NIFs, and protocol adapters. Teams can introduce it gradually without rewriting the whole vehicle stack.
What does Nerves add to an automotive project?
Nerves runs Elixir and Erlang OTP on embedded Linux hardware. It gives teams fast boot times, over-the-air updates, process supervision, and a consistent architecture across embedded devices and cloud services.
When is Elixir most useful in automotive software?
It is especially useful when a system needs reliable real-time communication, many concurrent data streams, long uptime, and graceful recovery from failures. Typical use cases include telemetry, fleet management, remote diagnostics, vehicle signal platforms, and live dashboards.

