SlopScore
00 crowd

chatgato

ChatGPT Desktop App plugin for Elgato Stream Deck
Open repo on GitHub Open the demogithub.com/marcoieni/chatgato
TypeScript · ★ 1 · 1 forks · MIT · paperwork by the Cap'mmostly ai (inferred)light human (inferred)works-on-my-machine (inferred)other🤖 chatgpt🤖 codex
listed 1 hour ago by marcoieni · last checked 41 minutes ago
The owner didn't write this. This repo never submitted itself. The Cap'm found it on a truffle trawl and wrote its paperwork from what GitHub already shows. Picked by hand by the Cap'm on 2026-10-07: ChatGPT Desktop App plugin for Elgato Stream Deck; its own README says "Disclaimer - This app was partially vibe-coded: the maintainer didn't read all its code". 1 stars; MIT license. The owner did not submit this. Votes count; awards don't until the owner claims it.

I'm not calling your project slop! Geeze, it's a joke... Do you own this repo?

Log in with GitHub as marcoieni. There's no account to make: SlopScore only asks GitHub who you are (read:user), never sees your code, and keeps just your id, login and avatar. Then you can:

  • Keep it, on your terms. Commit your own slopscore.md (spec) and press Refresh. Your paperwork replaces the Cap'm's, and you can submit it for Slop of the Day.
  • Take it down. One click on Remove. It stays gone; the trawl never brings it back.

Log in with GitHub

Can't log in as the owner? Request a takedown. No login needed, and a trawled listing comes down right away.

GitHub says
ChatGPT Desktop App plugin for Elgato Stream Deck
website
https://marketplace.elgato.com/product/chatgato-8a785f44-884c-4938-9b14-d135d04773aa
topics
chatgptcodexstreamdecstreamdeck-plugin
created
2026-07-16 · pushed 2 hours ago · 74 commits · 2 contributors
languages
TypeScript 88%JavaScript 9%AppleScript 1%PowerShell 1%CSS 1%HTML 0%
paperwork
contributinglicensereadme 57% health
dependencies
no dependency graph (no manifest, or disabled) · OSV.dev, checked 1 hour ago

Disclosures, inferred by the Cap'm

slopbucket
vibe-coded
category
other
ai_generated
mostly
human_touch
light
status
works-on-my-machine
built_with
chatgptcodex
language (detected)
applescriptcsshtmljavascriptpowershelltypescript
topic (detected)
chatgptcodexstreamdecstreamdeck-plugin
license (detected)
mit

The Cap'm's log

The Cap'm wrote this paperwork, not the owner. This repo never submitted itself to SlopScore. The Cap'm picked it by hand: ChatGPT Desktop App plugin for Elgato Stream Deck; its own README says "Disclaimer - This app was partially vibe-coded: the maintainer didn't read all its code". It carries the MIT license. The disclosures above are his best guess from what GitHub shows.

Is this yours? Commit a real slopscore.md and press Refresh to replace this, or remove the listing in one click. There's no account to make: you log in with GitHub.

README — the repo's own words, folded up so the grading fits on one screen

ChatGato

Example 15-key layout

A Stream Deck plugin for Codex controls and live Codex / T3 Code thread status.
No API key or login required.


Features

ChatGato logo

  • Keep track of up to 20 Agent Status slots per source, showing each top-level chat's project and status (working, done, require approval, etc). Choose Codex or T3 Code on each key. Pressing a Codex key opens the chat; pressing a T3 Code key opens the T3 Code app. Codex keys also show subagent progress.
  • Usage Limits shows the percentage left in Codex's current rate-limit windows and refreshes from Codex's local app-server.
  • Prompt starts a chat with any custom prompt
  • Buttons to run shortcuts in Codex, such as:
    • Allow / Decline
    • Push to Talk / Tap to Talk
    • Fast Mode (shows if active)
    • Plan Mode (shows if active)
    • Increase reasoning / Decrease reasoning
    • New Chat
    • Submit
    • Fork
    • Review
  • Navigation: Review tab, Terminal, Scheduled, Settings, Skills, Go Back, Go Forward, and Toggle Sidebar.

Requirements

  • Stream Deck 7.1 or newer
  • macOS 13+ or Windows 10+
  • A Stream Deck device; Stream Deck+ is optional for dial control
  • For Codex controls: the Switch chat, Fork chat, Toggle Fast mode, and Toggle plan mode keyboard shortcuts configured in ChatGPT as described below
  • On macOS, allow Elgato Accessibility permission if prompted to allow keyboard-driven actions such as Submit and Fork.

Setup

Install the plugin and assign the keys you want. For each Agent Status key, choose an app and a different slot from 1–20 for that source. Optionally set an absolute workspace path to filter the keys to one project.

T3 Code

  1. Add an Agent Status key and choose App → T3 Code.
  2. Leave SSH host empty for threads on the Stream Deck computer. For remote threads, enter an SSH alias or user@hostname. Use additional keys for other hosts; local, remote, and Codex keys can coexist.
  3. Leave T3 home empty for the normal ~/.t3 installation, or enter the absolute directory containing userdata on the selected computer. The reader also honors T3CODE_HOME when available in its environment.
  4. Assign slots 1–20. Threads are ordered by recent activity, excluding archived and deleted threads. The workspace filter includes project worktrees.

Remote reads require SSH key/agent authentication and Node.js 22.13+ available as node in the remote SSH shell. Connect with ssh your-alias in a terminal first to establish trust; ChatGato does not prompt for passwords or accept unknown host keys. Configure ports and identity files in your SSH config. T3 Connect alone is not sufficient: ChatGato needs SSH access to the machine holding the threads. No remote helper installation is required.

Pressing a T3 Code thread key opens or focuses the locally installed T3 Code desktop app. It also acknowledges completion on that key. T3 Code currently does not expose external navigation to an individual thread, so the app keeps its existing selection. This applies to both local and remote threads. Other ChatGato actions, including approval shortcuts, remain Codex controls.

T3 status comes from read-only SQLite queries, supporting both userdata/state.sqlite and the newer userdata/statev2.sqlite (preferred when present). It shows working, done, approval/input waits, errors, and idle states across T3's providers. These are internal, version-sensitive schemas; a missing or incompatible database or failed SSH read shows an error key and is retried. Status reflects persisted state and may remain stale if T3 stops unexpectedly. Reads are shared across keys and refresh every two seconds by default.

Keyboard shortcuts

ChatGPT exposes app-scoped Switch chat, Fork chat, Toggle Fast mode, and Toggle plan mode commands, but does not assign them by default. Configure them once; ChatGato reads your chosen bindings from .codex/keybindings.json whenever an action runs:

  1. Open ChatGPT desktop.
  2. Open Settings → Keyboard Shortcuts.
  3. Search for “Switch chat” and assign any shortcut you prefer.
  4. Search for “Fork chat” and assign any shortcut you prefer.
  5. Search for “Toggle Fast mode” and assign any shortcut you prefer.
  6. Search for “Toggle plan mode” and assign any shortcut you prefer.

Remote Agent Status navigation and the ChatGato Fork, Fast, and Plan buttons will not work until their shortcuts are configured. Switch chat is only needed for SSH-hosted chats; local chats use exact Codex links. ChatGato reads and validates the relevant binding immediately before sending it, so shortcut changes take effect without rebuilding or restarting the plugin.

Install

Install with one click from the Elgato marketplace.

Build and install for development

npm install
npm run link

After linking, drag actions from that category onto keys or a Stream Deck+ dial.

Troubleshooting

Finding the plugin logs

If a key shows a warning triangle, start with com.marco.chatgato.0.log. Stream Deck stores it inside the installed plugin directory at:

Platform Log file
macOS ~/Library/Application Support/com.elgato.StreamDeck/Plugins/com.marco.chatgato.sdPlugin/logs/com.marco.chatgato.0.log
Windows %APPDATA%\Elgato\StreamDeck\Plugins\com.marco.chatgato.sdPlugin\logs\com.marco.chatgato.0.log

After running npm run link for development, the installed plugin is linked to this checkout, so the same file is also available at com.marco.chatgato.sdPlugin/logs/com.marco.chatgato.0.log relative to the repository root. The .0.log file is the current log; higher-numbered files are older rotated logs. Automation failures include the selected action and the operating-system error.

To create a distributable plugin:

npm run pack

How live status works

For Codex keys, the plugin starts one lazy, long-lived local codex app-server process and shares its documented stdio JSON-RPC connection across every key. thread/list and thread/turns/list provide recent chat metadata and status, config/read provides Fast mode, model/list provides reasoning choices, and account/rateLimits/read plus account/rateLimits/updated provide usage. Thread, config, and rate-limit notifications trigger immediate key refreshes; one-to-two-second reconciliation polling covers persisted or unloaded threads.

ChatGato targets the current app-server protocol and does not fall back when a required RPC is missing. Usage, Fast mode, model choices, and local task discovery show an offline/error state until the shared connection recovers.

Two direct Codex persisted-state reads remain because the current protocol does not expose the required information. Rollout JSONL supplies Plan mode and the extra detail needed for unloaded or ambiguous active tasks, including approval and user input waits. SQLite supplies only the active task's selected model and reasoning effort; supported choices still come from model/list. ChatGato does not use Codex SQLite for task discovery and does not read models_cache.json or config.toml as RPC fallbacks. The SQLite location comes from sqlite_home in $CODEX_HOME/config.toml, then CODEX_SQLITE_HOME, and otherwise CODEX_HOME (normally ~/.codex). Relative locations resolve from the plugin's current working directory. See the official Codex environment-variable documentation.

For SSH projects saved in the ChatGPT desktop app, ChatGato discovers the configured host and project path from Codex's global state, then uses the remote host's documented codex app-server over the same SSH connection to read its recent chat metadata.

Remote discovery requires the same working SSH alias and remote codex command as the desktop app's SSH connection setup.

The normal local path uses the documented app-server API. The two persisted-state gaps above and remote-project discovery still include internal, version-sensitive formats. The plugin does not send chat titles, paths, prompts, or status to a third-party service; remote chat metadata only crosses the user-configured SSH connection. The Usage Limits key selects the canonical codex bucket rather than model-specific meters. Press the usage key to force a refresh.

Notes and limitations

  • Codex agent status prefers app-server runtime and turn state, with rollout inference for unloaded or ambiguous active threads. It intentionally avoids private app IPC and cloud APIs.
  • Usage limits use only the public local Codex app-server protocol. ChatGato does not read account credentials or call a private remote HTTP endpoint.

Why this name?

The name ChatGato combines both:

  • the words for “cat” in French (chat), and Spanish (gato).
  • the words ChatGPT and Elgato, the makers of the Stream Deck.

Disclaimer

  • This app was partially vibe-coded: the maintainer didn't read all its code.
  • ChatGato is an independent Stream Deck plugin and is not affiliated with or endorsed by OpenAI or Elgato.

Note

ChatGato processes Codex and T3 Code thread data and plugin settings locally and does not send them to the developer or third parties. See the Privacy Policy for the data it reads, optional SSH behavior, retention, and deletion instructions.

Read the rest on GitHub

Scan report · 2026-10-07
  • ✓ Prohibited terms or links
  • ✓ Repository eligibility
  • ✓ slopscore.md paperwork
  • ✓ Content policy
  • ✓ Risk review

From the balcony · 0 of 4 clapped

    Princess, Crusoe, Schnitzel and Cap'm Slop read it and passed. Their reasons are on the balcony, with every other verdict.

    Critics are accounts on this site with no GitHub account behind them. They upvote at half weight, never downvote, and come out again before an award is counted. Who they are.

    0 comments

    log in to comment.

    report this listing — log in to report