No description
Find a file
Thales Maciel 31a1e069b3
Prepare the 1.0.0 GA release surface
Add the repo-side pieces for milestone 5: MIT licensing, real maintainer and forge metadata, a public support doc, 1.0.0 release notes, release-prep tooling, and CI uploads for the full candidate artifact set.

Keep source-tree version surfaces honest by reading the local project version in the CLI and About dialog, and cover the new release-prep plus version-fallback behavior with focused tests.

Document where raw validation evidence belongs, add the GA validation rollup, and archive the latest readiness review. Milestone 5 remains open until the forge release page is published and the milestone 2 and 3 matrices are filled with linked manual evidence.

Validation: PYTHONPATH=src python3 -m unittest discover -s tests -p 'test_*.py'; PYTHONPATH=src python3 -m unittest tests.test_release_prep tests.test_portable_bundle tests.test_aman_cli tests.test_config_ui; python3 -m py_compile src/*.py tests/*.py; PYTHONPATH=src python3 -m aman version
2026-03-12 19:36:52 -03:00
.github/workflows Prepare the 1.0.0 GA release surface 2026-03-12 19:36:52 -03:00
benchmarks Add benchmark-driven model promotion workflow and pipeline stages 2026-02-28 15:12:33 -03:00
docs Prepare the 1.0.0 GA release surface 2026-03-12 19:36:52 -03:00
packaging Prepare the 1.0.0 GA release surface 2026-03-12 19:36:52 -03:00
scripts Prepare the 1.0.0 GA release surface 2026-03-12 19:36:52 -03:00
src Prepare the 1.0.0 GA release surface 2026-03-12 19:36:52 -03:00
systemd Add multilingual STT support and config UI/runtime updates 2026-02-27 12:38:13 -03:00
tests Prepare the 1.0.0 GA release surface 2026-03-12 19:36:52 -03:00
user-readiness Prepare the 1.0.0 GA release surface 2026-03-12 19:36:52 -03:00
.gitignore Ignore generated egg-info directories 2026-03-12 15:00:37 -03:00
AGENTS.md Rename project from lel to aman 2026-02-25 11:11:10 -03:00
CHANGELOG.md Prepare the 1.0.0 GA release surface 2026-03-12 19:36:52 -03:00
config.example.json Add benchmark-driven model promotion workflow and pipeline stages 2026-02-28 15:12:33 -03:00
LICENSE Prepare the 1.0.0 GA release surface 2026-03-12 19:36:52 -03:00
Makefile Prepare the 1.0.0 GA release surface 2026-03-12 19:36:52 -03:00
pyproject.toml Prepare the 1.0.0 GA release surface 2026-03-12 19:36:52 -03:00
README.md Prepare the 1.0.0 GA release surface 2026-03-12 19:36:52 -03:00
SUPPORT.md Prepare the 1.0.0 GA release surface 2026-03-12 19:36:52 -03:00
uv.lock Prepare the 1.0.0 GA release surface 2026-03-12 19:36:52 -03:00

aman

Local amanuensis for X11 desktop dictation

Aman is a local X11 dictation daemon for Linux desktops. The supported path is: install the portable bundle, save the first-run settings window once, then use a hotkey to dictate into the focused app.

Published bundles, checksums, and release notes live on the git.thaloco.com releases page. Support requests and bug reports go to SUPPORT.md or thales@thalesmaciel.com.

Supported Path

Surface Contract
Desktop session X11 only
Runtime dependencies Installed from the distro package manager
Supported daily-use mode systemd --user service
Manual foreground mode aman run for setup, support, and debugging
Canonical recovery sequence aman doctor -> aman self-check -> journalctl --user -u aman -> aman run --verbose
Representative GA validation families Debian/Ubuntu, Arch, Fedora, openSUSE
Portable installer prerequisite System CPython 3.10, 3.11, or 3.12

Distribution policy and user persona details live in docs/persona-and-distribution.md.

60-Second Quickstart

First, install the runtime dependencies for your distro:

Ubuntu/Debian
sudo apt install -y libportaudio2 python3-gi python3-xlib gir1.2-gtk-3.0 libayatana-appindicator3-1
Arch Linux
sudo pacman -S --needed portaudio gtk3 libayatana-appindicator python-gobject python-xlib
Fedora
sudo dnf install -y portaudio gtk3 libayatana-appindicator-gtk3 python3-gobject python3-xlib
openSUSE
sudo zypper install -y portaudio gtk3 libayatana-appindicator3-1 python3-gobject python3-python-xlib

Then install Aman and run the first dictation:

  1. Download, verify, and extract the portable bundle from the releases page.
  2. Run ./install.sh.
  3. When Aman Settings (Required) opens, choose your microphone and keep Clipboard paste (recommended) unless you have a reason to change it.
  4. Leave the default hotkey Cmd+m unless it conflicts. On Linux, Cmd and Super are equivalent in Aman, so this is the same modifier many users call Super+m.
  5. Click Apply.
  6. Put your cursor in any text field.
  7. Press the hotkey once, say hello from Aman, then press the hotkey again.
sha256sum -c aman-x11-linux-<version>.tar.gz.sha256
tar -xzf aman-x11-linux-<version>.tar.gz
cd aman-x11-linux-<version>
./install.sh

What Success Looks Like

  • On first launch, Aman opens the Aman Settings (Required) window.
  • After you save settings, the tray returns to Idle.
  • During dictation, the tray cycles Idle -> Recording -> STT -> AI Processing -> Idle.
  • The focused text field receives text similar to Hello from Aman.

Visual Proof

Aman settings window

Aman tray menu

Watch the first-run walkthrough (WebM)

Validate Your Install

Run the supported checks in this order:

aman doctor --config ~/.config/aman/config.json
aman self-check --config ~/.config/aman/config.json
  • aman doctor is the fast, read-only preflight for config, X11 session, audio runtime, input resolution, hotkey availability, injection backend selection, and service prerequisites.
  • aman self-check is the deeper, still read-only installed-system readiness check. It includes every doctor check plus managed model cache, cache writability, service unit/state, and startup readiness.
  • Exit code 0 means every check finished as ok or warn. Exit code 2 means at least one check finished as fail.

Troubleshooting

  • Settings window did not appear: run aman run --config ~/.config/aman/config.json once in the foreground.
  • No tray icon after saving settings: run aman self-check --config ~/.config/aman/config.json.
  • Hotkey does not start recording: run aman doctor --config ~/.config/aman/config.json and pick a different hotkey in Settings if needed.
  • Microphone test fails or no audio is captured: re-open Settings, choose another input device, then rerun aman doctor.
  • Text was recorded but not injected: run aman doctor, then aman run --config ~/.config/aman/config.json --verbose.

Use docs/runtime-recovery.md for the full failure map and escalation flow.

Install, Upgrade, and Uninstall

The canonical end-user guide lives in docs/portable-install.md.

  • Fresh install, upgrade, uninstall, and purge behavior are documented there.
  • The same guide covers distro-package conflicts and portable-installer recovery steps.
  • Release-specific notes for 1.0.0 live in docs/releases/1.0.0.md.

Daily Use and Support

  • Supported daily-use path: let the systemd --user service keep Aman running.
  • Supported manual path: use aman run in the foreground for setup, support, or debugging.
  • Tray menu actions are: Settings..., Help, About, Pause Aman / Resume Aman, Reload Config, Run Diagnostics, Open Config Path, and Quit.
  • If required settings are not saved, Aman enters a Settings Required tray state and does not capture audio.

Secondary Channels

  • Portable X11 bundle: current canonical end-user channel.
  • Debian/Ubuntu .deb: secondary packaged channel.
  • Arch PKGBUILD plus source tarball: secondary maintainer and power-user channel.
  • Python wheel and sdist: developer and integrator channel.

More Docs