Automated PPDG-3R and PP-OPO tax reports generation for Interactive Brokers. It automatically fetches your data and generates a ready-to-upload XML files with all prices converted to RSD.
Graphical installers are available for Windows and macOS.
If you use the graphical interface, configure your data (the Config button),
then just use Sync to refresh data and create declarations.
If CLI is your native language (AI agents and brave humans), follow CLI documentation.
- Rust (stable toolchain, installed via
rustup) rustfmtandclippyare installed automatically fromrust-toolchain.toml
cargo build # CLI only (debug)
cargo build --features gui # CLI + GUI (debug)
cargo build --release --features gui # optimized, strippedTwo binaries are produced (when built with --features gui):
target/release/ibkr-porez-- CLI (also launches GUI when run without arguments)target/release/ibkr-porez-gui-- GUI
On Linux, building the GUI requires X11/Wayland and GTK development libraries:
sudo apt-get install -y libxcb-render0-dev libxcb-shape0-dev \
libxcb-xfixes0-dev libxkbcommon-dev libgtk-3-devcargo test # CLI and library tests
cargo test --features gui # all tests including GUI unit testsThe gui feature is not enabled by default, so rust-analyzer won't index GUI code
out of the box. Add this to your workspace settings (.vscode/settings.json):
{ "rust-analyzer.cargo.features": ["gui"] }cargo fmt --check
cargo clippy --features gui -- -D warningsThe single source of truth for the version is version in Cargo.toml.
make version # show current versionTo create a release, pick the bump level:
make ver-bug # 0.0.1 -> 0.0.2 (bug fix)
make ver-feature # 0.0.2 -> 0.1.0 (new feature)
make ver-release # 0.1.0 -> 1.0.0 (release)This bumps the version in Cargo.toml, commits, and creates a git tag.
Then push to trigger the
release workflow:
git push origin main v$(make version)The workflow builds release binaries for Linux, macOS (x86_64 + aarch64), and Windows, then publishes them as a GitHub Release.
Docs are built with mdBook (5 languages)
and deployed automatically to
GitHub Pages on push to main.
# Build locally
bash scripts/build-docs.sh
# Serve locally (English only)
mdbook serve docs/en