Open-source project
lollipopkit/flutter_server_box avatar
lollipopkit/flutter_server_box

ServerBox: a Flutter client that turns your phone into a server console

ServerBox - server status & toolbox

9,014 stars578 forksDartAGPL-3.0

At a glance

What is it?
ServerBox charts CPU, sensors and GPU on Linux, Unix and Windows hosts and adds SSH terminal, file, container and process tools. It is a mobile-first client for people who administer VPS instances from a phone, not a replacement for a server-side monitoring stack.
Who is it for?
Adopt ServerBox if you already reach your hosts over SSH and want charts, a terminal and file management in one app on iOS, Android, macOS, Linux or Windows. Push alerts, widgets, historical data and a web panel need the separate ServerBox Monitor installed on your servers, a Rust service with its own release track (monitor-v0.3.0).
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository received new commits within the last day.
What is it written in?
Mainly Dart, according to GitHub's language statistics.

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

From daily snapshots

Star history

  • lollipopkit/flutter_server_box9,014 ★ · +282
Star history
Repository2026-09-222026-11-14
lollipopkit/flutter_server_box8.7k9k

282 Stars in the last 53 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

What ServerBox actually replaces

Most people who rent a VPS end up with two things: an SSH client and a browser tab open on some status page. ServerBox collapses both into one Flutter application. The README describes it as "A Flutter+Rust project which provides charts to display Linux, Unix and Windows server status and tools to manage servers", and its feature list covers a server list with a globe view, a terminal, SFTP and SCP file management, Docker and Podman, processes, systemd services, snippets, benchmarks and an AI Agent.

The intended user is not a platform team. It is the person who owns a handful of boxes, wants to know whether the disk is filling up, and occasionally needs to restart a container or edit a config file without opening a laptop. If you administer fifty hosts with an on-call rotation, this is the wrong layer: it is a per-operator console, not a fleet system.

The SSH-first architecture and the Rust workspace behind it

ServerBox can connect directly over SSH with nothing installed on the target host, and the README credits dartssh2 and xterm.dart for that. It can also connect over HTTP through the optional ServerBox Monitor installed on the server, and a server set up with both methods falls back automatically if one is unavailable. Status parsing is shared rather than duplicated. The Cargo workspace at the repository root lists crates/sbm_parser as the "shared status parser (used by both monitor and the app via FFI)", with crates/sbm_ffi as the flutter_rust_bridge binding layer plus cargokit plugin shell, and crates/sbm_native for "native (syscall/procfs) status sampling for monitor's local collection path only, never used by the SSH-based app".

That split matters when you evaluate the project. The app you install and the monitor service you can self-host share a parser but not a collection path, so a parser bug affects both, while a native sampling bug affects only the monitor. The workspace also excludes a vendored third_party/ironrdp directory, so building from source pulls a third_party tree into the picture.

Installing ServerBox on iOS, macOS, Android and desktop

The README gives a download table rather than a build guide, and that is the fastest route for most readers. iOS and macOS both point at App Store id1586449703, with the macOS listing marked Apple silicon only. Android is distributed through GitHub releases, F-Droid as tech.lolli.toolbox and OpenAPK. Linux and Windows come from GitHub releases. macOS also has a Homebrew cask:

bash
brew install --cask server-box

After the cask installs, ServerBox appears in your Applications folder as a normal Mac app; the README notes architecture-specific .dmg files on GitHub releases if you prefer a manual download. For iOS without the App Store, the release assets include an unsigned _NoSign.ipa, and the README is explicit that you sign it yourself.

If you want to build from source instead, the Makefile is the entry point and it documents its own targets through make help. Dependency installation and a run on the default device look like this:

bash
make deps
make run

make deps installs the Dart and Flutter dependencies, and make run launches the app on whatever device Flutter picks. To target a specific device, the Makefile documents make run-device DEVICE=<id>. Code generation is a separate step: make gen runs build_runner and gen-l10n, and make gen-proto regenerates the tombstone protobuf reader, which needs protoc installed. Platform builds go through make build PLATFORM=<android|ios|macos|linux|windows>.

Adding a host and reading the first chart

Once the app is open, the first screen is the server list. You add an entry with the SSH coordinates for the machine: host, port, and the credentials you would use from a terminal. ServerBox then connects over SSH and renders the live charts for CPU, memory, disks, network, sensors and GPUs that the README lists under features. A direct SSH connection needs nothing installed on the target; the optional Monitor adds an HTTP connection and historical data from before the app's first connection.

Because the app talks SSH, whatever your sshd already enforces applies unchanged: key-based auth, non-standard ports, jump hosts. That is the practical advantage of the approach. It also means the app inherits SSH's failure modes. If the host is unreachable over SSH and no Monitor is set up for it, the status view stays empty; a server configured with both SSH and the Monitor falls back automatically when one is unavailable.

The repository separates the app from the optional server-side component. The monitor workspace member is described as "server-side monitoring (service + web frontend)", and its release track is distinct: monitor-v0.3.0 was published on 2026-11-01, the same day as app release v1.0.1856. Treat them as two artifacts with two upgrade cadences.

Where ServerBox stops being the right tool

The first limitation is that the app on its own only sees a server while it is connected. Push alerts, home-screen widgets, the watchOS app and historical data from before the app's first connection all depend on installing the ServerBox Monitor on your servers, so a phone-only setup does not tell anyone when a disk fills overnight.

The second limitation is platform coverage. The README claims Linux, Unix and Windows status, but the shared parser lives in crates/sbm_parser and the README does not enumerate which metrics each family exposes. Sensor and GPU readings in particular are the kind of data that varies wildly between a bare-metal host with lm-sensors and a container with almost no /sys access. Verify on your own hosts before assuming parity.

The third is build complexity. A Flutter app plus a Rust workspace plus a cargokit plugin plus a third_party tree for IronRDP is a lot of moving parts for contributors. The Makefile exposes gen-build-clean to clear the build cache before running build_runner, which suggests the maintainers expect stale-generation problems often enough to give them a target.

ServerBox compared with a terminal-only workflow

The obvious alternative is the SSH client you already use, plus htop and df over the wire. The difference is not capability, it is latency and shape. A terminal gives you exact output and full command coverage; ServerBox gives you a rendered chart the moment you open the app, and a file browser and container list that do not require remembering docker ps flags. If your work is mostly running commands, the terminal wins. If your work is mostly looking, ServerBox saves the round trip.

The other comparison worth making is against a self-hosted dashboard such as the monitor component in this same repository. That runs as a service with a web frontend and collects status locally through crates/sbm_native, so it can keep sampling when no client is connected. ServerBox on your phone cannot. The two are complementary, and the shared sbm_parser crate is what keeps their readings consistent.

Licence, upgrades and what the release cadence implies

ServerBox is AGPL-3.0. The practical consequence for most readers is that running the app against your own servers is unaffected, but if you fork it, modify it and let others interact with it over a network, the AGPL's network clause is the part to read. This is a description of the licence, not legal advice; if you plan to redistribute a modified build, have someone qualified look at it.

The upgrade story is app-store shaped. iOS and macOS users get updates through the App Store, Android users through whichever channel they installed from (GitHub releases, F-Droid or OpenAPK), and desktop users through GitHub releases or, on macOS, the Homebrew cask. Mixing channels is how you end up on an old build without noticing. The release history shows a fast cadence: v1.0.1844 on 2026-10-29, then v1.0.1856 and monitor-v0.3.0 both on 2026-11-01. The last push to the repository was on 2026-11-02. Nothing about that cadence is a quality guarantee, but it does mean pinning a version and reading the release notes before upgrading is cheaper than debugging a regression on a phone.

Editorial conclusion

Adopt ServerBox if you already reach your hosts over SSH and want charts, a terminal and file management in one app on iOS, Android, macOS, Linux or Windows. Push alerts, widgets, historical data and a web panel need the separate ServerBox Monitor installed on your servers, a Rust service with its own release track (monitor-v0.3.0). Before rolling it out, confirm which hosts your status parser covers and check the AGPL-3.0 obligations if you plan to redistribute a modified build.

Frequently asked questions

Does ServerBox need an agent installed on my server?

Not for the basics. The app can connect directly over SSH, and the native syscall and procfs sampling crate is used only by the Monitor's local collection path. The optional ServerBox Monitor, installed on the server, is required for push notifications, home-screen widgets and the watch app, and also lets the app connect over HTTP instead of SSH.

Which platforms can I install ServerBox on?

iOS and macOS through the App Store (the macOS listing is Apple silicon only), plus macOS via brew install --cask server-box. Android is available from GitHub releases, F-Droid as tech.lolli.toolbox and OpenAPK, and Linux and Windows builds come from GitHub releases.

How do I build ServerBox from source?

The Makefile is the entry point. make deps installs the Dart and Flutter dependencies, make gen runs build_runner and gen-l10n, and make build PLATFORM=<android|ios|macos|linux|windows> produces a platform package. make help lists the available targets.

What licence does ServerBox use?

The repository is licensed AGPL-3.0, and the README badge shows AGPLv3. Running the app against your own servers is unaffected, but redistributing a modified build that others interact with over a network is the case to review carefully.

Official sources

  1. License: AGPL-3.0
  2. lollipopkit/flutter_server_box on GitHub
  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/lollipopkit-flutter-server-box.svg)](https://hysenlabs.com/projects/lollipopkit-flutter-server-box)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/lollipopkit-flutter-server-box.svg)](https://hysenlabs.com/projects/lollipopkit-flutter-server-box)

Was this useful?