EARLY DEVELOPMENT A small app. A big responsibility.

A little guardian.
Safer server failover.

Ruru is an open-source macOS service coordinator for high-availability apps.
It keeps ownership clear, tells you when a server goes offline, and helps your apps take turns safely.

Native macOS app · macOS 15+ · Open source

THE HANDOVER

Two servers. One shared decision.

Illustrated demo
Ruru owl
RuruKeeping watch
PERMISSIONServer A
One active owner. One ready standby.
server-a.example
PREFERRED PRIMARY

Server A

Active
SwiftBotService console
Running
Handling the workloadLease renewed. Output enabled.
server-b.example
BACKUP

Server B

Standby
SwiftBotService console
Waiting
Ready when neededWatching for available permission.
01
Business as usual.

Server A renews its permission while Server B waits.

A simplified loop with accelerated timing. Compatible apps acquire leases and stop output when permission expires. Ruru doesn’t power on servers or route website traffic.

One owner at a time

A clear answer to who may act.

Your apps do the work

Ruru keeps coordination separate.

Quietly on your Mac

Close the window. Keep watching.

SMALL APP, WATCHFUL EYES

Less guesswork.
More peace of mind.

See ownership, connections, and what changed.
All in one native macOS console.

Guard your services

Coordinate SwiftBot or your own apps. Each service gets its own credentials, lease length, and ownership history.

Service setup

Prefer your primary

Choose the server you’d like in charge. Compatible clients can coordinate a safe return when it’s ready.

How preferences work

Connect across locations

Built-in Cloudflare Tunnel setup gives participating servers an HTTPS address to reach your Ruru Mac. A read-only connection check separates the local listener, connector, and public health.

Internet access guide

Know when a server drops out

If the owner stops renewing and no server takes over within 15 seconds, Ruru sends a macOS or Discord alert that the service is down—and when it recovers. You can also get alerts for failovers, UPS power loss, low battery, restored power, planned shutdowns, and Ruru issues. Participant activity joins searchable ownership history.

Explore the docs

Watch power and uptime

See power-source and battery telemetry reported by participants. Opt-in alerts cover UPS transfer to battery and battery at 20% or less; compatible clients can hand off ownership during graceful shutdown.

Learn more

See where resources live

An opt-in catalogue shows locations reported by your servers. Your apps keep their files and serve their own workloads.

Coordination API

Bring your own app

Integrate with the RuruClient Swift package or the documented HTTP protocol. Service coordination beyond a single app.

Integration guide
A PROPER MAC APP

The whole picture.
At a glance.

A familiar native console for your services.
No dashboard to host. No browser required.

Ruru Overview console with authority status, services, Internet Access, and activity
Overview brings authority status, guarded services, and connections together.Development preview
CLEAR PERMISSION, BY DESIGN

Taking turns
is serious business.

When connectivity gets messy, ownership needs to stay clear. Ruru records grants durably and asks cooperating apps to respect their permission deadlines.

Read the architecture
Permission has an expiry
A client that can’t reach Ruru stops acting when its local permission expires.
Ownership has a history
Durable grants and increasing ownership terms keep transitions traceable.
Restart means waiting safely
After restarting, Ruru waits out prior grants before allowing new ownership.
Graceful shutdown handover
A compatible client can drain work and release ownership during a planned shutdown, enabling faster standby takeover.
Ruru owl iconMEET YOUR NEW GUARDIAN

A separate Mac.
A shared sense of order.

Run Ruru on a Mac your servers can reach.
Pair your apps, choose your settings, and keep an eye on ownership.

Ruru is in early development. Public release builds aren’t available yet.
Features and behavior may change as the app grows.