# Relay – open-source coding agent for non-mainstream/Chinese LLM providers

> Source: <https://github.com/LeventeNagy/relay-coding-agent>
> Published: 2026-06-29 17:00:26+00:00

An open-source, dark-mode desktop coding agent — built for people who want to use
**non-mainstream LLM providers**, not just the big three.

Relay is an Electron app that puts DeepSeek, Qwen, GLM, Kimi, MiniMax, and other
open/Chinese models on equal footing with the usual suspects. Bring your own API key
(or run locally via Ollama), pick a model, and work in either a **Chat** workspace or
a full **Code** workspace with real file editing, command execution, and
human-in-the-loop permissions.

**Relay is an early public beta (think alpha/0.1).** It already does a lot and is
usable day to day, but it is *not* polished production software yet — you should
expect bugs, half-finished corners, the occasional crash, and provider quirks
(rate limits, model-specific errors, auth gotchas across the many supported
providers). That's normal for software this young.

**This is being shared openly precisely so we can fix those things together.** If
you hit an error, please [open an issue](https://github.com/LeventeNagy/relay-coding-agent/issues)
with what you did, which provider/model you used, and the error text or a
screenshot — that's the single most helpful thing you can do. Bug reports, fixes,
and ideas are all genuinely welcome; with more eyes on it we can squash these
issues much faster than I can alone. See [CONTRIBUTING.md](/LeventeNagy/relay-coding-agent/blob/main/CONTRIBUTING.md).

Known in-progress areas: signed installers / auto-update, broader automated test
coverage, and additional renderer hardening. Your API keys are **not** affected by
any of this — they're encrypted on your own machine and never leave it (see the
security model below).

📣 **Follow @** for updates,
progress, and release notes.

*levyathan*on Twitter/X

**Many providers, one router.** DeepSeek, Alibaba/Qwen (DashScope + coding/token plans), Z.AI / GLM, Moonshot / Kimi (global + China), MiniMax, SiliconFlow, Tencent, Xiaomi, OpenRouter, and Ollama Cloud — via the Mastra model router. Add a key in Settings and its models appear in the picker.**Chat workspace.** Streaming replies, reasoning ("thinking") controls where the model supports them, image/document attachments, and web**search**+ deep** research**(Tavily / Brave / DuckDuckGo, key optional).** Code workspace.**Projects live in real folders. The agent reads, writes, and edits files and runs commands** scoped to the project**, with permission modes (Ask / Approve / Full).** Plan mode**asks clarifying questions and proposes a plan before touching anything.** Sources**(your design docs + framework docs) are kept in the agent's context every turn so it never loses the plot, and new projects default to a**Next.js + shadcn/ui** stack the agent scaffolds and keeps current.**Plugins (MCP).** Connect Model Context Protocol servers — Notion and Linear via one-click OAuth; GitHub, Filesystem, Git, Supabase (OAuth), Convex, Postgres, and more. Plugins are chosen per conversation and filtered by workspace.**Skills.** Reusable instruction packs the agent can pull in on demand.**Parallel sessions.** Start a run in one session and switch away — it keeps streaming and saving in the background, with a "working" indicator.**Context management.** Per-model context windows, automatic compaction of older turns, and a live usage meter.

- API keys, plugin credentials, OAuth tokens, and search keys are encrypted at rest
with Electron
`safeStorage`

in the app's userData directory. - Decrypted secrets never leave the main process — the renderer only ever sees key
*names*and connection status. - File and command tools are confined to the active project folder; writes and shell commands are gated by the permission mode (path traversal is blocked unless you grant Full access).
- The renderer runs with
`contextIsolation`

and no Node integration; links open in your real browser, never an in-app window.

See [SECURITY.md](/LeventeNagy/relay-coding-agent/blob/main/SECURITY.md) for the full threat model and how to report issues.

Prerequisites: **Node.js ≥ 20** and **Corepack** (bundled with Node). Local (stdio) MCP
plugins like Filesystem/Git also need `npx`

on your PATH.

```
corepack pnpm install     # install dependencies (pnpm 11)
corepack pnpm dev         # run the app in development
corepack pnpm build       # typecheck + production build into out/
```

Then open **Settings**, add an API key for any supported provider, and pick a model.

Electron · electron-vite (Vite) · React 19 · TypeScript · [Mastra](https://mastra.ai)
(`@mastra/core`

model router + `@mastra/mcp`

).

Issues and PRs are welcome — see [CONTRIBUTING.md](/LeventeNagy/relay-coding-agent/blob/main/CONTRIBUTING.md). Run
`corepack pnpm typecheck && corepack pnpm lint && corepack pnpm test`

before opening a
PR.

[MIT](/LeventeNagy/relay-coding-agent/blob/main/LICENSE) © Levente Nagy
