Open to work: AI automation and AI operations roles. Remote, English. Email below.
Found a bug or have an idea? Open an issue or send a PR.
| Project | What it does | Type |
|---|---|---|
| hermes-context | My Hermes agents work in Discord threads, and nothing told me which one was about to run out of context. Now every session sits in the menu bar: how full its context is, and whether it's working, waiting on me or idle. Keeps a private history; never stores a message. One-line install. | macOS app |
| telegram-tools | Telegram buries the IDs everything else needs, and makes a few jobs oddly hard. This tool makes them simply accessible via CLI — emptying a topic, exporting a thread, editing your bot. Type the tool's name and a menu opens. | cli tool |
| discord-tools | Same idea, your Discord bot. One token in, and the server answers from the terminal — channels, threads, search, export. | cli tool |
| acca-tracker | Photo of a bet slip in. Every leg parsed and confirmed, then tracked from public scores — alive, dead, won. It reports; it never advises. | agent skill |
| Ghostex onboarding | The first-run flow every new Ghostex user now sees. I designed it and built the clickable prototypes it was coded from: concept to final, React and WebGL. Try it live. | design · prototype |
Both CLIs follow the same design: local-first, no account, nothing phoned home.
| Project | What I did |
|---|---|
GhostexRust · macOS |
44 merged PRs. Built the Bots space: a sidebar mode for your Hermes agents, a feed of every cron run they deliver, and Hermes chats that name the bot, show its context and switch models. Built out the Kanban board — custom columns, tag filtering, lane sorting, persistent view preferences — plus agent session dispatch, picking a worker's model and effort at launch, and a model pick for one session only. Also Global Actions, worktree renaming, and fixes across chat, worktrees and the CEF panes. Designed the ghostex.dev landing page that's live now (maddada built it), and the app's first-run onboarding. |
beadsGo |
Added the comment, comments and note MCP tools, so an agent can write back to the card it's working. |
Hermes AgentPython |
In review: skill_manage follows symlinked skill folders, with rollback and ownership staying on the link. |
Ghostex ExtensionsTypeScript |
Contributed the Canvas extension, now drawing with real Excalidraw. |
SideshowTypeScript |
In review: download a surface as the file it came from, markdown tables that scroll instead of splitting words, and an opt-in wide layout for wide monitors. |
All 44 merged Ghostex PRs
Bots space and Hermes
- #167 Bots: a sidebar mode for your Hermes agents, one row per profile
- #169 Bot automations: a feed of every Hermes cron run
- #163 Hermes chats name the bot, show its context and switch models
- #176 Bot space patch: Hermes sessions keep their status, chat and name
- #178 Hermes chat shows what its terminal shows;
/compressworks like/compact - #179 A woken Hermes session resumes under its own profile
- #114 Recognize Hermes composers with a profile-name prompt
Kanban board and dispatch
- #104 Filter the board by tag
- #105 Draw the board's own custom statuses as columns
- #106 Manage custom columns from the board
- #85 Lane sorting with directions and persistent view preferences
- #84 Show assignee and creator on cards
- #90 Start-work dispatch endpoint and CLI verb
- #91 Start work with the agent a card is assigned to
- #116 Start-work puts the worker in the named project, not the newest one
- #108 Let an agent link its own session to a card
- #87 Heal card conversation links, add Resume, share links across board mounts
- #111 Deliver card conversation links to the Kanban page
- #86 Mouse-grabbable board and dialog scrollbars
- #74 Keep an established issue prefix when a board is shared between projects
Agents and chat
- #138 Pick a worker's model and effort at launch
- #147 Apply a model pick to one session without changing the default
- #150 A wake never resumes another project's Claude conversation
- #151 Restore-wake only on return to a project, never over a requested session
- #122 Slash commands sent from chat keep their output after a reload
- #121 Show Codex local command transcripts
- #113 Skip the draft handoff for agents launched through a user hop
- #100 Per-session Verbose toggle in the composer
Actions, worktrees and settings
- #79 Store Global Actions in gxserver
- #80 Render Global Actions in the tab strip
- #88 Global Actions on project rows, updated instantly
- #75 Flagged quick actions on sidebar project rows
- #94 Rename a worktree's folder and branch from the sidebar
- #93 Mount a configurable folder beside each project's docs
- #81 Global Defaults for project settings
- #102 One web-link destination, and a settings rail that shows every section
- #101 Dock the command pane on the right
- #76 Optional background image behind terminal panes
Desktop and build fixes
- #78 Keep the live terminal when a command tab moves to Agents
- #92 Resolve native CEF entries on the dev server
- #110 Every CEF first responder owns the paste hotkey
- #117 Render the dialog layer so alert dialogs appear
- #89 Repair the cargo test build
- #107 Point submodule error hints at the right paths
One person, a team of agents. Every job is a card on a shared board, and nothing counts as done until it has passed its tests and a separate reviewer agent has checked it. I write the specs, make the calls and approve anything risky. Scheduled jobs and nightly backups run on their own.
How a job moves from spec to done
The tools it runs on:
| Tool | What it's for |
|---|---|
| Claude Code | Where the building happens, from brainstorming an idea to the shipped product, with plenty of bug fixing in between. |
| Codex | Quick patches — and the provider my Hermes agents use. |
| Hermes Agent | The always-on half: memory, skills and scheduled jobs I can reach from Telegram or Discord when I'm nowhere near a desktop. |
| Ghostex | The ADE every agent runs in. Most of my merged PRs are in it, which should tell you how much I use it. |


