selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

Operational logo

Self-host Operational

v0.4.0

Open-source event tracker with push notifications

BetaOpen SourceAGPL-3.0
Updated9 hours ago
LanguageVue
Setup difficultyModerate
MobilePWA
Stars
474
Ports
80 (frontend), 4337 (backend API), 2000 (backend default port)
Requires
MySQL
Docker
ghcr.io/operational-co/operational.co
Install with Docker
Push notifications feature showing mobile and webapp notificationsAction buttons feature for triggering webhooksEvent contexts for understanding complex workflowsJSON logging for webhook tracking

What is Operational?

Operational is an open-source event tracking tool designed for tech products to monitor critical events like user signups, payments, cancellations, webhooks, cronjobs, and errors in real-time. It provides push notifications to mobile devices via PWA, action buttons to trigger webhooks, event contexts for understanding complex workflows, and JSON logging. It can be self-hosted via Docker, VPS, Render.com, or locally with Node.js 18+ and MySQL 8.x. The project is licensed under AGPL-3.0.

Should you self-host Operational?

Operational scores 49/100 on selfhost.directory (how scoring works) and ranks #25 of 51 in Monitoring & observability. It has 474 GitHub stars.

It shipped 1 stable release in the past year. The latest, v0.4.0, came out on 22 July 2026.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is AGPL-3.0-licensed and written mostly in Vue.

Its closest alternative on selfhost.directory is Operational.co (49/100, 474 stars). Operational scores higher overall. See Operational vs Operational.co side by side.

Features

  • Action Buttons
  • Event contexts
  • JSON logging
  • Progressive Web App
  • Push Notifications
  • Self-hostable
  • Test events

Operational README

How to install Operational

Install Operational with Docker

Environment variables
DATABASE_URL, VITE_API_URL, APP_URL, VAPID_EMAIL, VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY, RESEND, PORT, SECRET, ADMIN_EMAIL, REMOVE_EVENTS_AFTER, REMOVE_TEST_EVENTS_AFTER, CORS

docker pull ghcr.io/operational-co/operational.co:latest docker run -d
-p 80:80
-p 4337:4337
-e DATABASE_URL="mysql://root:password@127.0.0.1/operational-staging"
-e VITE_API_URL="http://localhost:4337"
-e APP_URL="http://localhost"
-e VAPID_EMAIL="mailto:your-email@example.com"
-e VAPID_PUBLIC_KEY=""
-e VAPID_PRIVATE_KEY=""
-e RESEND="your-resend-key"
-e PORT=2000
-e SECRET="your-secret"
-e ADMIN_EMAIL="shashwat.amin@yahoo.com"
-e REMOVE_EVENTS_AFTER="120"
-e REMOVE_TEST_EVENTS_AFTER="7"
-e CORS=""

Pre-built images on GHCR; requires MySQL database

Operational releases & version history

FAQ

How long are tracked events stored for?

Events are stored for at least 1 year. Longer retention timelines haven't been decided yet.

When will I get billed?

Billing occurs on the 1st of each month for the previous month's events.

What happens if I don't enter my card details after my free events are up?

You get a 5-day grace period to enter card details. After that, your account will be deactivated.

Do I need a credit card to signup?

No credit card required to sign up. You'll only be asked for card details after exceeding 10,000 free events.

Is the 10,000 free events per month or one time?

The 10,000 free events are one-time only. After tracking 10,000 events, you'll be asked to enter credit card details.

More in Notifications

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…