Midway runs shell commands and can send periodic notifications while they run, followed by a completion notification. Running notifications are enabled by default and repeat every 15 seconds; completion notifications are sent for commands that run at least 10 seconds. Configure command_notifications in midway.yaml to change this behavior. Notifications can be sent to local desktop notifications and configured messaging services.
Install Midway with Cargo:
cargo install midway-cliPrebuilt releases are available for Linux x86_64, Windows x86_64, and Apple Silicon macOS (aarch64). On ARM64 Windows, ARM64 Linux, or Intel macOS (x86_64), install Rust and Cargo and use the command above to build Midway for your machine.
Create a configuration, then run a command through Midway:
midway init
midway run cargo buildTo send a notification directly:
midway send-text --message "Build finished"See the Midway documentation for installation options, configuration, commands, and notification setup.
Use your coding agent's lifecycle hooks to call midway send-text when an agent finishes or needs approval. Guides for Claude Code, Codex CLI, GitHub Copilot, Gemini CLI, Antigravity CLI, OpenCode, and Cursor are in the docs.
Use --background in hooks so the notification still sends if the agent or hook process is interrupted.
Install the stable Rust toolchain with the rustfmt and clippy components. On Linux, also install pkg-config and the OpenSSL development headers (on Ubuntu: sudo apt-get install pkg-config libssl-dev). Run this from the repository root to check formatting and Clippy rules before opening a pull request. CI also runs tests, release builds, and a package check.
bash scripts/check.sh- Handle log_lines_to_include in notify_after
- Handle chained commands
- Microsoft Teams
- Google Chat
- Mattermost and Rocket.Chat
- Zulip
- Matrix
- Generic webhook