---
title: "Building Gunam: Why Modern Monitoring Should Work Offline First"
url: https://daily.dev/posts/building-gunam-why-modern-monitoring-should-work-offline-first-allx7wfl0
source_url: https://daily.dev/posts/building-gunam-why-modern-monitoring-should-work-offline-first-allx7wfl0
type: freeform
source: "Soumyajit Bhattacharya"
author: "Soumyajit Bhattacharya"
published: 2026-06-28T07:57:05.121Z
updated: 2026-06-28T07:57:42.473Z
reading_time: 4
upvotes: 0
comments: 0
language: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Building Gunam: Why Modern Monitoring Should Work Offline First

**[Soumyajit Bhattacharya](https://daily.dev/sources/2mzsovrk4b2apltdupzju)** · [@soumyajitbhattacharya](https://daily.dev/soumyajitbhattacharya) · 4 min read · 0 upvotes · 0 comments

## Summary

Gunam is an open-source Rust agent built for managing fleets of on-premises devices, addressing real-world production challenges like unreliable connectivity, hardware failures, and OTA update complexity. The project focuses on three core capabilities: reliable OTA software updates with A/B partitioning and delta support, telemetry and system health collection (CPU, memory, battery, uptime), and offline-first synchronization for unstable network environments. A key design goal is a panic-safe FFI layer that prevents Rust panics from propagating into host applications, enabling integration across languages. Currently Linux-first with Android and Windows planned, Gunam is in early development ahead of its first public release.

## Content

# Problem Statement

While working on kiosk software at Zuchiz, I realized that many production issues cannot be solved from the application layer alone.

No matter how well an application is designed, its reliability ultimately depends on the environment in which it runs. In production, there are several factors outside the application's control that can silently degrade the user experience or even break the entire workflow.

Some common examples include:

- Unstable or intermittent internet connectivity
- Weak or fluctuating power supply
- Hardware failures such as storage corruption, memory issues, or peripheral malfunctions
- Device-specific operating system issues
- Unexpected application crashes or system restarts

These problems often surface as application failures, even though the root cause lies much deeper in the system.

Another challenge becomes evident as deployments scale: software updates.

Managing hundreds or thousands of on-premise devices is far more difficult than updating software running in the cloud. Although Over-the-Air (OTA) updates exist, most existing solutions are designed for embedded Linux environments. There are comparatively fewer solutions that provide the same level of flexibility for Android-based kiosks, Android TV boxes, Windows devices, or heterogeneous deployments.

As the number of deployed devices grows, monitoring device health and delivering reliable software updates become operational challenges rather than just engineering tasks. The complexity increases, costs rise, and scaling the business becomes significantly harder.

# The Solution I Wanted to Build

Earlier this year, I started learning Rust with a different goal in mind. I wanted to migrate an ERP application I had built in Node.js to Rust so that it could deliver better performance while running on cost-effective production servers.

As I learned more about Rust, I realized that performance wasn't its biggest advantage. What impressed me most was its approach to memory safety, predictable resource management, and its ability to build reliable system level software.

That completely changed the way I thought about solving production problems.

The challenges I had experienced with on-premise devices monitoring hardware health, collecting telemetry, delivering reliable software updates, and continuing to operate even when connectivity was unreliable could not be solved entirely from the application layer. They required software that could interact closely with the operating system while remaining stable over long periods of time.

Rust felt like the right foundation for building that kind of software.

That realization led to the creation of **Gunam**.

Gunam is an open-source Rust agent designed for managing fleets of on-premises devices. It focuses on three core capabilities:

- Reliable OTA software updates
- Telemetry and system health collection
- Offline first synchronization for unreliable network environments

The project is designed with reliability as a first-class goal. One of Gunam's design goals is a panic-safe FFI layer that prevents Rust panics from propagating into the host application, making it easier to integrate Gunam into existing software regardless of the language it was written in.

Gunam is currently Linux first, with planned support for Android and Windows in future releases.

### Gunam is still in its early stages, and I'm currently working toward the first public release.

The initial version focuses on building a solid foundation with:

- Operating system detection
- CPU, memory, battery, internet, and uptime monitoring
- Image-based OTA updates with A/B partitioning and delta update support
- A networking layer for telemetry, alerts, and remote session APIs
- A panic-safe FFI layer for reliable integration with existing applications

This is only the beginning. In future articles, I'll share the architecture, design decisions, implementation details, and the lessons I learned while building Gunam in public.

If you'd like to follow the project's progress or contribute, you can find Gunam on GitHub:

**GitHub:** https://github.com/IAmInYourKernel/gunam

## Similar posts on daily.dev

- [Your home server monitor dies with your server — an old Android phone fixed this for free](https://daily.dev/posts/your-home-server-monitor-dies-with-your-server-an-old-android-phone-fixed-this-for-free-xjsj4o8xh) · XDA Developers · 0 upvotes · 0 comments
- [Open Source Whamm: Use WebAssembly To Monitor and Fix Running Apps](https://daily.dev/posts/open-source-whamm-use-webassembly-to-monitor-and-fix-running-apps-52uiqzgpx) · The New Stack · 1 upvotes · 0 comments
- [Building a Real-Time System Monitor in Rust Terminal](https://daily.dev/posts/building-a-real-time-system-monitor-in-rust-terminal-arursewei) · The New Stack · 2 upvotes · 1 comments

---

[View this post on daily.dev](https://daily.dev/posts/building-gunam-why-modern-monitoring-should-work-offline-first-allx7wfl0)
