local modelsΒ·

Sidekicks `1.4.0` is out πŸŽ‰

Sidekicks 1.4.0 lets several agents answer at once with /parallel, and gives ACP agents its own tools: memory pressure, channels, agents, history search.

Barely time to digest the 1.3.0 and here is already the 1.4.0 of Sidekicks πŸš€. This version brings two new features: agents that answer "at the same time" in a channel, and agents that can use Sidekicks' own tools (memory pressure, channels, agents, history search…) thanks to ACP custom extensions.

Several agents answering at the same time

In the 1.3.0, I introduced agents that call each other in a channel. It's handy, but each one waits for its turn, and when the agents don't need each other's answers, waiting is a bit of a shame.

Now you just have to start your message with /parallel:

text
/parallel @alice write a poem about the sea and @bob find a title for a book about the sea

Alice and Bob each receive their share of the work, and both answers are written at the same time. The bar above the input area shows "Alice, Bob are answering ...", and the β–  button stops them all at once.

A few details worth knowing:

  • /parallel only counts if it's the first word of the message (@alice /parallel is a command for Alice). It's also suggested in the list when you type /.
  • Each agent doesn't see the others' answers for that message: it will read them with your next message.
  • If the agents call each other with @name in their answers, that still happens one after the other, after the parallel answers.

βœ‹ Important: with local models, running several agents at the same time also means loading several models in memory πŸ”₯. The number of agents answering together is therefore limited by limits.maxRunningAgents (the others wait for a free slot). Keep /parallel for agents that fit together in your RAM, or for agents that use remote endpoints.

yaml
limits:
  maxRunningAgents: 2

Sidekicks' tools, for the agents

This is my favorite new feature in this version πŸ€“. Until now, Sidekicks simply relayed messages between you and your agents. Now, it also offers them its own tools, through ACP:

  • memory_pressure: your machine's memory pressure,
  • about_sidekicks: what Sidekicks is (and its real version),
  • current_channel: the channel the agent is talking in, and who's there,
  • list_channels and list_agents: the list of channels and agents,
  • search_messages: a search through a channel's whole history (ignoring case and accents).

In practice, your agent can now answer questions like:

text
@riker what's the memory pressure?
@riker which channel are we in, and who's here?
@riker what did we say about Lyon in #general?

Now, there's a "but" πŸ˜…: few ACP agents know how to discover their client's tools today. mini-me (mm) does (you probably saw that coming πŸ˜‰). Claude, Codex, Gemini and Docker Agent ignore these tools and work exactly as before.

To give the tools to a Mini Me agent, add this to its agent.yaml file, then restart it:

yaml
acp:
  clientTools:
    enabled: true
    discovery: meta      # or request
    permissions: auto    # ask: you approve each call
    timeout: 30s

The model then sees the tools as client_<name> (client_memory_pressure, client_search_messages...), and each call shows up in the answer like any other tool call.

Tip: a small model is much more willing to call a tool when its instructions name it. For example, add to its system: a line like "Call client_current_channel to know where you are and who is there."

Choosing which tools are offered

On the Sidekicks side, a new setting, agentTools, enabled by default, lets you choose what is offered:

yaml
agentTools:
  enabled: true          # false: no tools
  offer:                 # only these; without "offer", all of them
    - memory_pressure
    - current_channel
    - list_agents

The Settings editor suggests the tool names, and a running agent whose tools have changed shows "restart to apply changes". If an agent tells you it doesn't have a tool, take a look at its log (Log): at startup, Sidekicks writes the list of tools it offered to it.

βœ‹ Important: list_channels and search_messages read all channels (and search_messages also reads direct conversations), not only the agent's own. If you want to keep an agent within its own channels, remove them from offer.

Small changes

  • A half-written message now stays in its channel (or conversation) when you switch to another one, until you send it. No more text lost while checking something elsewhere (careful, drafts don't survive closing Sidekicks).

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, agentTools, is optional (all tools are offered by default).
  • To give the tools to a mini-me agent, add acp.clientTools to its file and restart it.

Where to download?

The packages are available here.

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