Skip to content

Conversation

@rumpl
Copy link
Member

@rumpl rumpl commented Oct 21, 2025

This implements the ACP protocol in cagent, you can now configure your ACP client with cagent acp agent.yaml and then you can use your agent in your IDE.

Start of a session
Screenshot 2025-10-23 at 11 00 27

Tool confirmation
Screenshot 2025-10-23 at 11 00 45

Final thing, with file edit tracking in Zed.
Screenshot 2025-10-23 at 11 00 58

@rumpl rumpl force-pushed the feat-acp branch 11 times, most recently from 0e4c814 to 2f2bf81 Compare October 23, 2025 09:04
rumpl added 2 commits October 23, 2025 11:05
Signed-off-by: Djordje Lukic <[email protected]>
Making it possible to re-define builtin tools when we call the team
loader

Signed-off-by: Djordje Lukic <[email protected]>
@rumpl rumpl marked this pull request as ready for review October 23, 2025 09:08
@rumpl rumpl requested a review from a team as a code owner October 23, 2025 09:08
@rumpl
Copy link
Member Author

rumpl commented Oct 23, 2025

Note: I am not handling embedded resources still, will do in a followup

Copy link
Contributor

@krissetto krissetto left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just for context since i haven't gone deep in ACP, is filesystem the only toolset that needs/wiil need an ACP specific wrapper?

Also a quick mention in the README is probably warranted, to show users how they can use the project

$ cagent api config.yaml
$ cagent api config.yaml --listen :8080

# ACP Server (Agent Client Protocol via stdio)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe here we could add a brief mention of what its for, and a link to https://agentclientprotocol.com/overview/introduction?

Comment on lines +176 to +181
if content.Text != nil {
userContent += content.Text.Text
}
if content.ResourceLink != nil {
slog.Debug("resource link", "link", content.ResourceLink)
}
if content.Resource != nil {
slog.Debug("embedded context", "context", content.Resource)
slog.Debug(content.Resource.Resource.TextResourceContents.Text)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

shall we add at least the debug logs for the other types of content as well so we dont forget to implement them later? (image, audio, blob resources)

https://agentclientprotocol.com/protocol/content#param-resource

With the new `cagent acp <agent.yaml` command

Signed-off-by: Djordje Lukic <[email protected]>
@dgageot dgageot merged commit 3f22aaf into docker:main Oct 23, 2025
5 checks passed
@gianpaj
Copy link

gianpaj commented Oct 24, 2025

Nice one! Could you provide an example agent.yaml please?

@rumpl
Copy link
Member Author

rumpl commented Oct 24, 2025

In the screenshot I was using the golang_developer.yaml that's in the root of this repo, I added this to my Zed config:

  "agent_servers": {
    "cagent": {
      "command": "cagent",
      "args": ["acp", "./golang_developer.yaml"]
    }
  }

You can also try the examples/gopher.yaml one, it's nice too.

You can also cagent new and ask it to generate a developer agent for you. Or you can craft your own that suits your needs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants