Tikpilot

Fifty MikroTik routers in one window

Availability monitoring, bulk operations, scheduled backups, logs and WireGuard links. It runs on your own server, the data sits in a file next to it and goes nowhere.

Install Read the code MIT · Python · no cloud, no build step
Dashboard: 49 sites, one unreachable, a breakdown by group, RouterOS versions and recent jobs

The screenshots come from a live fleet of 49 routers with screenshot mode on: site names, addresses and client names are replaced by the panel itself.

What it does

Everything a fleet makes you do by hand, one router at a time.

One action for the whole fleet

Reboot, a script, a backup, setting identity, checking for and installing RouterOS updates. Every run becomes a job with a per-device result: you see which 3 of 49 failed and what the router actually said.

Availability monitoring

History per site, latency and loss measured by the router itself, a fleet map and reports by group, by device and over any date range.

Scheduled backups

Binary .backup and text .rsc, N copies kept per device, a diff between any two configs and full-text search across all of them. Plus an archive of the panel itself, for the day the server dies.

Script library

Your scripts in one place, and the answer to which router actually has which one. Deploy to chosen sites or to the whole fleet in two clicks.

WireGuard

Router-to-router links through a hub: handshakes, traffic and routes in one table. The spoke configuration is generated for you.

Logs and clients

A syslog receiver for the whole fleet, with filters and rules for hiding the noise. And a list of what is connected at each site: wired or wireless, in which port, with which address.

Screens

Device list: name, address, group, model, mobile operator and RouterOS version
Device list. The mobile operator is detected automatically and search works on it too.
Monitoring: summary, fleet map by group and uptime over the last 24 hours
Monitoring: the fleet map by group and uptime over 24 hours with the downtime.
Bulk action dialog: target is all 49 devices, with the list of available actions
One action across all 49 sites. The dangerous ones are marked, every run becomes a job.
WireGuard: hub settings and the table of links with handshakes and traffic
WireGuard: hub, links, handshakes and traffic. The spoke config is generated for you.
The script library and a table of which sites they sit on
The script library and the answer to which router has which script.
Device logs: time, site, message topic and text, with highlighting rules
Syslog from the whole fleet. Highlight and hide rules take out the repetitive noise.

Install

Any server with Docker that can reach the routers. The panel comes up on port 8080.

git clone https://github.com/maximdr86/tikpilot
cd tikpilot
cp .env.example .env
docker compose up -d

Then: create an API user on the routers and add devices by hand or by CSV import. The panel talks to RouterOS over the API (8728/8729) and over SSH for the terminal. To update: git pull and docker compose up -d --build.

What it is not

Frequently asked

Is Tikpilot an alternative to The Dude?

Partly. The Dude and Zabbix answer “what is happening in my network” and do it better. Tikpilot answers “do this on all my routers”: run a script, take a backup, upgrade RouterOS, and show a result for every device. It also keeps availability history, so for a small fleet it often replaces both.

How do I upgrade RouterOS on all routers at once?

Pick the devices or a whole group, choose “Check for RouterOS updates” and then “Upgrade RouterOS”. Every run becomes a job with a per-device result, the panel waits for each router to come back, refuses downgrades and checks free space before it starts.

Can it back up MikroTik configs on a schedule?

Yes. Rules run on their own: binary .backup, text .rsc or both, N copies kept per device. Any two configs can be compared line by line, and there is full-text search across everything stored.

Does it work without internet access?

Yes. The panel talks only to your routers over the RouterOS API and SSH. The two optional exceptions are looking up the mobile operator in the address registry and downloading the MAC vendor database, both of which you switch on yourself.

How much does it cost?

Nothing. MIT licence, the source is on GitHub, there is no paid edition and no cloud account.

How it is built

A boring stack

Python and FastAPI, pages rendered on the server, a SQLite file for the database. No build step, no npm, no external CDN: it works in an isolated network.

Passwords and access

Router passwords are encrypted with a key kept outside the database. The panel can be limited to trusted networks, every capability is granted separately, and everything anyone does goes into an audit log.

Proven on a live fleet

49 routers in shops, canteens and oilfield sites, reachable over WireGuard with SSTP as a fallback. More than 300 tests run in CI on three versions of Python.

The code was written by an AI model (Claude) under my direction: I am a sysadmin, not a developer. The panel runs my own fleet, so the bugs reach me first. The code is open - read it before you trust it.

Open the file at full size