Stringcast is a system-wide AI text transformation tool. Type text in a field, end it with a trigger such as ?fix, and Stringcast sends the selected text to your configured AI provider, shows a short working marker, then replaces the field with the result.
The current app is a Rust CLI/runtime MVP. It works from a terminal today; packaged desktop apps and installers are planned next.
- Primary runtime: Rust.
- macOS: actively tested during development.
- Windows: runtime scaffolding exists, needs real user testing.
- Linux X11: intended to use the Rust runtime.
- Linux Wayland: separate experimental Python fallback exists in docs/WAYLAND_POC.md.
For macOS and Windows users, the preferred direction is downloadable Rust binaries/apps, not a separate Python implementation.
- System-wide trigger detection.
- Clipboard-based text extraction and replacement.
- Inline working marker while the API request is in flight.
- API key metadata in config and secrets in OS key storage.
- Provider support for Gemini, OpenAI, Anthropic, and custom OpenAI-compatible APIs.
- Built-in commands for grammar, tone, summary, translation, and more.
Static commands:
?fix Fix grammar, spelling, and punctuation
?improve Improve clarity and readability
?shorten Shorten text
?expand Expand with more detail
?formal Rewrite formally
?casual Rewrite casually
?emoji Add tasteful emojis
?reply Generate a reply
?bullets Convert to bullet points
?summarize Summarize in 1-3 sentences
Dynamic commands:
?translate:<lang>
?ask:<question>
Examples:
i dont knwo whats happening ?fix
hello, how are you ?translate:hi
This paragraph is too long. ?ask:make it sound more confident
Install Rust, then run:
cargo run -- init
cargo run -- check-permissionsAdd an API key:
STRINGCAST_API_KEY="your-key-here" cargo run -- add-key gemini main "Gemini"
cargo run -- set-provider gemini
cargo run -- api-testRun Stringcast:
cargo run -- runType in a normal text field:
i dont knwo whats happening ?fix
For detailed local setup, see RUNNING.md.
Release workflows build downloadable binaries for:
- macOS
- Windows
- Linux
Download artifacts from the GitHub Actions release workflow or from GitHub Releases once release publishing is enabled.
See docs/RELEASES.md for artifact download and smoke-test steps.
The macOS release also includes an unsigned Stringcast.app bundle with a companion menu-bar item. See docs/MACOS_APP.md for build and testing notes.
Run the local checks:
cargo fmt --check
cargo test
cargo build
python3 -m py_compile scripts/wayland_listener.pyLinux builds may need native packages:
sudo apt update
sudo apt install build-essential pkg-config libdbus-1-dev libxdo-dev libx11-dev libxi-dev libxtst-dev- RUNNING.md: developer/local run instructions.
- docs/RELEASES.md: downloadable artifact instructions.
- docs/MACOS_APP.md: macOS app wrapper notes.
- SPEC.md: product and architecture spec.
- docs/WAYLAND_POC.md: experimental Linux Wayland listener notes.
Stringcast handles API keys and text from active fields. Avoid using it in password managers, secure input fields, or sensitive apps. The Linux Wayland Python PoC requires keyboard device access and should be treated as experimental.