Skip to content

Navigation Menu

Sign in
Appearance settings
Sign up
Appearance settings
Open more actions menu

Latest commit

 

History

53 Commits
53 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Concord

A quiet macOS menubar client for Discord. Discord itself runs hidden as a background service; the only thing you see is a status bar icon and the handful of conversations you actually care about.

Discord on macOS insists on being a foreground app: Dock icon, Cmd-Tab entry, a window to manage. Concord puts the conversations in the menu bar and gets the rest out of the way.

How it works

Discord has no official way to read your own messages. Bot accounts cannot see DMs, the sanctioned local RPC API cannot send, and the clients that do everything use a raw user token and get accounts locked. So Concord does none of those.

Instead a small plugin runs inside Discord's own web client, via Vencord and Vesktop, and pushes what you care about over a local socket to a native menubar app. Discord's own code makes every network call, so the traffic is indistinguishable from the real client.

Vesktop (hidden)                        Concord.app
+--------------------------+            +------------------+
|  Discord web client      |            |  SwiftUI menubar |
|  +--------------------+  |  socket    |                  |
|  |  MenubarBridge     |--|----------->|  127.0.0.1:8787  |
|  |  Vencord plugin    |  |  NDJSON    |  (server)        |
|  +--------------------+  |            +------------------+
+--------------------------+

The app is the server and the plugin connects out to it, because the app outlives Discord restarts.

Layout

app/ The SwiftUI menubar app
bridge/ The Vencord plugin, in TypeScript
tools/mock-bridge/ Fake plugin, so the app can be run without Discord
scripts/ Hiding Vesktop, and running it under launchd
docs/ Spec, wire protocol, setup, implementation plan

Documentation

  • docs/SETUP.md is what you want if you just need it running.
  • docs/SPEC.md covers the design and, importantly, the constraints that shaped it.
  • docs/PROTOCOL.md is the contract between the two halves. Neither side may change it alone.

Development

cd app    && xcodebuild test -project Concord.xcodeproj -scheme Concord -destination 'platform=macOS'
cd bridge && bun test && bun run typecheck

The app can be developed without Discord at all. Start it, then run the mock bridge, which speaks the same protocol and makes up traffic:

bun tools/mock-bridge/index.ts --chaos

--chaos drops the connection every 20 seconds, which is how the reconnect handling gets exercised.

Known limitations

  • Discord has to be running. The plugin lives inside it. Hidden, but resident, and that costs around 460 MB. There is no version of this that both works and runs alone without risking your account.
  • Custom emoji render as their raw <:name:id> form.
  • Reactions, threads, voice and rich embeds are deliberately out of scope. This is for reading a conversation and replying to it in one line.

Licence

GPL-3.0-or-later. See LICENSE.

The plugin has to be: it is built against Vencord, which is GPL-3.0. The Swift app never links Vencord and talks to the plugin over a socket, so it could in principle carry a different licence, but one licence across one repo is less to explain than a boundary nobody asked for.

About

A quiet macOS menubar client for Discord. Discord runs hidden as a background service; you get the conversations you care about and nothing else.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.