Skip to content

Releases: Mi-Bee-Studio/MiBeeSteward

Release list

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 14:23
e4f31cf

v0.2.0 — Distributed Discovery · Topology · Change Detection · Fingerprint Library

This release turns MiBee Steward from a single-network discovery tool into a distributed, multi-LAN device portrait system. It ships two binaries: the center (mibee-steward, the SPA-embedded server you already know) and a new lightweight discovery agent (mibee-agent) that runs on remote networks and reports back.

Binary amd64 arm64
mibee-steward (center + Web UI) 24 MB 23 MB
mibee-agent (remote LAN discovery) 17 MB 17 MB

Both are CGO-free (pure Go + modernc.org/sqlite) — no C toolchain needed on the target, runs as a regular user.


Distributed discovery (center + agent)

v0.1.0 could only discover the one LAN the center sat on. v0.2.0 adds a dedicated agent binary so one registry covers every network segment. The agent uses a push + pull model — it pushes alive-host reports and pulls ad-hoc scan commands on a 60s poll — so it works behind NAT with no inbound port needed.

How the two halves stay consistent:

  • Anti-entropy fast path: when a network is stable, the center skips the per-host device bridge and only refreshes leases — near-zero cost.
  • Lease model: lost detection for agent networks is TTL-based (default 5 minutes), tolerating ~10 missed reports.
  • Disconnect backfill: if the center is down, batches are queued and redelivered in order once it recovers — never silently dropped.

Topology discovery

A new Bridge-MIB SNMP probe walks switch forwarding databases to learn L2 adjacency (which MAC lives behind which port), persisted to the device_neighbors table. This is the foundation of a topology graph.

Change-detection engine

v0.1.0 recorded device state but never told you what changed. v0.2.0 adds a change-detection engine that records device_added / device_changed / device_lost events (with structured before/after diffs). Query via GET /changes, or stream live via the SSE endpoint /changes/watch. The frontend Changes page renders diffs and updates in real time.

Passive discovery service

Spots newly-appeared hosts between scheduled scans (a device that boots at 2 AM still gets a device_added event without waiting for the next scan). Three zero-cost sources: router ARP (widest coverage), ARP cache (zero traffic), multicast (passive mDNS/SSDP). A MAC-primary precheck prevents identify-scan loops on DHCP-churned hosts.

Data-driven fingerprint rule library

Identification rules are now YAML data, not hand-written Go. Adding a device signature = one YAML entry. ~2554 rules ship out of the box (20 builtin + ~2534 from Rapid7 Recog, Apache-2.0). Logic that can't be expressed declaratively (SNMP bitmask heuristic, camera cross-evidence fusion) stays as Go code.

Probe enhancements

  • SMB2 Negotiate: parses the SMB server dialect and OS string (v0.1.0 only had a version-less port-only fallback)
  • TLS certificate brand override: recognizes OpenWrt / GL.iNet / iStoreOS
  • 15 active probes in total (SMB2 + Bridge-MIB new this release)

Operational

Server bind-retry on systemd restart (prevents TIME_WAIT crash loops), agent HTTP keep-alive deadlock fix, golangci-lint v2 enforced in CI, retention config consolidated under retention.*.


See the CHANGELOG and the distributed deployment guide for full details and upgrade steps.

Full diff: v0.1.0...v0.2.0

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 07 Jul 15:26

MiBee Steward v0.1.0 — 首个公开版本

⚠️ 这是一个雏形体验版本(Early Preview)。 核心功能已可用,但在交互细节、性能调优、边界场景上仍有打磨空间。我们期待你的反馈来决定后续优先级——请通过 Issues 提交问题或建议。

MiBee Steward 回答三个问题:这个网络上有哪些设备?它们是什么?它们之间什么关系? 它是一个设备管理与网络层自动发现系统,将 SNMP/ICMP/TCP/HTTP 探测、设备身份推断、资产注册管理(CMDB-lite)和心跳存活检测打包进单个二进制文件(Go 后端 + 内嵌 SvelteKit SPA,CGO-free SQLite)。


核心功能

🔍 网络发现(Scanner v2)

插件式 5 层扫描引擎(probe → classify → handler → persist),支持:

  • 主动探测:ICMP、TCP 端口扫描、SNMP(8 OID)、RTSP、ONVIF、HTTP、ARP、UDP 发现(mDNS/NetBIOS/SSDP)
  • 身份推断:从扫描证据自动推断设备类型/厂商/操作系统/主机名(摄像头、服务器、交换机、路由器、NAS 等)
  • 同步扫描(≤1024 IP,即时返回结果)与异步定时任务(cron 调度,支持大范围扫描)
  • 跨子网 MAC 解析(通过路由器 SNMP ARP 表)、OUI 厂商映射
  • 扫描结果持久化 + CSV 导出

📋 设备注册管理

  • 完整 CRUD、批量操作、CSV 导出
  • 双层 JSON 属性(扫描属性 + 用户自定义属性)
  • 设备分组(device-systems)、文档关联(URL/文件上传)
  • Prometheus 标签管理、开放端口/检测服务记录

💓 心跳监测

  • 多协议存活探测(ICMP/TCP/HTTP/SNMP),30s 间隔,5 次失败判定离线
  • 独立时序存储(单独 SQLite 文件,批量写入),内存状态缓存 + WAL 隔离安全同步
  • 心跳趋势图表、历史记录、统计

🔐 认证与权限

  • JWT(Cookie + Bearer 双通道),2FA(TOTP),登录锁定,Token 黑名单
  • RBAC(admin/user),首次登录强制改密
  • 管理员可重置任意用户密码;CLI 子命令 reset-admin-password 用于 admin 密码恢复

📊 仪表盘与可观测性

  • 可配置 widget 概览页,Prometheus 时序图表
  • /metrics(Prometheus 指标)+ /sd(HTTP Service Discovery,供 Prometheus 自动发现设备)
  • 审计日志(所有管理员操作记录)

🔔 通知渠道

  • Webhook / Email 渠道管理 + 测试发送

🌐 国际化

  • 中文 / 英文完整翻译

快速上手

# 下载对应架构的二进制
chmod +x mibee-steward-linux-amd64

# 准备配置(从模板复制后修改 jwt_secret 和 initial_admin_password)
cp configs/config.example.yaml configs/config.yaml
# 编辑 config.yaml:设置 auth.jwt_secret(≥32 字符)和 auth.initial_admin_password

# 启动
./mibee-steward -config configs/config.yaml

# 浏览器访问 http://localhost:8080,用 admin / 你设置的密码登录

忘记 admin 密码时重置:

./mibee-steward reset-admin-password -config configs/config.yaml

部署方式

方式 说明
二进制 单文件部署,SQLite 数据文件,适合单机
Docker 多阶段构建,非 root 用户,docker compose up
systemd 含安全加固(NoNewPrivileges / ProtectSystem=strict / MemoryMax)
nginx 反代 TLS 终止 + HSTS + 安全头 + /metrics 限 localhost

详见 deploy/ 目录与 docs/zh/deployment.md


已知限制

  • 单实例:当前为单机 SQLite 部署,不支持多节点分布式部署
  • 不做告警:告警引擎不在产品范围内——MiBee Steward 聚焦"发现 + 识别 + 注册"。如需告警请接入 Alertmanager / Uptime Kuma
  • eBPF 被动观测:需特殊构建(make build-with-ebpf)且运行时需 CAP_BPF/CAP_NET_ADMIN
  • 这是雏形版本,部分边界场景和交互细节仍在打磨

下载

文件 架构 适用
mibee-steward-linux-amd64 x86_64 标准服务器 / PC
mibee-steward-linux-arm64 ARM64 树莓派 / ARM 服务器

反馈

  • 提交问题或建议:Issues
  • 完整文档:docs/zh/(中文)/ docs/en/(English)
  • 配置参考:configs/config.example.yaml(每个字段都有注释)

What's Changed

  • Polish repo: README/zh docs, fix all CI failures, migrate to golangci-lint v2 by @mickeyzzc in #1
  • fix(api): make /metrics and /sd public (no auth required) by @mickeyzzc in #2
  • feat(scanner): dual JSON attributes + scan/discovery/field-completion overhaul by @mickeyzzc in #3

New Contributors

Full Changelog: https://github.com/Mi-Bee-Studio/MiBeeSteward/commits/v0.1.0