Remix.run Logo
Show HN: Agent-of-empires: OpenCode and Claude Code session manager(github.com)
72 points by river_otter 13 hours ago | 19 comments

Hi! I’m Nathan: an ML Engineer at Mozilla.ai: I built agent-of-empires (aoe): a CLI application to help you manage all of your running Claude Code/Opencode sessions and know when they are waiting for you.

- Written in rust and relies on tmux for security and reliability - Monitors state of cli sessions to tell you when an agent is running vs idle vs waiting for your input - Manage sessions by naming them, grouping them, configuring profiles for various settings

I'm passionate about getting self-hosted open-weight LLMs to be valid options to compete with proprietary closed models. One roadblock for me is that although tools like opencode allow you to connect to Local LLMs (Ollama, lm studio, etc), they generally run muuuuuch slower than models hosted by Anthropic and OpenAI. I would start a coding agent on a task, but then while I was sitting waiting for that task to complete, I would start opening new terminal windows to start multitasking. Pretty soon, I was spending a lot of time toggling between terminal windows to see which one needed me: like help in adding a clarification, approving a new command, or giving it a new task.

That’s why I build agent-of-empires (“aoe”). With aoe, I can launch a bunch of opencode and Claude Code sessions and quickly see their status or toggle between them, which helps me avoid having a lot of terminal windows open, or having to manually attach and detach from tmux sessions myself. It’s helping me give local LLMs a fair try, because them being slower is now much less of a bottleneck.

You can give it an install with

curl -fsSL https://raw.githubusercontent.com/njbrake/agent-of-empires/m... | bash

Or brew install njbrake/aoe/aoe

And then launch by simply entering the command `aoe`.

I’m interested in what you think as well as what features you think would be useful to add!

I am planning to add some further features around sandboxing (with docker) as well as support for intuitive git worktrees and am curious if there are any opinions about what should or shouldn’t be in it.

I decided against MCP management or generic terminal usage, to help keep the tool focused on parts of agentic coding that I haven’t found a usable solution for.

I hit the character limit on this post which prevented me from including a view of the output, but the readme on the github link has a screenshot showing what it looks like.

Thanks!

heliumtera an hour ago | parent | next [-]

For the sake of convenience we found ourselves in a tedious terrible place again and now we have to scrape to get out of it

If only we could have a clean API to programmatically control agents... The best UI is no UI

I am seeing a lot of development working around the shitty experience that is being stuck in a terribly slow cli program, nothing against this particular project

river_otter an hour ago | parent [-]

Personally I'm actually feeling like the CLI agent is a great experience once you get used to it, and managing them in aoe honestly does sort of feel like my worker management strategy when I was trying to maximize my productivity in age of empires 2

amcaskill an hour ago | parent | prev | next [-]

This looks cool, I’ll definitely try it out.

The best (for me) of these that I’ve tried so far is conductor.build

They have a different UI orientation, and it’s more locked into Claude code, but it might be good inspiration for your future plans. They get the git worktree setup and teardown and managing dev servers part of it right IMO.

river_otter an hour ago | parent [-]

Conductor build looked cool. For me, I wanted something a little lighter weight that stays in the terminal. When I looked at conductor it seemed like it was a standalone app

amarant 5 hours ago | parent | prev | next [-]

Does it have a . Hotkey for automatically switching to the next idle worker, like the namesake did?

river_otter 4 hours ago | parent | next [-]

It does not. I opted for the flow of returning to dashboard to give the user the control over which context they wanted to launch themselves into. I'm not against considering the feature, but in my own work trying to wrangle multiple agents, I haven't found the idle worker switch feature to be something I wanted personally

river_otter 4 hours ago | parent | prev [-]

I'm also seriously considering the ability to produce aoeii sound effects like "nuh nuh nuh"

itsthecourier 2 hours ago | parent [-]

it must be done

Mongoose 5 hours ago | parent | prev | next [-]

Agent orchestration seems to be the new hot problem to be solved in the ecosystem. See also Steve Yegge's most recent posts [1]. Curious to see what tools emerge as the winners of the Cambrian explosion we're probably about to see.

[1] https://steve-yegge.medium.com/the-future-of-coding-agents-e...

CuriouslyC an hour ago | parent | next [-]

There won't be a single orchestration winner, orchestration will just become ubiquitous in LoB systems. Slack and Github will probably be the biggest targets but it's pretty simple to create a chat bridge that supports adapters to support discord/telegram/etc and you can already do webhook orchestration easily enough.

river_otter 4 hours ago | parent | prev [-]

Totally. Yegge's post was fascinating and there was quite a bit of chatter about it internally at my company . I have this feeling that if I could just figure out how to effectively direct 10-20+ coding agents at once, I could supercharge my productivity and bug squashing skills. In some ways his post introducing a suite of new terminology helps to set the stage for this being a whole new world of being a SW engr.

crashabr 4 hours ago | parent | prev | next [-]

I'm setting up a small orchestration around zellij (I have almost no experience with tmux, so I went with the "modern" alternative), upterm and qrencode that allows me to 1) generate a claude code instance in a persistent session 2) make it controllable remotely via upterm 3) scan a qr code to copy the upterm server's ssh url on my phone so that I can paste it in termux.

I wonder if it would be more ergonomic to connect to the aoe window on my phone for when I have more then one claude code session to keep track of. I'm not against switching the zellij part to tmux.

river_otter 3 hours ago | parent [-]

Tbh that's exactly what I'm using aoe for: termius on my phone ssh into my Mac mini and then use aoe to check in on each agent session. Just make sure you check out the readme if you do this because at least for termius there's a quirk to make tmux and TUI happy. The recommended approach is to run aoe itself inside a tmux session which then will spawn additional tmux sessions as needed.

heliumtera 5 hours ago | parent | prev | next [-]

how is this different than using tmux? i don't understand what it does

>relies on tmux for security how is it more secure than not using it?

river_otter 5 hours ago | parent [-]

Ah thanks I should have clarified, I generally meant that's why I wrote it in rust. Tmux has nothing to do with security for sure.

It works on top of tmux to monitor the coding agent state all in one place so that you can see whether the agent is waiting for you. Today I also added git worktree support so that you can easily create and manage branches to run agents in parallel on the same codebase.

jauntywundrkind 4 hours ago | parent | prev [-]

I'm always curious how folks do status detection. Here you use tmux capture-pane and detect off that! Whew! Simple & direct!

I've been really enjoying how OpenCode is so extensible, how you can make great plugins that can for example read the session.idle event & then go do whatever they want. That does require dropping in some config asking for the plugin, which takes some effort & requires a restart (but your session will be right there & you can continue). It's technically elegant imo, and nice that there is the extensibility.

But hard to beat using screen as a framebuffer & just reading it out, for doing absolutely whatever it is you could possibly want to do! For example you can also detect permissions prompts, which I don't believe there is an event for!

river_otter 4 hours ago | parent [-]

Haha I'm all about the KISS principle. I also set up a snapshot testing framework so that people can submit screenshots of any messed up status reports and I can easily add them to the test suite to make sure we fix any issues that someone sees.

jauntywundrkind 4 hours ago | parent [-]

I'd love a cli subcommands that would just give me status, btw. Very neat to have.

river_otter 4 hours ago | parent [-]

I need to add some better docs but the CLI of aoe supports it already!