Agent Manager #
Desktop GUI for running multiple interactive cursor-agent sessions. Themed with vidya (egui), terminals via egui_term (alacritty PTY).

Run #
From this checkout (with sibling ../vidya):
nix run # apps.default → cargo build + gtk-launch .desktop (icon)
nix run .#desktop # same
nix run .#manager # cargo build + run binary only (no .desktop)
nix run .#build # cargo build --release only
nix run .#package # pure store binary
nix run .#package-desktop # pure package via its .desktop
apps.default / apps.desktop cargo-build, install manager.desktop + hicolor icons into $XDG_DATA_HOME (~/.local/share by default — required on Wayland/GNOME; a private share dir is invisible to the shell), refresh icon/desktop caches, then gtk-launch manager. The binary also embeds the PNG via vidya::with_app_icon_id (used on X11; Wayland window icons come from the FreeDesktop entry). Incremental builds go into ./target/.
Optional interactive shell:
nix develop
cargo run --release
Packaged install (pure Nix derivation — may use remote builders):
nix build .#manager
./result/bin/manager
# also: result/share/applications/manager.desktop
# result/share/icons/hicolor/.../apps/manager.{svg,png}
New session opens a dialog for workspace, optional model / prompt, and --trust / --force. It runs cursor-agent create-chat, then spawns the PTY with --resume <chatId> so the session is bound to Cursor’s chat store. Resume lists past chats from ~/.cursor/chats and spawns with --resume <chatId>.
The left Agents sidebar groups sessions by workspace (folder name; hover for full path), shows status + title, and nests Tasks under each session (from agent-transcripts/<chatId>/, subagents/, and Task records in the chat store). Click a session to focus its terminal; click a Task to open its nested chat (isSubagent) in a new tab when Cursor created one, or focus the parent if not. Right-click a session for rename. Close removes the active session.
Paste images with Ctrl+V in an active session (screenshot / image on the clipboard). The manager forwards ^V to cursor-agent, which attaches the image via wl-paste / xclip. In the New session dialog, Ctrl+V saves a clipboard image to a temp file; after spawn the manager types @/path.png into the TUI composer (so the agent attaches it synchronously), then types the initial prompt and submits. --image is headless-only, so interactive sessions cannot rely on it.
Requirements #
- Rust toolchain
cursor-agentonPATH(or setCURSOR_AGENTto an executable path; Cursor’s in-sessionCURSOR_AGENT=1flag is ignored)- Linux (Wayland or X11)
wl-paste/wl-copy(Wayland) orxclip(X11) onPATHfor clipboard image paste
Nix #
| Output | Role |
|---|---|
apps.default / apps.desktop |
Devshell: cargo build + gtk-launch .desktop (icon) |
apps.manager |
Devshell: cargo build + run binary only |
apps.build |
Devshell: cargo build --release only |
apps.package |
Pure store binary |
apps.package-desktop |
Pure package via its .desktop |
packages.default / packages.manager |
Binary + .desktop + hicolor icons |
packages.desktop |
Wrapper that launches the packaged .desktop |
devShells.default |
rustc + cargo + egui runtime libs |
assets/manager.svg |
App icon source |
Apps need a live checkout next to ../vidya. The packaged packages.manager stages flake input vidya for pure builds.
Notes #
- PTY I/O is handled by
egui_term/ alacritty’s tty (same role asportable-pty). - Theme path-depends on
../vidyaat egui 0.31.
License #
MIT