$ discord presence --for coding-agents

Your agents are working.
Let Discord see it.

Lattice follows your local Codex, Claude Code, Antigravity, and OpenCode sessions and turns them into a Discord Rich Presence. Each agent gets a companion whose pose changes with the work. Everything runs on your machine.

  • v0.1.0
  • MIT
  • macOS / Windows / Linux
  • no account, no relay
Codex companion
Codexblue robot
Claude Code companion
Claude Codecrab
Antigravity companion
Antigravitycosmic fox
OpenCode companion
OpenCoderaccoon

Three parts, all local

Lattice is a pipeline that lives entirely on your machine. The only thing that ever leaves it is a presence update sent to your own Discord client.

01

Hooks in your agent

Lattice installs lifecycle hooks or a small plugin into the agents you choose. Codex and Claude Code use their hook systems, OpenCode loads a local plugin, Antigravity reports model and tool activity. You confirm every install, and removing it leaves your config intact.

02

Events stay local

Session start, tool use, thinking, done. Events are sanitized, hashed, and kept in a bounded inbox on your disk. Prompts, responses, code, and full file paths never leave the machine, because they never enter the pipeline at all.

03

Discord over local IPC

A small client talks to the Discord desktop app through its local Unix socket or named pipe. No relay server, no account, no cloud. When your agent works, your status moves. When it stops, the pose settles.

lattice-cli — live events
$ lattice-cli
20:49:29 opencode   thinking in opencode
20:49:31 opencode   running commands in opencode
20:49:32 opencode   completed in opencode
20:51:04 claude     editing files in claude code

Native on every desktop

No Electron, no bundled browser. Each platform gets an app built with its own toolkit, and Linux gets three, because Linux users have opinions about interfaces.

Lattice for Windows
screenshot drops herepublic/screenshots/windows.png
WindowsWinUI 3 dashboard with Mica
lattice-linux
screenshot drops herepublic/screenshots/linux-gui.png
LinuxGTK4 and libadwaita
lattice-tui
screenshot drops herepublic/screenshots/linux-tui.png
LinuxTerminal dashboard
lattice-cli
screenshot drops herepublic/screenshots/linux-cli.png
LinuxHeadless daemon

Pick your weight class

All three builds share the same core and publish the same presence. The only difference is how much interface you want between you and the raccoon.

lattice-linux2.4 MB
GTK4 + libadwaita

The full dashboard. Provider connections, live sessions, event history, and sharing controls, in a native dark window that respects your system theme.

lattice-tui457 KB
ratatui

The same dashboard, redrawn for the terminal. Lives in a tmux pane between your editor and htop. Providers, sessions, and events, all keyboard driven.

lattice-cli286 KB
headless

No interface at all. Prints one line per event and keeps your presence fresh. The lightest UI is the one that does not exist.

Your work stays yours

Lattice reads lifecycle events, not your work. Session identifiers are hashed, the event inbox is bounded and local, and every integration is opt in with a confirmation step.

Never leaves the machine

  • xPrompts and responses
  • xSource code and diffs
  • xFull file paths
  • xTool arguments
  • xAccount tokens

Shared only if you enable it

  • ~Project name
  • ~Model name
  • ~Token usage

All three default to on and can be toggled off at any time.

Get Lattice

Prebuilt binaries on GitHub, or build from source with the platform toolchain. Every release notes exactly what changed.

build from source
git clone https://github.com/spoodyz/Lattice
cd Lattice/linux
cargo build --release