New request
#2453: Hermes-webui should not have direct access to the agent's source code. This is a security risk and implementation coupling anti pattern.
We'll provision a sandbox, run an agent against the issue, and open a draft PR. You can pull the branch and iterate from there.
Okay, There are several issues with what hermes-webui is doing here.
https://github.com/NousResearch/hermes-agent/blob/main/Dockerfile
FIrst
We are implementation coupled to the hermes-agent. We should only be coupled to its API. This is leading to heavy instability. I was broken multiple times over the last several weeks due to a lack of commitment to contract staiblity.
If there are no APIs that we can integrate with then the web UI may as well be running in the same container. There is zero benefit to running in a separate container if we have access to the source code used by the remote container to run its remote process. It just adds complexity an possibly unintentional security risks.
We would ideally not be exposing hermes-agent system access to web ui. If the webui can re-write the agent source code, it effectively has full access to the agent system. And therefore any security vulnerabilities the webui may have, are now amplified by anything the agent can do at the command line level, not just the web api level.
Had I known that's what the webui was doing I'd have never even installed it.
Lastly
It breaks docker convention and best practice. We shouldn't require mounting for a volume that contains the container entry point.
Related gripe, when and why did we change the workspace dir in the container? Please don't make frivolous changes that break users.
Ideal Solution
My recommendation would be to expose narrowly scoped APIs from hermes-agent that we can access to do what we need to do.
Architectural enhancement to eliminate inter-container filesystem coupling by establishing a formal API boundary.
- docker-compose.yml
- docs/docker.md
- api/routes/agent.py
- api/routes/sessions.py
- api/services/agent_proxy.py
- static/js/workspace/browser.js
- api/bootstrap.py