Skip to content


Switch branches/tags

Latest commit

* Inhouse Dockerfile and entrypoint from ajacobson/chiadog-docker

This brings over only only drop dead simple bits that really should live
with the tool itself.

Major benefits:
- Can easily build any state of the repo regardless of branch or
  mid-development into a functional image without mucking about with an
  external repo.
- Faster builds when the source code is already present without an extra

Minor fixes added as well:
- was missing a shebang
- Simplified entrypoint running now that the script has a proper
- Simplified logic by switching WORKDIR earlier
- Add a .dockerignore file to prune dirty state and useless weight from
  the container.

Does not include:
- Any documentation. Docker is an advanced option in any case but this
  should be added as a followup.
- Automated Docker builds. Those come in the next commit.

* Automate building of Docker images.

- Images based on the `main` branch will update the `latest` tag.
- Other branches will be tagged with the branch name and first 6 chars
  of commit hash.
- Any git tags will tag images as-is, say `v0.7.0` would become: ``

* Simplify & improve Docker image, change config env to CHIADOG_CONFIG_DIR

- Breaking change for anyone coming from ajacobson/chiadog-docker: The
  config dir env variable is now called CHIADOG_CONFIG_DIR
- Switch base image to python:3.10-slim, reduced image size
- Dropped manual TZ handling at the container system level, just setting
  env TZ is enough
- Dropped manual PyNaCL install, requirements pull in the binary wheel
  just fine
- Simplify entrypoint and use sh for security.

Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Photo by Zoltan Tukacs on Unsplash

Watchdog for your Chia farm

So you've become a Chia farmer and want to maximize the probability of getting a reward? Chiadog helps with automated monitoring and sends you a mobile notification in case something appears to malfunction.

Supported Notifications

Subsystem Notification (example values) Priority
Harvester Your harvester appears to be offline! No events for the past 400 seconds. HIGH
Harvester Disconnected HDD? The total plot count decreased from 100 to 40. HIGH
Harvester Experiencing networking issues? Harvester did not participate in any challenge for 120 seconds. It's now working again. NORMAL
Harvester Seeking plots took too long: 21.42 seconds! NORMAL
Full Node Experiencing networking issues? Skipped 42 signage points! NORMAL
Full Node Block found!! LOW
Wallet Cha-ching! Just received 2.0 XCH ☘️ LOW
Daily Stats Hello farmer! 👋 Here's what happened in the last 24 hours:

Received ☘️: 2.00 XCH️
Proofs 🧾: 176 found!
- 176 partials submitted 📑
- 0 blocks found 📦
Search 🔍:
- average: 0.46s
- over 5s: 2 occasions
- over 15s: 1 occasions
Plots 🌱: 42, new: 2
Eligible plots 🥇: 0.08 average
Skipped SPs ⚠️: 7 (0.01%)

Please refer to Status Reference page for detailed explanations of the notifications.

How it works?

It parses the debug.log generated by the chia process and runs various checks to determine the health of your farmer. Among others, it can detect if your node has lost sync and the farmer is no longer participating in challenges, or if one of your external HDDs disconnected and your harvester doesn't have access to the full amount of plots you have.

Access & Security

It only requires read-access to your debug.log file and internet connection to send out notifications. It's highly recommended that you run chiadog in a sandboxed environment - this is described in the advanced section below.

Furthermore, following best security practices, you should keep your wallet separate.

Supported Integrations for Notifications

You may use one (or more) of the following integrations to receive notifications from chiadog.

Integration Advantages Cost
Pushover High priority notifications that can override your phone's silent mode. $5 one time purchase after 30 day trial.
E-mail You probably already have an email. No additional apps. Free
Slack Quick & easy setup. Free
Discord Quick & easy setup. Free
Telegram Quick & easy setup. Free
Shell script (beta) Execute anything in your own script. Free
MQTT Well-suited for Home Automation. Free
Grafana For hardware monitoring. Free

For detailed guide on how to test and configure, please refer to

Getting started


  • Linux, MacOS & Windows
  • Python 3.7+
  • Git
  • Enabled INFO logs on your chia farmer

The instructions below are specific to Linux and MacOS, for installing chiadog on Windows, please refer to this separate README section.

How to enable INFO logs on chia farmer?

First configure the log level to INFO. This ensures that all logs necessary for chiadog to operate are available under ~/.chia/mainnet/log/debug.log.

chia configure -log-level=INFO

Then restart your farmer to apply the changes:

chia start --restart farmer

Check that logs are coming in:

cat ~/.chia/mainnet/log/debug.log


For updating from previous version, see section below.

  1. Clone the repository
git clone
cd chiadog
  1. Run the install script.
  1. Copy the example config file
cp config-example.yaml config.yaml
  1. Open up config.yaml in your editor and configure it to your preferences.

Updating to the latest release

Skip this if you followed the above section.

cd chiadog

git fetch
git checkout main
git pull


Important: Automated migration of config is not supported. Please check that your config.yaml has all new fields introduced in config-example.yaml and add anything missing. If correctly migrated, you shouldn't get any ERROR logs.

Monitoring a local harvester / farmer

  1. Open config.yaml and configure file_log_consumer:

    • You need to enable the file log consumer to read local chia log files
    • Double-check that the path to your chia logs is correct
  2. Start the watchdog

  1. Verify that your plots are detected. Within a few seconds you should see INFO log:
Detected new plots. Farming with 42 plots.

If you see the above log message, you can be certain that chiadog is running correctly. It'll remain silent until the next scheduled daily notification or until any issues are detected.

You can repeat the above process for every machine where you are running a harvester. Use the notification_title_prefix in config.yaml to give every machine a unique notification prefix so that you can easily distinguish them.

If you don't want to setup chiadog on each machine separately, you can also monitor multiple remote harvesters and run chiadog on a single machine. Please refer to the wiki page on Remote Monitoring Multiple Harvesters.


You can enable more verbose logging from config.yaml by changing INFO to DEBUG. You should see logs for every keep-alive event from the harvester.

Advanced Usage

Redundant monitoring for chiadog

There are failure-cases in which chiadog is helpless. For example, your computer completely freezes or shuts down. Perhaps your entire home network goes down. chiadog won't be able to send you a notification.

There's a way however: in the config under the section of keep_alive_monitor, you can enable pinging to a remote service that will act as a watchdog of chiadog. A second level of redundancy, if you wish!

You may chose your favourite service for that, I've tested it with It's free to signup and create an endpoint that expects to receive pings every 10 minutes. If it does not, it will notify you. It has integrations with Pushover, Email, Slack, Discord and more.

Running chiadog in the background

. ./venv/bin/activate
nohup python3 -u --config config.yaml > output.log 2>&1 &

To stop chiadog, you can find the Process ID (PID) via ps aux | grep and then softly interrupt the process with kill -SIGINT <pid_here>.

Running chiadog in sandboxed environment

We're in the early stages of exploring the best way to provide easy to setup sandboxed environment where the chiadog process is completely isolated from potentially accessing your private keys. Contributions in that direction are very welcome. Meanwhile you can check out @ajacobson repository for chiadog-docker.

Alternatively, as suggested here you can run chiadog from a unix user with limited permissions.


Contributions are always welcome! Please refer to CONTRIBUTING documentation.