Skip to content

Add Canary wallet monitoring app#984

Open
schjonhaug wants to merge 3 commits intomynodebtc:masterfrom
schjonhaug:add-canary-app
Open

Add Canary wallet monitoring app#984
schjonhaug wants to merge 3 commits intomynodebtc:masterfrom
schjonhaug:add-canary-app

Conversation

@schjonhaug
Copy link
Copy Markdown

@schjonhaug schjonhaug commented Jan 10, 2026

Description

Adds Canary - a Bitcoin wallet monitoring and early warning system for cold storage.

Features:

  • Watch-only wallet monitoring via output descriptors
  • Instant notifications via ntfy push notifications
  • Transaction detection with RBF/CPFP awareness
  • Balance alerts (threshold-based notifications)
  • Deep wallet scanning for comprehensive history
  • Multi-language support

Canary connects to the local Electrum server (electrs) to monitor wallets without requiring private keys.

Checklist

  • tested successfully on local MyNode, if yes, list the device(s) below

List of test device(s)

  • PC (MyNode)

@schjonhaug schjonhaug marked this pull request as ready for review January 10, 2026 18:09
@schjonhaug
Copy link
Copy Markdown
Author

@tehelsper , do you have any time soon to take a look at this?

@tehelsper
Copy link
Copy Markdown
Collaborator

I should be able to get to it in the next release. I've got a couple quick comments. Thanks!

  • Can you update to v1.4.0? Looks like you have a new release out.
  • Can you update the install script to use the VERSION for the version? Apps like albyhub might be a good example.

@schjonhaug
Copy link
Copy Markdown
Author

schjonhaug commented Mar 31, 2026

I can update this to v1.4.0, but I’d prefer not to do that yet without testing it on a real myNode device first. v1.4.0 adds new self-hosted behavior around local Mempool integration, and I haven’t had a chance to validate that path on actual myNode hardware yet. ntfy should be fine since it’s configured in Canary’s settings and defaults to ntfy.sh, but local Mempool support on myNode likely deserves a proper follow-up so Canary can detect and use the local instance cleanly.

Since I have tested the integration itself on a real myNode box with the current Canary build, I think the safer path for this PR is to keep it on the tested version for now, and then do a follow-up bump to v1.4.0 once I can verify the myNode-specific Mempool behavior properly.

@schjonhaug
Copy link
Copy Markdown
Author

Retested Canary on a fresh myNode machine and updated this branch to v1.4.0.

Validation summary:

  • Built and sideloaded the updated package successfully
  • Verified Canary installs and runs correctly on myNode
  • Confirmed the app is reachable after install

Changes included in this update:

  • Bump Canary backend/frontend image tags to v1.4.0
  • Update app metadata to v1.4.0
  • Add the missing scaffold required by myNode's dynamic app loader
  • Remove the empty hook
  • Add and to avoid systemd timing out during first-time image pulls / restart cleanup

This has now been pushed to the PR branch for review.

# Give backend time to start
ExecStartPre=/bin/sleep 2
# Start frontend container (main process)
ExecStart=/usr/bin/docker run --rm --name canary-frontend --network host -e API_URL=http://127.0.0.1:3010 -e PORT=3005 schjonhaug/canary-frontend:v1.4.0
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How is this 3010 port being used? That's already taken by RTL.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This also specifically uses the version tagged 1.4.0, it could use latest if the install process always:

  • Removes old versions
  • Installs new version
  • Tags new version as latest

The install_albyhub.sh script might offer a good pattern for how to do this.

docker rm canary canary-frontend 2>/dev/null || true

echo "Removing Docker images..."
docker rmi schjonhaug/canary-backend:v1.3.0 2>/dev/null || true
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This still removes the old version. Look at install_albyhub.sh lines 24-25 to see if they can help remove old images generically rather than a specific version.

set -e

echo "Pulling Canary Docker images..."
docker pull schjonhaug/canary-backend:v1.4.0
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Try using {VERSION} rather than the specific tag here, that way the app can be updated just by updating the JSON file that manages the app.

@schjonhaug
Copy link
Copy Markdown
Author

schjonhaug commented Apr 22, 2026

Thanks for the feedback, I've addressed the requested changes and pushed the updates to the PR branch.

What changed:

  • Moved Canarys internal backend off port 3010 to 3004 to avoid the RTL conflict
  • Updated the install flow to use the app VERSION from the JSON-managed metadata
  • Removed hardcoded version tags from the service and switched it to stable local image tags
  • Updated install/uninstall to remove Canary images generically rather than targeting a specific old version
  • Mirrored the same package changes into the standalone canary-mynode repo to keep it in sync

The PR branch has been updated and is ready for another look.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants