Open-source text expansion for individuals and teams.
TypeRelay turns short abbreviations into reusable text, code and fillable templates. Keep private libraries on your device, share selected libraries with a team and continue editing while offline.
Guide · Desktop · TUI · Self-hosting · MCP · API
- Fast expansion — type a local prefix, an abbreviation and Space to insert a snippet. The default prefix is a semicolon.
- Local-first editing — snippets live in SQLite, remain searchable offline and queue changes for later synchronization.
- Private or shared libraries — keep personal content private or explicitly enroll libraries for team sync.
- Text, code and templates — preserve whitespace and Unicode, or add dates, prompted fields and explicit Enter actions.
- Multiple interfaces — use the desktop search panel, terminal editor, web app, public API or MCP server.
- Portable data — import and export TypeRelay YAML; assisted imports also support SnippetsLab and beta formats from TextExpander, Text Blaze and TypeIt4Me.
TypeRelay does not log keystrokes. Exported YAML is a portable copy, not live storage.
| Component | Purpose |
|---|---|
| Expansion engine | Rust client for continuous prefix + abbreviation expansion |
| Desktop panel | Tauri search, fill and insertion panel with tray/menu-bar controls |
| TypeRelay TUI | Offline library, snippet, settings and Trash management |
| Web app | Accounts, teams, sharing, imports, conflicts and security settings |
| Sync service | Explicit library enrollment, automatic assigned-library downloads and offline recovery |
| MCP server and API | Scoped access for agents and external integrations without direct database access |
| Platform | Current support |
|---|---|
| Omarchy / Hyprland, US layout | Continuous expansion, desktop panel and TUI; primary verified target |
| Windows x64 | Continuous expansion, layout-aware desktop panel and TUI |
| macOS Apple Silicon | Continuous expansion, desktop search and insertion panel |
| Other Linux desktops, layouts and architectures | Continuous expansion and safe insertion are unsupported |
See the desktop overview and troubleshooting guide for current limitations.
Choose a Linux x86_64 package:
All three include the expansion engine, TUI, desktop search panel, tray menu, sync and update checking. For AppImage, make the downloaded file executable and launch it. Install deb/rpm with your distribution's package manager, then launch TypeRelay.
On first launch, TypeRelay offers to configure the user expansion service and scoped keyboard permissions. Expansion currently requires Hyprland on x86_64 and a US keyboard layout; Omarchy uses the same AppImage. No separate installer download is needed. See the installation guide for requirements, updates and removal.
Create a library and snippets with:
typerelay-tuiThen type the configured prefix, an abbreviation and Space in another application. For example, the default prefix and an abbreviation named email expand from ;email .
The web app stores synchronized libraries in MongoDB. Devices authenticate in the browser, users explicitly enroll local libraries and assigned shared libraries download automatically. Conflicts retain both versions for resolution in the web app.
For an open-source production deployment, export the public URLs and private values, then start the production stack.
fish:
set -x APP_URL https://typerelay.example.com
set -x MCP_BASE_URL https://mcp.typerelay.example.com
set -x SESSION_SECRET (openssl rand -hex 64)
set -x JWT_SECRET (openssl rand -hex 64)
set -x SMTP_FROM noreply@example.com
set -x SMTP_SERVERS '[{"name":"primary","host":"smtp.example.com","port":587,"secure":false,"user":"user","pass":"password","from":"noreply@example.com"}]'
docker compose -f compose.prod.yml up -dbash / zsh:
export APP_URL=https://typerelay.example.com
export MCP_BASE_URL=https://mcp.typerelay.example.com
export SESSION_SECRET="$(openssl rand -hex 64)"
export JWT_SECRET="$(openssl rand -hex 64)"
export SMTP_FROM=noreply@example.com
export SMTP_SERVERS='[{"name":"primary","host":"smtp.example.com","port":587,"secure":false,"user":"user","pass":"password","from":"noreply@example.com"}]'
docker compose -f compose.prod.yml up -dThe production stack includes the app, MCP adapter, scheduler and a persistent MongoDB replica set. Put ports 3000 and 3002 behind your HTTPS proxy. See self-hosted configuration.
TypeRelay exposes permitted snippet workflows through a public HTTP API and a stateless Streamable HTTP MCP adapter. OAuth, personal access tokens, account permissions and scopes apply to every request; the MCP service never receives direct MongoDB access.
See the MCP setup, tool catalog and API overview.
Requirements: Docker Compose, Rust 1.88+, Node.js 24+ and pnpm 12.
These commands work in fish, bash and zsh:
git clone https://github.com/typerelay/typerelay.git
cd typerelay
git switch develop
docker compose up -d --buildRepository layout:
crates/core— shared snippet and template rulescrates/client— expansion engine, synchronization, local database and TUIapps/desktop— cross-platform Tauri panelapps/server— Express web app and APIapps/mcp— MCP-to-API adapterdocs— VitePress user, integration and development documentation
Run the checks relevant to your change and the repository policy check before pushing:
docker compose run --rm app npm test
docker compose run --rm --no-deps mcp-tools
docker compose run --rm --no-deps rust-tools
python3 scripts/check-repository.pyRemove the development volumes when you no longer need their data:
docker compose down -vContributions and bug reports are welcome. Maintainer and Codex work stays on develop: pull before starting, commit focused changes and push develop directly. Do not create a topic branch or pull request unless the task explicitly requests one. External pull requests target develop without a required branch-name convention. Include focused tests and describe manual verification where desktop input behavior changes.
Read the development workflow before contributing. Please do not include real snippets, credentials, signing material or local SQLite databases in issues, fixtures or commits.
Please report security vulnerabilities through GitHub’s private vulnerability reporting when available, not a public issue. TypeRelay records third-party adaptations and retained upstream licenses in web attribution.