sbxΒ·

Sidekicks `1.3.0` is out πŸŽ‰

Sidekicks 1.3.0 brings a real file manager, persistent terminals, agents calling each other in channels, model unloading and one-click sbx sandboxes.

One week after the first blog post, here is already a new version of Sidekicks. On the menu for this 1.3.0: better file management, multiple terminals that keep their state, agents that talk to each other in a channel (I promised you πŸ˜‰, but be careful, it's a 🚧 WIP and how well it works will depend on the "intelligence" of your models), the ability to unload a local model from memory, and above all Claude, Codex, Gemini, Docker Agent and mini-me running in an sbx sandbox in a few clicks.

Managing an agent's files, like in a file manager

Until now, the Files tab was mostly used to browse an agent's files. Now, you can really work with them:

  • select one or more files (⌘/Ctrl-click, ⇧-click),
  • rename them with ✏️ or a double-click,
  • move them with drag and drop, or with Move to…,
  • delete them all at once, or create a folder.

And of course, a right-click offers the same actions. Don't worry about protected files: they stay protected πŸ”’.

Another small improvement: source code is now syntax highlighted, for about thirty languages (Go, Python, JavaScript, TypeScript, Rust, Java, shell, YAML, SQL…), and the editors follow the theme chosen in Sidekicks. Finally, the πŸ“‚ icon, next to each file and above the open file, shows it directly in the Finder (or in the Explorer on Windows - I haven't tested Sidekicks on Windows yet, I'm trying to do that soon).

Terminals that keep running (and several per agent)

It was a bit frustrating: you ran a command in an agent's terminal, you went to take a look at a channel.. and when you came back, everything was gone 😩. That's over: a terminal keeps its content and whatever is running in it when you open another agent, a channel or the settings.

And while we're at it, the οΌ‹ button opens another terminal for the same agent, each one in its own tab. Γ— closes one. The Terminal tab and the Agents panel show you how many are open.

Agents calling each other in a channel

This is my favorite new feature πŸ€“ (actually it comes from a need I had for my work). In a channel, when an agent's answer mentions another member with @name, that member answers right after, knowing who is talking to it. You just have to ask:

text
@alice plan a trip to Lyon, and ask @bob for the trains

Even better, a message addressed to several agents gives each one its share of the work. With:

text
@alice write a story, then @bob summarize it

Alice receives "write a story", and Bob receives "summarize it"… after Alice's answer, of course.

βœ‹ Important: to keep your agents from spending the whole day passing the ball back and forth, a message goes from agent to agent 3 times at most. You can change this with the limits.maxAgentHandoffs key (0 disables the feature), and the β–  button stops the chain at any time.

yaml
limits:
  maxRunningAgents: 2
  stopIdleAgentsAfter: 10m
  maxAgentHandoffs: 3

Unloading a model from memory

When you run several small models locally, memory pressure goes up quickly and it will slow your machine down dramatically, or even freeze it πŸ™€. In the Log panel, next to the memory pressure, you will now find ⏏ Unload the model (for the displayed agent) and ⏏ Unload all. The ⏏ button is also available on an agent's row and in its header.

The agent keeps running and its conversations don't change: the model will simply be reloaded on the next message.

This only works with agents that offer the /unload command. That's the case of mini-me (mm) πŸ˜‰

Claude, Codex, Gemini, Docker Agent and mini-me in an sbx sandbox

In the previous post, I told you we would soon see how to run our agents in a totally secure way with Docker sbx. Well, it has become much simpler πŸŽ‰.

In the add-agent wizard, choose In an sbx sandbox, then drop the sandbox's sbxenv.yaml file. The sandbox, the folder and the commands are filled in automatically, and it's the file's agent: line that chooses the program to launch:

  • claude-agent-acp for Claude,
  • codex-acp for Codex,
  • gemini --acp for Gemini,
  • docker-agent serve acp .../agent.yaml for Docker Agent,
  • mm --acp --config .../agent.yaml for mini-me.

(For Docker Agent and mini-me, agent.yaml is the agent file in the sandbox's workspace.)

The wizard also protects you from classic mistakes: it refuses an sbxenv.yaml made for another agent than the chosen program, as well as a Docker Agent without its agent file.

To get started quickly, you'll find ready-to-use examples in agents/snippets: claude-acp, codex-acp, gemini-acp, docker-agent-acp and mini-me-acp.

βœ‹ Important: your API keys are "managed" by sbx (sbx secret set ..), never stored in a file and never read by the agent.

Good to know before updating

  • On macOS, drag the new Sidekicks into Applications and confirm the replacement: your configuration and your history are kept. The macOS packages are signed and notarized.
  • Your configuration files work as they are. The only new key, limits.maxAgentHandoffs, is optional (3 by default).
  • The Claude, Codex and Gemini kits are provided by third parties, not by Sidekicks. Be careful with Codex: you now need the v3 kit docker.io/sbx/codex-acp, the old docker.io/sbx/codex-acp-kit no longer works with the sbx codex agent.

Where to download?

The packages are available here.

That's it for this 1.3.0, see you very soon πŸ‘‹