Skip to content

Getting Started

Prerequisites

Requirement Notes
Prometheus With node_exporter for CPU/memory/disk metrics
Telegram bot Create one with @BotFather
LLM API key OpenAI or Anthropic
Docker (optional) For the quickest setup

Try the demo first

Before setting up with real credentials, see what InfraSigns output looks like:

git clone https://github.com/infrasigns/infrasigns
cd infrasigns
go run ./cmd/demo

This runs a full digest cycle with mock Prometheus data and prints the result to stdout.

Quick start with Docker

1. Clone and configure

git clone https://github.com/infrasigns/infrasigns
cd infrasigns
cp config/config.yaml config/local.yaml

2. Edit config/local.yaml

sources:
  - name: production
    url: http://your-prometheus:9090

llm:
  provider: openai
  api_key: sk-...
  model: gpt-4o-mini

notify:
  telegram:
    token: "123456:ABC-..."
    chat_id: "-100123456789"

digest:
  schedule: "0 8 * * *"

3. Start

docker compose up -d

The stack includes Prometheus and node_exporter. Point your existing services at the bundled Prometheus or configure sources.url to point at your own.

Manual setup

go build -o infrasigns ./cmd/infrasigns
./infrasigns --config config/local.yaml

Requires Go 1.26+.

Getting your Telegram chat ID

  1. Start a chat with your bot or add it to a group
  2. Send any message
  3. Open https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates
  4. Find "chat":{"id":...} in the response — that's your chat_id

For groups and channels, the ID is negative (e.g. -100123456789).

Verifying the setup

Trigger a digest immediately without waiting for the cron schedule:

# Docker
docker compose exec infrasigns /infrasigns --config /etc/infrasigns/config.yaml

# Manual
./infrasigns --config config/local.yaml

Note

The process starts the scheduler and waits for the next scheduled time. Use Ctrl+C to stop after confirming the config loads correctly.

What's next