fyi-cli is a privacy-focused command-line tool for managing Alaveteli-based freedom of information (FOI/OIA) requests. It supports multiple jurisdictions and can track, submit, and archive official information requests across Alaveteli deployments such as New Zealand, Australia, the United Kingdom, Germany, and others.
Main capabilities:
- Multi-jurisdiction support: works with any Alaveteli deployment, including foi-repository (New Zealand), WhatDoTheyKnow (United Kingdom), FragDenStaat (Germany), righttoknow.org.au (Australia), and others, with plans to provide jurisdiction-aware metadata and localization.
- Privacy first: all data is stored locally, with optional encryption and Tor.
- Request tracking: monitor FOI/OIA requests from creation to completion.
- Automated monitoring: automatically watch for instance updates.
- Reporting and analytics: generate dashboards, watch reports, and handover documents.
- Secure storage: encrypt credentials and integrate with operating system keychains.
- CLI + MCP: provides a command-line tool and an MCP server for AI assistants.
- Export options: supports JSON, CSV, and HTML export.
- Faithful archiving: capture requests, correspondence, and attachments in WARC/WACZ format.
Usage: The core of the project is a Rust workspace (fyi-core, fyi-cli, fyi-mcp); the legacy Python package fyi_system can still serve as a reference implementation, but is no longer extended. Full guides are in QUICKSTART.md and INSTALL.md. The CLI reference can be viewed via fyi --help or USER_GUIDE.md. The archive command is read-only and does not require an API key. The discover-bodies command is used for read-only body discovery; --base-url is the instance/capture URL, and --catalog-url is used only when the body CSV is hosted at an explicit alternate URL. --format jsonl includes only the stable downstream contract fields url_name, name, and tags[] on each line; the default JSON format also includes retrieval provenance information. The discovery process uses a contactable User-Agent, checks robots.txt, and backs off on 429/5xx responses. Concurrent worker processes can point to the same SQLite database to enable shared rate limiting, and status can be checked with fyi rate-limit-status --db fyi_system.db.
Use cases: Suitable for individuals, journalists, researchers, or transparency advocates who need to manage freedom of information requests across multiple Alaveteli platforms, especially users who prioritize privacy, want to store data locally, and support offline synchronization. It can also be integrated with AI assistants through the MCP server.
Limitations and notes:
- The project version is 0.1.2 and is evolving from a New Zealand-only tool into a multi-jurisdiction platform.
- Some distribution channels (such as Scoop, WinGet, Homebrew, Chocolatey, and others) are still in draft or unsubmitted status; cargo-binstall is ready but depends on matching GitHub Release assets.
- In live smoke testing, RightToKnow returned HTTP 403 for restricted JSON search requests, so it is recorded as skipped due to external availability and no capture is attempted.
- Please do not report security vulnerabilities through public GitHub issues; use GitHub private vulnerability reporting instead.
- The project uses the MIT license.
- Documentation, issues, and discussions are located respectively atand https://edithatogo.github.io/fyi-cli/、https://github.com/edithatogo/fyi-cli/issues and https://github.com/edithatogo/fyi-cli/discussions。