Documentation

Setup, commands, config. Everything in one place.

Quick Start

Three steps. Under 2 minutes. No, really.

Step 1: Connect your messenger

Find mttrly in your messenger: Telegram (@mttrly_bot), Slack (add to workspace), or Discord (invite bot). Start a chat — you'll get your API token right away.

Step 2: Install the agent

SSH into your server and run this. It's a lightweight Go binary (~10MB), no dependencies, no bloat.

curl -sL https://mttrly.com/install.sh | bash -s -- -t YOUR_TOKEN

Step 3: Say hello

Send /status in your messenger. If you see your server's CPU, RAM, and disk stats — you're done. That was fast.

Commands

Every command mttrly understands, with options and examples.

$ /status

Server health at a glance: CPU, RAM, disk, running services.

Options:

  • -vVerbose — includes process list
  • -jOutput as JSON (for scripts)

Example:

/status -v
$ /logs

Read logs without SSH. Filter by service, tail in real-time, or show only errors.

Options:

  • <service>Which service (nginx, app, etc.)
  • -n <lines>How many lines (default: 50)
  • -fFollow — like tail -f
  • --errorsErrors only

Example:

/logs nginx -n 100 --errors
$ /restart

Restart a service. Asks you to confirm first (unless you --force it).

Options:

  • <service>Service to restart
  • --forceSkip confirmation — you're sure

Example:

/restart nginx
$ /deploy

Git pull + restart. The deploy button you always wanted.

Options:

  • <app>Which app to deploy
  • --branch <name>Git branch (default: main)

Example:

/deploy myapp --branch staging
$ /run

Run a custom playbook you've defined in config.

Options:

  • <playbook>Playbook name

Example:

/run cleanup-logs

Configuration

One YAML file. Three main sections. Here's what you can tweak.

Config file location: /etc/mttrly/config.yaml

services

Tell mttrly which services it can manage. Only these will show up in commands.

services:
  - nginx
  - myapp
  - redis
playbooks

Your own scripts, triggerable via /run. Set confirm: true for anything scary.

playbooks:
  cleanup-logs:
    script: /opt/scripts/cleanup.sh
    confirm: true
alerts

Get pinged when resource usage crosses a threshold. Set percentages that make sense for your setup.

alerts:
  cpu_threshold: 80
  memory_threshold: 90
  disk_threshold: 85

Security

How mttrly keeps your servers safe. The short version: we're paranoid so you don't have to be.

Outbound-only connections

The agent connects to us — not the other way around. No ports to open. Your firewall stays exactly as it is.

Confirmation before anything scary

Restart, deploy, custom scripts — all need you to tap "Confirm" first. No surprises, no accidental nukes.

Minimal permissions

The agent runs as its own user with bare minimum privileges. You decide which commands get sudo. Nothing else does.

Encrypted everything

All traffic between your server and your messenger is encrypted. We don't store your logs or sensitive data. Period.

Token rotation

Think your token leaked? Regenerate it. The old one dies instantly. Takes 10 seconds.

Troubleshooting

Something not working? Start here.

Agent won't connect

  • Make sure outbound WebSocket connections are allowed (port 443)
  • Double-check your API token — copy-paste errors are real
  • Check agent logs: journalctl -u mttrly

Commands timeout

  • Your server might be under heavy load — the agent needs CPU too
  • Check if the server has internet access
  • Try restarting the agent: systemctl restart mttrly

Permission denied

  • The mttrly user needs access to the service you're managing
  • Add specific sudo permissions in /etc/sudoers.d/mttrly