Skip to main content

tg-ops

Codacy Badge

Remote system operations and monitoring on Linux hosts via Telegram.

tg-ops is a lightweight bot that runs a small HTTP webhook server to let you monitor health, check status, and execute commands on your Linux servers directly from a Telegram chat.

Features

Bot commands

  • /ping Check bot responsiveness.
  • /uptime Returns the server's uptime.
  • /status "detailed dashboard: CPU/RAM usage, monitored disks space, and systemd service status."
  • /exec "Shell Execution: Run arbitrary commands (e.g., /exec ls -la)."
  • /docker Container Management via Interactive menu.
  • /reboot Coming Soon.

Requirements

  • Python: >= 3.11
  • OS: Linux
  • Docker: optional (only needed if you use /docker)
  • Network: A public HTTPS URL (e.g. Cloudflare Tunnel, or ngrok) reachable by Telegram's webhook servers.

Installation

You can install tg-ops via Poetry or standard pip.

From source (Poetry)

# 1. Install Poetry if you haven't already
pip install poetry

# 2. Install dependencies
poetry install

# 3. Run the app
poetry run tg-ops --help

With pip

pip install tg-ops

# Run the app
tg-ops --help

Configuration

tg-ops relies on a TOML configuration file.

  • Run the app once to generate a default config file at ~/.tg-ops.toml (or specify a custom path with -f):
tg-ops run
  • Edit ~/.tg-ops.toml with your details.

Minimal example (~/.tg-ops.toml):

# Telegram bot token from @BotFather
bot_token = "YOUR_BOT_TOKEN"

# Base public URL for your webhook server (the app uses the /webhook path)
webhook_url = "https://your-domain.example"

# HTTP port to listen on
port = 5000

# Optional, recommended: Telegram webhook secret token
secret_token = "super-secret-random-string"

# Optional
log_level = "INFO"

# Optional monitoring lists
monitored_services = ["docker", "nginx", "ssh"]
monitored_disks = ["/", "/mnt/data"]

# Optional docker container mapping:
# keys are container names shown in the menu,
# values are docker-compose file paths used for actions.
[monitored_containers]
myapp = "/opt/myapp/docker-compose.yml"
webapp = "/opt/web/docker-compose.yml"
db = "/opt/db/docker-compose.yml"

Usage

Start the server and bot

tg-ops run

Use a custom config path:

tg-ops -f /path/to/config.toml run

The server listens on 0.0.0.0:<port> and serves Telegram updates at:

<webhook_url>/webhook

Manage Telegram webhooks

# Register the webhook with Telegram (uses settings from config)
tg-ops webhook set

# Check current webhook status
tg-ops webhook get

# Remove the webhook integration
tg-ops webhook unset

Notes:

  • webhook set registers <webhook_url>/webhook.
  • If you configured a secret_token in your TOML file, webhook set will automatically register it with Telegram, ensuring the server rejects any requests without the correct header.

Metadata

Release files for tg-ops 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tg-ops 0.1.0
File Size Uploaded
tg_ops-0.1.0.tar.gz 12.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tg-ops 0.1.0
File Interpreter ABI Platform
tg_ops-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 27.0 kB

Release files / tg_ops-0.1.0.tar.gz

Download URL tg_ops-0.1.0.tar.gz
Size 12.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6e4d3008bf5eaa2c4e5a5a1432bccf5f85f2cba02f9443106cd1a2f92488785c
BLAKE2b-256 checksum
How to use checksums
97c44e1c5f398b20c6238331aa4df53f7c0362bace355d1b25d39123f2364b57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 6, 2026.

Transparency log

Release files / tg_ops-0.1.0-py3-none-any.whl

Download URL tg_ops-0.1.0-py3-none-any.whl
Size 14.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7239b4042abf1c0a6da00429a883dec8862587655936bd0d6bf39dd8ccf29d0d
BLAKE2b-256 checksum
How to use checksums
a410ec054f0840a8d874e118dd71b986944d9765771c7c6deeb3ec0527f2c66d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jan 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page