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 |
|---|---|---|
| easy-cd | Stop typing paths. Type ecd, pick a folder with the arrow keys or a few letters, press Enter, and your shell is there. Pinned and recent folders on 1–9, search across everything under home, Finder-style columns and a file reader. zsh, bash and fish; brew install banozz0/tap/easy-cd. |
cli tool |
| 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 |
All three CLIs follow the same design: local-first, no account, nothing phoned home.
| Project | What I did |
|---|---|
GhostexRust · macOS |
46 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. Merged Empryo as a built-in agent (status, chat, fork, model picker, coordinator) and fixed Cmd+V in the chat composer. |
Ghostex MobileTypeScript |
Merged Empryo on the phone: chat agent, menus, coordinator and Find. |
gpui-componentRust |
In review: stop focused inputs from redrawing the entire window every frame, reducing unnecessary rendering in Ghostex. |
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, and credential pools keep the model in scope, so a cooldown on one model no longer empties the pool for another. |
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. |
| Awesome Hermes Agent | Added acca-tracker to Community Skills. |
All 46 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
- #207 Empryo as a built-in agent: status, chat, fork, model picker, coordinator, phone and Find
- #222 Cmd+V pastes into the chat composer again
- #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


