Skip to content

malac 1.2.0

Latest

Choose a tag to compare

@github-actions github-actions released this 27 Oct 20:39
· 4 commits to main since this release

Voice in every app, files and screenshots sent to you, and design guidance built in. Upgrade with malac update, then malac daemon restart when no agents are running. Install the new APK over the old one, and the new .vsix in your editor.

New

  • Files and screenshots sent to you. Ask "send me a screenshot of the settings page" and malac sends it with its new send_to_user tool: a screenshot its browser or desktop tools just took, or any file. It shows up in the app you are using: the terminal, the web UI, VS Code, Android or iOS. Sent files are copies, kept for 30 days.
  • Images open full screen everywhere. Every image in a conversation (tool screenshots, attachments, sent files) opens in a viewer with pinch and wheel zoom, pan, double-tap or double-click zoom, and save or share. VS Code can also open it in an editor tab; the terminal opens it in your system viewer with /open.
  • Dictation. A microphone button in every composer types what you say for you to edit and send. Ctrl-X in the terminal, Ctrl+Shift+Space in the web UI, ⌥⇧⌘D in VS Code. It uses a transcription model such as gpt-4o-mini-transcribe or whisper-1, or a chat model that takes audio.
  • Speech. With speech on, malac says when it needs you: every approval request, questions and notable results through a new say tool, and "Done." with the first sentence of the reply after a long turn. It plays on one device, the one you used last, so your phone and laptop never talk at once. It uses a speech model such as gpt-4o-mini-tts, or your computer's own voice. Off by default.
  • Talk mode. A spoken conversation through a Realtime model such as gpt-realtime. You talk; the voice model hands the work to malac, says what it asked, tells you the outcome when malac finishes, and passes on your spoken answers to approvals. The headset button in the apps, /talk in the terminal, malac voice talk, or malac: Talk in VS Code. Phones and browsers cancel the speaker's echo; in the terminal malac pauses the microphone while it speaks.
  • Voice settings in every app. Turn each feature on or off, and pick its model, voice and language. Every app writes the same [voice] table; malac voice shows what your providers offer and malac voice set changes it. malac finds suitable models in your providers' model lists by name; [models."p/m"] audio = "…" declares one whose name does not say. See docs/voice.md.
  • Design guidance built in. A new default plugin, design@malac, loads before any UI work. An existing product keeps its own design language: its tokens, components and screens. A new product gets the house style (clean, monochrome-first, one green accent) and a design built from its job rather than a template. /design-review audits a UI against its own design language and a polish checklist. The browser tools gain browser_emulate, which sets a tab's viewport and light or dark mode, so the agent checks its work at desktop, tablet and phone widths in both themes.
  • VS Code: malac next to Chat, in the title bar and the status bar. A malac tab in the right-hand Chat panel, a button next to the editor tabs (Alt-click opens a chat in a new editor tab), and a status bar item next to Claude Code's.
  • Android: Tailscale addresses explain themselves. When the phone cannot reach a .ts.net or 100.x address, the app says the phone needs Tailscale on the same tailnet (and to check Private DNS) instead of "unable to resolve host".

Fixed

  • Responses cut off at the output limit carry on. A model that spent its whole output on thinking used to end the turn with an empty answer. malac now asks it to continue (at most three times) and to start writing. At the step limit the agent now gets a final turn to report instead of stopping silently.
  • A tab opened at your home folder no longer reads ~/.malac/config.toml as a project's settings.

Setting up voice

Voice needs an OpenAI-style provider with audio models: OpenAI itself, or a gateway such as LiteLLM in front of it. Each feature appears once a suitable model is available. Some gateways want a provider-prefixed name for Realtime models (openai/gpt-realtime). A setup that works through LiteLLM:

[voice]
dictation_model = "lora/gpt-4o-mini-transcribe"
speech = true
speech_model = "lora/gpt-4o-mini-tts"
speech_voice = "coral"
talk_model = "lora/openai/gpt-realtime"
talk_voice = "marin"

Downloads

File For
malac-1.2.0-macos.pkg macOS installer, Apple Silicon and Intel
malac-1.2.0-aarch64-apple-darwin.tar.gz macOS on Apple Silicon
malac-1.2.0-x86_64-apple-darwin.tar.gz macOS on Intel
malac-1.2.0-x86_64-unknown-linux-gnu.tar.gz Linux x86_64
malac-vscode-1.2.0.vsix VS Code, Cursor, Windsurf, VSCodium
malac-1.2.0-android.apk Android 8 and later, signed; installs over 1.1.x
SHA256SUMS Checksums (shasum -a 256 -c SHA256SUMS)

Or run curl -fsSL https://raw.githubusercontent.com/lobirus/malac/main/install.sh | sh, or brew install lobirus/malac/malac. The .pkg is not signed yet; if macOS blocks it, right-click it and choose Open.