v2.0.0
Aliasman 2.0 — Complete Rewrite in Rust
v2.0.0 is a ground-up rewrite of aliasman from Go to Rust. The original Go CLI has been replaced with an async, workspace-based Rust project offering the same functionality plus a new web frontend, additional storage backends, and a more extensible architecture.
Architecture
Three-crate workspace:
- aliasman-core — async library with
StorageProviderandEmailProvidertraits, enum dispatch, models, and all domain logic - aliasman-cli — Clap-based CLI binary with comfy-table output
- aliasman-web — Axum web server with Askama templates and HTMX-powered UI
Fully async (tokio), thiserror errors in core, anyhow in binaries, TOML config with named multi-system support.
Storage Providers
- SQLite — with schema migration system (
PRAGMA user_version) and sequential versioned migrations - S3 — Rust-native JSON format with index optimization for fast loading; supports AWS credential chain, static credentials, custom endpoints (MinIO, LocalStack), and
force_path_style - PostgreSQL — native
TIMESTAMPTZ/BOOLEANtypes, schema versioning viaaliasman_metatable - Storage conversion —
storage convertcommand to migrate between any providers, with--legacy-sourceflag for reading Go-era S3 format
CLI Commands
alias create,delete,list,edit— full CRUD with dual-write (email provider first, then storage)alias suspend/unsuspend— toggle alias suspension with dual-writealias search— regex filtering across all alias fieldsaudit— compare storage vs email provider, detect discrepancies (storage-only, email-only, address mismatch)config— display resolved configuration--dry-runflag on all 4 mutation commands (create, delete, suspend, unsuspend)- Aliases displayed as
alias@domainviafull_alias()
Web Frontend
- HTMX-powered alias listing with search/filter and system switching
- Full mutation support: create (with random name generator), edit, delete, suspend, unsuspend
- Auto-refresh alias table on mutations via
HX-Triggerevents - OOB swaps keep alias count in sync on partial updates
- Shared Askama templates with Tailwind CSS
CI/CD & Packaging
- GitHub Actions CI (fmt, clippy, test) on push/PR
- Release workflow triggered by version tags — builds CLI artifacts for x86_64 Linux and aarch64 macOS
- Multi-stage Dockerfile (builder + debian-slim runtime) with Docker image pushed to GHCR
Migration from v1.x (Go)
The S3 storage provider supports reading the original Go implementation's metadata-based format via the --legacy-source flag on storage convert. SQLite and PostgreSQL are new backends with no Go-era equivalent.
Assets
aliasman-aarch64-macos.tar.gz— macOS (Apple Silicon)aliasman-x86_64-linux.tar.gz— Linux (x86_64)