MiBee Steward v0.7.3 drops Go agent for Rust and enforces schema resets
The self-hosted network monitor MiBee Steward v0.7.3 replaces its Go agent with a lighter Rust version, breaks backward compatibility with older databases, and introduces read-only federation between
On October 12, 2026, the developer behind MiBee Steward released version 0.7.3, a significant update to the self-hosted network monitoring tool. This release introduces a breaking change that refuses to start with databases from previous versions, requiring users to perform a fresh scan. It also replaces the distributed agent written in Go with a new implementation in Rust to improve performance on low-resource hardware.
What happened
The most immediate impact for existing users is the deliberate refusal of old database files. MiBee Steward v0.7.3 will not start if it detects a database from v0.6 or earlier, nor will it accept databases from v0.7.0 through v0.7.2. The developer removed the complex startup migration chain that previously allowed incremental updates, which had led to parallel-DDL bugs where partial schema changes left the system in an inconsistent state. Instead, the binary now checks if the schema version in the database matches the single source of truth in db/schema.sql. If they do not match, the application exits cleanly to prevent data corruption.
To upgrade, administrators must back up their existing data, start the new binary against an empty data directory, and allow the system to repopulate the asset table through a fresh network scan. This process also applies to the agent’s local mini database, meaning scan history and SNMPv3 credentials stored locally are not migrated. The developer emphasizes that this hard reset ensures no partial state remains to confuse the system during operation.
A major architectural shift in this release is the replacement of the Go-based distributed agent with a Rust version. The new agent, located in the agent-rs/ directory, produces static musl builds for amd64, arm64, and armv7 architectures. While the configuration file agent.yaml remains compatible to avoid manual edits, the underlying runtime has changed significantly to support older hardware with limited memory. The developer tested this change on a NanoPi NEO with 512 MB of RAM, comparing the resource usage of the two implementations over two days of sampling.
Key details
- Database compatibility: v0.7.3 refuses to start with any database from v0.6 or older, as well as v0.7.0–v0.7.2, enforcing a clean schema state.
- Agent rewrite: The distributed agent is now written in Rust, replacing the previous Go implementation to reduce memory footprint and improve stability.
- Performance metrics: On a NanoPi NEO, the Rust agent used a median of 12 MB RSS compared to 54 MB for the Go agent, with a much tighter variance (11–12 MB vs 38–63 MB).
- Throughput increase: The Rust agent achieved approximately 1.7x the throughput of the Go agent when performing a
/24subnet sweep on the same hardware. - Federation support: The release adds read-only federation between two centers, allowing each side to view the other’s devices without exposing credentials or allowing remote commands.
- Topology fixes: Updates include better handling of multi-homed devices to prevent identity ping-ponging and improved root bridge detection using STP port roles.
Background
MiBee Steward is a single-binary network monitoring tool designed to answer the question of what devices are present on a local network. It uses Go for the main server component with the Chi router and SQLite via modernc to avoid CGO dependencies. The user interface is built with SvelteKit and embedded directly into the binary. The tool identifies devices by vendor, type, open ports, and certificates, and maps neighbor relationships. It is licensed under AGPL-3.0, with a commercial dual license available for those who wish to fork it into closed products or hosted services.
The move from Go to Rust for the agent component reflects a common trade-off in systems programming. Go offers rapid development and strong concurrency primitives but can have higher memory overhead due to its garbage collector. Rust, while having a steeper learning curve, provides memory safety without a garbage collector, resulting in smaller binaries and more predictable resource usage. This is particularly important for edge devices like single-board computers that may have only 512 MB of RAM and run multiple services simultaneously.
Why it matters
For teams running their own infrastructure, the decision to break database compatibility is a significant operational consideration. While the developer argues that removing incremental migrations eliminates a class of subtle bugs related to partial schema updates, it imposes a manual recovery process on users. Administrators must plan for downtime during the rescan period, as the asset table will be empty until the new binary completes its discovery cycle. This highlights the tension between long-term code maintainability and short-term operational convenience in self-hosted software.
The performance improvements from the Rust agent are relevant for organizations using older or low-power hardware for network monitoring. In environments where every megabyte of RAM counts, such as homelabs or small office networks running on single-board computers, the reduction from ~54 MB to ~12 MB median RSS is substantial. The tighter memory band also aids in capacity planning, as the system is less likely to experience sudden spikes that could trigger out-of-memory kills on constrained devices.
The introduction of read-only federation addresses a common need for distributed teams or multi-site organizations that want visibility across networks without compromising security. By allowing one instance to view another’s device list without granting command access, the tool reduces the risk of lateral movement in case of a compromise. This design choice ensures that bugs or vulnerabilities in one center cannot be exploited to control devices in the peer network, maintaining a strict security boundary between administrative domains.
What you can do
- Backup before upgrading: Run the provided
./scripts/backup.shscript before attempting to install v0.7.3 to preserve any critical historical data. - Prepare for a rescan: Schedule a maintenance window for the upgrade, as the system will need time to rediscover all assets on the network after starting with an empty database.
- Update agent configurations: Ensure your
agent.yamlfiles are ready for the new Rust agent, although the format remains compatible, verify paths and permissions for the new binary. - Test on target hardware: If you use low-resource devices, deploy the new Rust agent on a test unit first to confirm that the static musl builds work correctly with your specific kernel version.
- Review federation settings: If you plan to use the new federation feature, generate auth tokens on the peer side and configure the
center_urlandcidrsettings carefully to limit exposure. - Check topology graphs: After the upgrade, verify that the topology graph correctly identifies the root bridge and that multi-homed devices are no longer jumping between segments in the UI.



