Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Cloudron Forum

Offical apps | Community apps | Demo | Docs | Install
  1. Cloudron Forum
  2. Community Packages
  3. Hermes Agent

Hermes Agent

Scheduled Pinned Locked Moved Community Packages
39 Posts 11 Posters 3.9k Views 11 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • nostrdevN nostrdev

    @andreasdueren we were initially tempted to use cloudron for packaging agents but given the many documented cases of AI breaking out of containers, compounded by the amount of unencrypted internal cloudron comms and ports being available, we backed away

    We are now evaluating firecracker on a dedicated machine for agent hosting

    Curious what your (and others) position is with regard to the risks of running agents on cloudron containers

    timconsidineT
    timconsidineT
    timconsidine
    App Dev CA Maintainer Super Fan
    wrote on last edited by timconsidine
    #28

    @nostrdev E2B ? Kata ? Something else ?
    (Probably a slippery slope needing its own discuss or off-topic thread, based on your thought-provoking question touching many surfaces).

    Indie app dev, scratching my itches : communityapps.appx.uk, portfolio at myca.appx.uk

    1 Reply Last reply
    0
    • nostrdevN nostrdev referenced this topic on
    • nostrdevN
      nostrdevN
      nostrdev
      CA Maintainer
      wrote on last edited by
      #29

      slippery and off-topic indeed - put some iterations into it and made a new topic here. it's a subject that many, if not most, of us are interested in, has probably been well discussed before.

      https://forum.cloudron.io/topic/15921/running-ai-agents-on-cloudron-infiltrating-other-containers-and-admin-services

      1 Reply Last reply
      2
      • A
        A
        alpheus
        wrote on last edited by alpheus
        #30

        @andreasdueren Hi again!
        I updated to the latest version (0.4.89) and I can confirm that HERMES_REDACT_SECRETS is successfully read from scheduled cron jobs!
        Thanks for the fix!

        Now I have a new but similar issue issue with GITHUB_TOKEN - it is present in the .env (agent confirms that in the chat), but it's not being read in the cron.

        Here is the report from the agent:
        The cron scheduler runs inside the gateway process. When it spawns the no_agent script, it builds the child env via
        build_subprocess_env() → _sanitize_subprocess_env()
        which unconditionally strips GITHUB_TOKEN / GH_TOKEN (they're in _ALWAYS_STRIP_KEYS in tools/environments/local.py).

        The token is present in /app/data/.hermes/.env (line 436, uncommented, len 93) and in my interactive shell, but it never reaches the cron script's subprocess. This is a design conflict: the backup runner needs the token, but Hermes' secret-scrub policy deliberately removes it from child processes. GITHUB_TOKEN is not registered in config.yaml terminal.env_passthrough, so the scrub isn't bypassed.

        Proposed fix (from our side, not yours)
        A small wrapper-only code change in our python script that uses github for backup – not a config.yaml change and not a gateway restart.

        Current flow:

        cron scheduler (sanitized env; token stripped)
          → github_backup_publish.py
              → run_github_backup.py --publish
        

        Proposed flow:

        cron scheduler (sanitized env)
        → github_backup_publish.py
            → read /app/data/.hermes/.env internally
            → extract only GITHUB_TOKEN
            → start run_github_backup.py with the existing sanitized env + only GITHUB_TOKEN
        

        After I did this workaround, the github token is successfully read.

        My question for you

        is this something you could also fix, or I should keep this (or some better) workaround?

        Thank you once again for your time!

        andreasduerenA 1 Reply Last reply
        0
        • A alpheus

          @andreasdueren Hi again!
          I updated to the latest version (0.4.89) and I can confirm that HERMES_REDACT_SECRETS is successfully read from scheduled cron jobs!
          Thanks for the fix!

          Now I have a new but similar issue issue with GITHUB_TOKEN - it is present in the .env (agent confirms that in the chat), but it's not being read in the cron.

          Here is the report from the agent:
          The cron scheduler runs inside the gateway process. When it spawns the no_agent script, it builds the child env via
          build_subprocess_env() → _sanitize_subprocess_env()
          which unconditionally strips GITHUB_TOKEN / GH_TOKEN (they're in _ALWAYS_STRIP_KEYS in tools/environments/local.py).

          The token is present in /app/data/.hermes/.env (line 436, uncommented, len 93) and in my interactive shell, but it never reaches the cron script's subprocess. This is a design conflict: the backup runner needs the token, but Hermes' secret-scrub policy deliberately removes it from child processes. GITHUB_TOKEN is not registered in config.yaml terminal.env_passthrough, so the scrub isn't bypassed.

          Proposed fix (from our side, not yours)
          A small wrapper-only code change in our python script that uses github for backup – not a config.yaml change and not a gateway restart.

          Current flow:

          cron scheduler (sanitized env; token stripped)
            → github_backup_publish.py
                → run_github_backup.py --publish
          

          Proposed flow:

          cron scheduler (sanitized env)
          → github_backup_publish.py
              → read /app/data/.hermes/.env internally
              → extract only GITHUB_TOKEN
              → start run_github_backup.py with the existing sanitized env + only GITHUB_TOKEN
          

          After I did this workaround, the github token is successfully read.

          My question for you

          is this something you could also fix, or I should keep this (or some better) workaround?

          Thank you once again for your time!

          andreasduerenA
          andreasduerenA
          andreasdueren
          App Dev CA Maintainer
          wrote on last edited by
          #31

          I looked into this further. The missing token is a consequence of upstream Hermes deliberately filtering credentials from subprocess environments, rather than a Cloudron-specific environment issue.

          Upstream does offer general environment passthrough, but it explicitly prevents that mechanism from overriding its protected credential blocklist. It also does not currently provide an operator-controlled, per-script credential allowlist for cron jobs.

          I’m trying to keep this package as close to upstream as possible, so I won’t be adding a package-specific workaround for that filtering. Maintaining a separate credential-passing mechanism would add complexity and behavior that could diverge from upstream’s security decisions.

          A scoped way to give trusted cron scripts access to selected credentials seems like a reasonable upstream feature request. I’d prefer to use an upstream-supported solution if one becomes available, rather than implement a parallel mechanism in the Cloudron package.

          @alpheus

          A 1 Reply Last reply
          5
          • andreasduerenA andreasdueren

            I looked into this further. The missing token is a consequence of upstream Hermes deliberately filtering credentials from subprocess environments, rather than a Cloudron-specific environment issue.

            Upstream does offer general environment passthrough, but it explicitly prevents that mechanism from overriding its protected credential blocklist. It also does not currently provide an operator-controlled, per-script credential allowlist for cron jobs.

            I’m trying to keep this package as close to upstream as possible, so I won’t be adding a package-specific workaround for that filtering. Maintaining a separate credential-passing mechanism would add complexity and behavior that could diverge from upstream’s security decisions.

            A scoped way to give trusted cron scripts access to selected credentials seems like a reasonable upstream feature request. I’d prefer to use an upstream-supported solution if one becomes available, rather than implement a parallel mechanism in the Cloudron package.

            @alpheus

            A
            A
            alpheus
            wrote on last edited by
            #32

            @andreasdueren thank you for the response! Makes sense, I will use the current solution until hermes releases the feature.

            Once again, thanks for maintenance of the cloudron app!

            1 Reply Last reply
            2
            • micmcM
              micmcM
              micmc
              wrote on last edited by micmc
              #33

              I've installed hermes recently and the only issue I have as far as I can see is that the Chat in the Web UI does not seem to work it keeps disconnecting with this message at the top "Chat connection interrupted (code 1006). Reconnecting..." and "WebSocket connection failed".
              On the other hand it works well in the app's terminal. So i wonder if this is on purpose for the sake of running in CR?
              I've tried a few things even asked hermes how to fix it, but what it suggested did not work. And this is the main line of error message I get in the log

              2026-09-15 14:52:01,841 WARNING hermes_cli.web_server: pty refused: origin_mismatch origin=https://hermes-agent.xxxx.xxx bound=127.0.0.1 peer=127.0.0.1
              

              I've looking in this thread but found not the same probem.
              Anyone having the same issue or know how to fix it (if fixable in Cloudron of course)

              AI Intelligencia RED PILL Podcast
              (coming soon...)

              andreasduerenA 1 Reply Last reply
              1
              • micmcM micmc

                I've installed hermes recently and the only issue I have as far as I can see is that the Chat in the Web UI does not seem to work it keeps disconnecting with this message at the top "Chat connection interrupted (code 1006). Reconnecting..." and "WebSocket connection failed".
                On the other hand it works well in the app's terminal. So i wonder if this is on purpose for the sake of running in CR?
                I've tried a few things even asked hermes how to fix it, but what it suggested did not work. And this is the main line of error message I get in the log

                2026-09-15 14:52:01,841 WARNING hermes_cli.web_server: pty refused: origin_mismatch origin=https://hermes-agent.xxxx.xxx bound=127.0.0.1 peer=127.0.0.1
                

                I've looking in this thread but found not the same probem.
                Anyone having the same issue or know how to fix it (if fixable in Cloudron of course)

                andreasduerenA
                andreasduerenA
                andreasdueren
                App Dev CA Maintainer
                wrote on last edited by
                #34

                @micmc Thanks for the detailed log. This isn’t intentional, I simply don’t use the web UI and didn’t catch it. I traced it to the dashboard’s WebSocket origin check: the browser connects through the public Cloudron URL, but Hermes only recognizes its internal loopback address. That explains why terminal access works while web chat keeps disconnecting.

                While working on this, I found that upstream provides a public-URL setting specifically for reverse-proxy setups. Using it also requires native dashboard authentication, so I’ve implemented the upstream Nous OAuth login flow in the package rather than bypassing the origin check.

                The changes are implemented in 0.4.91. I haven’t been able to verify the complete login and browser-chat flow. This will introduce a Nous login and a one-time OAuth client registration for the dashboard, which I documented with the update.

                1 Reply Last reply
                2
                • C
                  C
                  creative567145
                  wrote last edited by
                  #35

                  HI @andreasdueren Hermes dissapeared from https://ca.cloudron.io/
                  Hope that everything is okay on your side 🙂

                  andreasduerenA 1 Reply Last reply
                  2
                  • C creative567145

                    HI @andreasdueren Hermes dissapeared from https://ca.cloudron.io/
                    Hope that everything is okay on your side 🙂

                    andreasduerenA
                    andreasduerenA
                    andreasdueren
                    App Dev CA Maintainer
                    wrote last edited by
                    #36

                    @creative567145 thanks for bringing this to my attention, this was a problem on the gitlab level which is now resolved.

                    1 Reply Last reply
                    2
                    • C
                      C
                      creative567145
                      wrote last edited by creative567145
                      #37

                      Hi @andreasdueren, hope you are having a great day.
                      Since the Kanban of Hermes was switched from the regular username+password, to CLOUDRON_OIDC

                      For Hermes instances that have been installed before that change, do you have a clean and easy way on how to make the switch to CLOUDRON_OIDC?

                      andreasduerenA 1 Reply Last reply
                      1
                      • C creative567145

                        Hi @andreasdueren, hope you are having a great day.
                        Since the Kanban of Hermes was switched from the regular username+password, to CLOUDRON_OIDC

                        For Hermes instances that have been installed before that change, do you have a clean and easy way on how to make the switch to CLOUDRON_OIDC?

                        andreasduerenA
                        andreasduerenA
                        andreasdueren
                        App Dev CA Maintainer
                        wrote last edited by
                        #38

                        @creative567145 Yes this was an upstream change I needed to implement. Unfortunately the only good way to do that is to create a backup, uninstall, install fresh with OIDC and then roll back your to your old backup

                        1 Reply Last reply
                        4
                        • C
                          C
                          creative567145
                          wrote last edited by
                          #39

                          Thank you @andreasdueren

                          1 Reply Last reply
                          1

                          Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                          Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                          With your input, this post could be even better 💗

                          Register Login
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Bookmarks
                          • Search