MIRA v0.321.3 — public beta
Pre-release
Pre-release
MIRA v0.321.3 — public beta
MIRA is a self-hostable AI assistant that runs as a single binary. Published by Vexillon under AGPL-3.0-or-later.
Public beta. Supersedes v0.318.7. This release rolls up a security- and reliability-hardening series (v0.319.0 → v0.321.3). No breaking changes — safe to upgrade in place. A few new opt-in settings are noted below.
Account & access security
- Single sign-on now requires a verified email. MIRA no longer links or provisions an account from an SSO/OIDC login whose provider hasn't confirmed the email address, closing an account-takeover path. If you deliberately trust a provider that doesn't assert verification, there's a new per-provider opt-in,
auth.oidc.providers[].trust_unverified_email(default off). - "Sign out everywhere" is now immediate. Revoking a user's access takes effect at once for every active session and token, instead of waiting for short-lived tokens to expire.
- Tool endpoints enforce your role's permissions. Running a tool over the API (
/api/tools/run) and scheduled automations now honor the caller's capability allowlist, so a restricted user can't reach a tool their role forbids. Several admin-only operations (model listing, MCP runtime install, operator config fetch) are now properly gated, and per-route upload size limits were added. - Server-side protection against request forgery (SSRF). User- or admin-supplied URLs for calendar (CalDAV) sync, health webhooks, and provider fetches are validated and won't follow redirects into loopback or cloud-metadata addresses. Self-hosted services on your LAN stay reachable.
- Authenticated-sender allowlist for email. A new per-account option,
require_authenticated_allowlist(default off), only grants allowlist trust to a sender whose message actually passed SPF/DKIM/DMARC — so a forgedFrom:can't impersonate an allowlisted address. - The first-run admin password is written to the console only, never to the log file. And a member's "don't record this" request is now honored server-side across memory and the wiki.
Companion safety
- Urgent alerts are never masked by milder ones. Distress de-duplication is now severity-aware: an acute alert is always delivered even if a lower-severity alert went out recently. Very short messages (e.g. "help") are no longer dropped by length filtering.
- Check-in tracking is more accurate. A genuine inbound message on any channel resets the missed-check-in counter, escalation still fires under small thresholds, and a web check-in only counts as received once delivery is actually confirmed (an active push subscription).
- Safety-path failures are visible. If a distress alert fails to send, or the distress classifier is unavailable, it now shows up as a health-page degradation with a toast — not a silent audit-log entry.
Reliability
- Releases are gated on the full test suite in CI.
- Config saves are atomic (temp file + fsync + rename + backup), so an interrupted or racing save can't truncate your live config.
- Interval schedules no longer drift — repeat runs stay on a fixed grid anchored to the schedule's creation time.
- Automation chain-guarding was made simpler and fully tested, and build warnings were cleaned up.
Install
# Linux / macOS
curl -fsSL https://get.vexillon.ai/install.sh | sh# Windows
irm https://get.vexillon.ai/install.ps1 | iexTargets
x86_64-unknown-linux-gnuaarch64-unknown-linux-gnux86_64-apple-darwinaarch64-apple-darwinx86_64-pc-windows-msvc
Verify
All artifacts are signed with minisign. Verify the checksum file, then the archive checksums:
minisign -Vm SHA256SUMS -P RWQX8PcjZB3S8i1V9AkZgUKoIy+eZWRzaEHKvBW9U/mkMP9Vp0B8xOaO
sha256sum -c SHA256SUMSTrusted comment on a valid signature reads: signed by vexillon.ai — MIRA 0.321.3