Renew your vehicle registration from the terminal.
faaadmv is a REPL-first CLI tool that automates DMV vehicle registration renewal via Playwright. The primary workflow is interactive and designed for manual verification.
- REPL-First Workflow – One command opens an interactive menu
- Status Check – View registration status without logging in
- Renewal with Dry-Run – Validate eligibility and fees without payment
- Watch Mode – Headed browser with slow motion and pause for inspection
- Local Artifacts – Screenshots and debug logs saved locally
- Secure Storage – Config and payment data stored on your machine
uv pip install faaadmv
# Install browser (first time only)
playwright install chromium
In the REPL:
aAdd a vehiclesCheck registration statusdRenew (dry-run)rRenew registrationxRemove a vehiclemSet default vehicle (when multiple)wToggle watch modeqQuit
- Debug log:
~/Library/Application Support/faaadmv/debug.log - Screenshots:
~/Library/Application Support/faaadmv/artifacts/
These may include plate/VIN information. Delete them if you do not want local traces.
| State | Status |
|---|---|
| California (CA) | Supported |
| Texas (TX) | Planned |
| New York (NY) | Planned |
- Python 3.11+
- macOS, Linux, or Windows
- Valid smog certification (CA)
- Current insurance on file with DMV
# Clone the repo
git clone https://github.com/yourusername/faaadmv
cd faaadmv
# Install in dev mode
uv pip install -e ".[dev]"
# Manual testing
faaadmv
See docs/TESTING.md for the manual testing checklist.
docs/ARCHITECTURE.mddocs/DATA_MODELS.mddocs/SECURITY.mddocs/PROVIDERS.mddocs/TESTING.mddocs/PROJECT_STRUCTURE.md
This tool automates publicly available DMV web portals. You are responsible for ensuring all information is accurate and for any transactions initiated. The developers are not liable for failed transactions or fees incurred.