Skip to main content

Produce comprehensive financial reports for your on-chain org

Project description

DAO Treasury is a comprehensive financial reporting and treasury management solution designed specifically for decentralized organizations. Built as an extension to eth-portfolio's Portfolio Exporter, DAO Treasury automates the collection and visualization of financial data, enabling organizations to monitor and report on treasury activities with clarity and transparency.

Key Features

  • Financial Reporting for DAOs: Extends core portfolio functionalities to generate detailed reports tailored for on-chain organizations.
  • Dashboard Provisioning: Utilizes Grafana dashboards—defined in JSON files within the .grafana/provisioning directories—to offer real-time, dynamic visualizations of treasury data.
  • Automated Data Export: Features a treasury export tool that, once configured (with a supported brownie network and Docker), continuously captures financial snapshots at set intervals.
  • Custom Buckets for Wallets: Assign custom categories ("buckets") to specific wallet addresses for more granular reporting using the --custom-bucket CLI option.
  • Ease of Contribution: Non-technical users can easily update or create dashboard visuals using Grafana’s intuitive UI. The Contributing Guidelines document provides a step-by-step guide to defining new visuals and dashboards and integrating those changes into the repository, ensuring that anyone can contribute to the visual reporting aspect of the project.

Requirements

  • Python 3.10 or higher.
  • At least 16GB of RAM.
  • All dependencies installed as specified in the project’s pyproject.toml file.

Prerequisites

  • First, you will need to bring your own archive node. This can be one you run yourself, or one from one of the common providers (Tenderly, Alchemy, QuickNode, etc.). Your archive node must have tracing enabled (free-tier Alchemy nodes do not support this option).
  • You must configure a brownie network to use your RPC.
  • You will need an auth token for Etherscan's API. Follow their guide to get your key, and set env var ETHERSCAN_TOKEN with its value.
  • You'll also need Docker installed on your system. If on MacOS, you will need to leave Docker Desktop open while DAO Treasury is running.

Debug logging

DAO Treasury relies on ypricemagic for price lookups. If you need to spot long-running price calls, enable the y.stuck? logger at DEBUG. Details: y.stuck? logger.

Installation

pip install dao-treasury

Usage

Run the treasury export tool:

# For pip installations:
dao-treasury run --wallet 0x123 --network mainnet --interval 12h

For local development (from source installation), use:

poetry run dao-treasury run --wallet 0x123 --network mainnet --interval 12h

Assigning Custom Buckets to Wallets:

You can assign custom categories ("buckets") to specific wallet addresses for more granular reporting. Use the --custom-bucket option one or more times, each with the format address:bucket_name:

dao-treasury run --wallet 0x123 --network mainnet --custom-bucket "0x123:Operations" --custom-bucket "0x456:Grants" --custom-bucket "0x789:Investments"

CLI Options:

Only optional arguments are listed here. Required arguments (such as --wallet or --wallets) are shown in the usage examples above.

  • --network: The id of the brownie network the exporter will connect to (default: mainnet)
  • --interval: The time interval between each data snapshot (default: 12h)
  • --concurrency: The max number of historical blocks to export concurrently. (default: 30)
  • --daemon: Run the export process in the background (default: False) (NOTE: currently unsupported)
  • --sort-rules: Directory containing sort rules definitions for transaction categorization.
  • --nicknames: File containing address nicknames for reporting.
  • --grafana-port: Set the port for the Grafana dashboard where you can view data (default: 3004)
  • --renderer-port: Set the port for the report rendering service (default: 8091)
  • --victoria-port: Set the port for the Victoria metrics reporting endpoint (default: 8430)
  • --custom-bucket: Assign a custom bucket/category to a wallet address for reporting. Specify as address:bucket_name. Can be used multiple times.

After running the command, the export script will run continuously until you close your terminal. To view the dashboards, open your browser and navigate to http://localhost:3004. Log in with the Grafana admin credentials you set via GF_SECURITY_ADMIN_USER and GF_SECURITY_ADMIN_PASSWORD (or enable anonymous access with DAO_TREASURY_GRAFANA_ANON_ENABLED=true).

Docker

When you run DAO Treasury, eth-portfolio will build and start 4 required Docker containers on your system. Additionally, DAO Treasury will build and start 2 more required containers:

  • grafana

    • Provides a web-based dashboard for visualizing your treasury data.
    • Pre-configured with dashboards and plugins for real-time monitoring.
    • Uses persistent storage to retain dashboard settings and data.
    • Accessible locally (default port 3004, configurable via --grafana-port).
    • Requires login by default using GF_SECURITY_ADMIN_USER and GF_SECURITY_ADMIN_PASSWORD.
    • Optional anonymous access via DAO_TREASURY_GRAFANA_ANON_ENABLED=true (Viewer-only).
    • Sign-ups are disabled for safety.
    • Validates admin credentials on startup and fails fast if they are incorrect.
    • Integrates with the renderer container for dashboard image export.
    • Loads dashboards and data sources automatically via provisioning files.
  • renderer

    • Runs the official Grafana image renderer service.
    • Enables Grafana to export dashboards as images for reporting or sharing.
    • Operates on port 8091 by default (configurable via --renderer-port).
    • Tightly integrated with the Grafana container for seamless image rendering.

How it works:

  1. DAO Treasury collects and exports treasury data.
  2. Grafana displays this data in pre-built dashboards for analysis and reporting.
  3. The renderer container allows dashboards to be exported as images directly from Grafana.

Additional Information:

  • All containers are orchestrated via Docker Compose and started automatically as needed.
  • Grafana provisioning ensures dashboards and data sources are set up out-of-the-box.
  • All dashboard data and settings are persisted for durability.
  • Dashboard images can be generated for reporting via the renderer.

Screenshots

DAO Transactions Dashboard

image

Contributing

We welcome contributions to DAO Treasury! For detailed guidelines on how to contribute, please see the Contributing Guidelines.

Enjoy!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dao_treasury-1.1.3.tar.gz (79.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dao_treasury-1.1.3-cp312-cp312-win_amd64.whl (282.1 kB view details)

Uploaded CPython 3.12Windows x86-64

dao_treasury-1.1.3-cp312-cp312-win32.whl (259.3 kB view details)

Uploaded CPython 3.12Windows x86

dao_treasury-1.1.3-cp312-cp312-musllinux_1_2_x86_64.whl (539.7 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

dao_treasury-1.1.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (543.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dao_treasury-1.1.3-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (565.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

dao_treasury-1.1.3-cp312-cp312-macosx_11_0_arm64.whl (350.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

dao_treasury-1.1.3-cp311-cp311-win_amd64.whl (279.7 kB view details)

Uploaded CPython 3.11Windows x86-64

dao_treasury-1.1.3-cp311-cp311-win32.whl (256.7 kB view details)

Uploaded CPython 3.11Windows x86

dao_treasury-1.1.3-cp311-cp311-musllinux_1_2_x86_64.whl (516.1 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

dao_treasury-1.1.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (518.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dao_treasury-1.1.3-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (526.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

dao_treasury-1.1.3-cp311-cp311-macosx_11_0_arm64.whl (348.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

dao_treasury-1.1.3-cp310-cp310-win_amd64.whl (280.1 kB view details)

Uploaded CPython 3.10Windows x86-64

dao_treasury-1.1.3-cp310-cp310-win32.whl (257.0 kB view details)

Uploaded CPython 3.10Windows x86

dao_treasury-1.1.3-cp310-cp310-musllinux_1_2_x86_64.whl (524.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

dao_treasury-1.1.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (527.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dao_treasury-1.1.3-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (535.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

dao_treasury-1.1.3-cp310-cp310-macosx_11_0_arm64.whl (353.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file dao_treasury-1.1.3.tar.gz.

File metadata

  • Download URL: dao_treasury-1.1.3.tar.gz
  • Upload date:
  • Size: 79.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for dao_treasury-1.1.3.tar.gz
Algorithm Hash digest
SHA256 43266bf3463e27c8b928967c4c0ba9f88a1a4e119a005e35c62f4022370f874d
MD5 5f75fb7700c54591a77d369edde34123
BLAKE2b-256 e59bc6a84b008ecbe8560a3f10c6df3ef1ed69c3a5eb6b90b674c21efed0bbdc

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6c9d09b00c58c842fcf008970e30d3c9d1be44423a99637a161171a36d22f9e1
MD5 c8847dffed509e13a323c9c3c468cb57
BLAKE2b-256 2ff8a03183a6ee04a3ea6e7782379467b8ab134904115bb0151dcd8423259af3

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp312-cp312-win32.whl.

File metadata

  • Download URL: dao_treasury-1.1.3-cp312-cp312-win32.whl
  • Upload date:
  • Size: 259.3 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for dao_treasury-1.1.3-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 95a6e1dc48c8af928ff1831fea0d98a4867e292ca68ae04a30899a8bdd20db36
MD5 512cda13b41eb67ec38b6fde24c9a124
BLAKE2b-256 27c862a05519c9a96ef6cad70005ef7d825a5430644695fec6aa31e3fb9a83f5

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4f78723ea7c6f63e78f1cf7d458ce4e8660333efac0f2f395b0b7e55431d2658
MD5 411ecedbeeaea2cd1456a3fafd8777a1
BLAKE2b-256 a42e40bfa56c7e3ecbe28902615972421a7740a95a38ccc75252f39d18be5d97

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1e6c8cd2c5a1e38bf099ae475a087bd335341842dd8acfaea1555d9390f7ec34
MD5 8f95983c8728713e10cbc29309d02d6b
BLAKE2b-256 76fd904a4fe5857dc4c6a85f4244ec4c5d488b4e6a38fc31b03fddb055ff3c88

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 7bd8e9290275682915dac53ff194e19ba4b07a3ca452757e1b0e7fed948d398d
MD5 bc43c1f2e56cb2649eafc1b19a1a7f83
BLAKE2b-256 31be53566a56bf3302bc5ba639ff36e2b5703ec334c7d8027653fcd1572919da

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ea4a4644fd3ad201ee988f15abbd98a470e6562e61490c55072c3fb0d98d1640
MD5 8d9712411a8f27595e1a712c892b4f2c
BLAKE2b-256 09f30ecf3da8613ac791d754606348ee3a34e80608e3f66dfe0bcb637786b7df

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b11c1c140e66b9722e8a4629265e19c2c103ebe9465d1232b7dda5f3f3e925b0
MD5 8cb69a7557ca61e513517c7b11fbe96c
BLAKE2b-256 6d1887063c02a596b980b03d195c8ef373c69dd1077e644d789742f54a1ef88f

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp311-cp311-win32.whl.

File metadata

  • Download URL: dao_treasury-1.1.3-cp311-cp311-win32.whl
  • Upload date:
  • Size: 256.7 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for dao_treasury-1.1.3-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 1c7a06779fcab38759bfa7447c38964bbea5f690f741aca551617f7e9c1ecde8
MD5 b8c88cd1c33866dfda5eea078b6b7c18
BLAKE2b-256 e489024af862b8e8f7709334e1c8471dfda10dac5ba6bfd8e43e0cb50ba5ce90

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 130f6f6f6f3109c4c4208002f8db099857e9176fc100f1634f42c79e8bbb628c
MD5 77ed4723cc11c31a8bfc5fb784b09037
BLAKE2b-256 f5e2b0407f95dd70152fb304e4d38dfc959227004f0741f2f283648f71a33991

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b5eae03975d456bfa1fd17aa2ef4a1d0ea8e715afd678f200d052950c710cc1e
MD5 6fe0f040ab067778eb9c2dd0c793dd3a
BLAKE2b-256 d7e315435e8438fc32d5ba1f672c0e36cf61ffb3af457477f75930618a4d965b

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 143560f137e20c1beaacae1664369c37282a29f8f31be2d92bc03d470a032a7f
MD5 cee21dfb0da23f7a54aee5688e1967c9
BLAKE2b-256 e208543c811d617cceb84798fae914566dce8a7417cb9b5fede345245354a7fb

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5854dc3f16f6d0113bd2a4fb7719c60be7c8d19be10e7aa9109c9c37fe401bb7
MD5 5b417805e3f42d0743fcdc2a570605d0
BLAKE2b-256 843674131be44f602009345df306bdd33651bca6aefd1d1effe3a7594e62be6c

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 1c392f6d0f5f44f80e833d86e2ba6f07f3ee6606ad1760c69020f73814943697
MD5 2d2b55494d95d6195ffd1e350f4c64c4
BLAKE2b-256 486eaa268ed666840defdd49d39b26dea0454ac76923f78a36850d583c00e664

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp310-cp310-win32.whl.

File metadata

  • Download URL: dao_treasury-1.1.3-cp310-cp310-win32.whl
  • Upload date:
  • Size: 257.0 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.14

File hashes

Hashes for dao_treasury-1.1.3-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 3c1722d1e5e7170feaab47de4795d4e66680d3d73fd43f671eb4c3ec67c50e77
MD5 db8232f9ec7a35e0a061f5e47e166741
BLAKE2b-256 1c794a8f9ba039bb034a423231998376fc74eb3b6b73b174719d2e31ed17ca17

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b76559706f68b1ef359645b44a89376fa6ae88f01fe875245d9d863f89d513ec
MD5 cf08c253d4162a7b4f8814a4233f4447
BLAKE2b-256 51f8786694226febc36c4116ba7524ecee91b075c97a3912cf32c676626fb0ea

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 56828daf67a38c8a9d8bb412e7ffe37aafea31986442e43c0db2b4ea0ae53b27
MD5 1107e1089939ca3a1d1e6cf8a8afbc24
BLAKE2b-256 7aeb3c053fcced10c214bd2d3834b0850728498aac6b6ec6f5c7ac8388c3c49c

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 a12511030fabe0e523942ad3074a2c37d8c19d856e89d570398ddcc57ffef007
MD5 350ea8ce2cd77078fb3f2bc2c46963bd
BLAKE2b-256 eacfeb05bfdaa502a3b0fa36bfaeb2eeee1b605883e441684784a1398a4b8f10

See more details on using hashes here.

File details

Details for the file dao_treasury-1.1.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dao_treasury-1.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cc37e7cd5fea4b138b295e050e7de7df4401b624bd52e2bc389424d055fdd650
MD5 b1278eccfb1d4c7c5c1a93bb3ba10284
BLAKE2b-256 c0e562510246b6ccebfae29995431ae56e21f82d81c233cec0bfe04de8d2ccd7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page