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
36 Posts 11 Posters 3.8k 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.
  • E
    E
    enerch
    wrote on last edited by
    #15
    This post is deleted!
    1 Reply Last reply
    0
    • C
      C
      chrisbol
      wrote on last edited by chrisbol
      #16

      great that hermes agent is now available on Cloudron. But I have some issues with dashboard.
      With help of my local AI i have drafter this message...

      OPEN QUESTION TO THE MAINTAINER (setting the scene)
      Is the browser-side dashboard (including the Chat and System pages) an intended
      surface for this Cloudron package? Or is the dashboard primarily meant for Kanban

      • the /v1 API, with chat/sessions hosted on the local desktop/CLI and via the
        gateway's platform channels? This determines whether the report below is a bug you
        want to fix or an intentional scope decision.

      If web pages ARE in scope: the Hermes codebase ships full hosted-web-chat support
      and first-class subpath-reverse-proxy support (X-Forwarded-Prefix handling and
      /assets rewriting in _serve_index), so the failure below looks like a small,
      easy-to-ship nginx routing gap in the package rather than deliberate design. The
      proposed one-block fix resolves every affected page at once.

      The bug:
      I run the Hermes Agent package on Cloudron. The dashboard shell loads fine;
      /kanban, the left nav, and the Files page all work. But every dynamically-loaded
      page is blank: clicking "Chat" and clicking "System" both give a completely empty
      screen, with the browser console showing 403 (Forbidden, net::ERR_ABORTED) on
      their lazy-loaded asset chunks:

      /assets/ChatPage-*.js
      /assets/SystemPage-*.js
      /assets/xterm-BrP-ENHg.css  and  /assets/xterm-*.js
      /assets/themes-*.js
      /assets/useProfileScope-*.js
      /assets/chat-activation-*.js
      /assets/ModelReloadConfirm-*.js
      

      ROOT CAUSE (confirmed, not speculation)
      The package's nginx only routes /kanban/* to the dashboard backend
      (127.0.0.1:9119), rewriting the prefix and setting X-Forwarded-Prefix: /kanban.
      Hermes's _serve_index then rewrites the statically-referenced asset URLs in the
      HTML to /kanban/assets/... -- which is exactly why the shell, the Files page, and
      the Kanban page all work.

      But pages like Chat and System are loaded at runtime via dynamic import() with
      build-time absolute paths (/assets/...). The browser therefore requests their
      chunks WITHOUT the /kanban prefix. Those requests land on 'location /' -> the
      front landing page's try_files -> fall through to the headless API server (port
      8642), which has no SPA assets and returns 403/404. The dashboard backend itself
      serves every chunk fine (returns 200), so this is purely a reverse-proxy routing
      gap in the package, not a Hermes bug.

      Quick repro that isolates it (from a Cloudron terminal):

      curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8000/kanban/assets/ChatPage-*.js   # 200
      curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8000/assets/ChatPage-*.js          # 403/403
      

      PROPOSED FIX (in the package's nginx.conf)
      Add a location /assets/ block that proxies to the same dashboard backend with the
      same headers as /kanban/, including X-Forwarded-Prefix: /kanban so the CSS route
      keeps rewriting url(/fonts/...) references correctly:

      location /assets/ {
          proxy_pass http://127.0.0.1:9119;
          proxy_http_version 1.1;
          proxy_set_header Host 127.0.0.1:9119;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header X-Forwarded-Host $host;
          proxy_set_header X-Forwarded-Prefix /kanban;
          proxy_read_timeout 600s;
          proxy_send_timeout 600s;
      }
      

      This single block fixes every lazy-loaded page at once (Chat, System, and any
      future dynamically-imported route).

      Environment: Hermes Agent v0.20.0 (2026.8.3), Cloudron deployment, dashboard bound
      to 127.0.0.1:9119, SPA mounted under /kanban.

      andreasduerenA 1 Reply Last reply
      2
      • C chrisbol

        great that hermes agent is now available on Cloudron. But I have some issues with dashboard.
        With help of my local AI i have drafter this message...

        OPEN QUESTION TO THE MAINTAINER (setting the scene)
        Is the browser-side dashboard (including the Chat and System pages) an intended
        surface for this Cloudron package? Or is the dashboard primarily meant for Kanban

        • the /v1 API, with chat/sessions hosted on the local desktop/CLI and via the
          gateway's platform channels? This determines whether the report below is a bug you
          want to fix or an intentional scope decision.

        If web pages ARE in scope: the Hermes codebase ships full hosted-web-chat support
        and first-class subpath-reverse-proxy support (X-Forwarded-Prefix handling and
        /assets rewriting in _serve_index), so the failure below looks like a small,
        easy-to-ship nginx routing gap in the package rather than deliberate design. The
        proposed one-block fix resolves every affected page at once.

        The bug:
        I run the Hermes Agent package on Cloudron. The dashboard shell loads fine;
        /kanban, the left nav, and the Files page all work. But every dynamically-loaded
        page is blank: clicking "Chat" and clicking "System" both give a completely empty
        screen, with the browser console showing 403 (Forbidden, net::ERR_ABORTED) on
        their lazy-loaded asset chunks:

        /assets/ChatPage-*.js
        /assets/SystemPage-*.js
        /assets/xterm-BrP-ENHg.css  and  /assets/xterm-*.js
        /assets/themes-*.js
        /assets/useProfileScope-*.js
        /assets/chat-activation-*.js
        /assets/ModelReloadConfirm-*.js
        

        ROOT CAUSE (confirmed, not speculation)
        The package's nginx only routes /kanban/* to the dashboard backend
        (127.0.0.1:9119), rewriting the prefix and setting X-Forwarded-Prefix: /kanban.
        Hermes's _serve_index then rewrites the statically-referenced asset URLs in the
        HTML to /kanban/assets/... -- which is exactly why the shell, the Files page, and
        the Kanban page all work.

        But pages like Chat and System are loaded at runtime via dynamic import() with
        build-time absolute paths (/assets/...). The browser therefore requests their
        chunks WITHOUT the /kanban prefix. Those requests land on 'location /' -> the
        front landing page's try_files -> fall through to the headless API server (port
        8642), which has no SPA assets and returns 403/404. The dashboard backend itself
        serves every chunk fine (returns 200), so this is purely a reverse-proxy routing
        gap in the package, not a Hermes bug.

        Quick repro that isolates it (from a Cloudron terminal):

        curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8000/kanban/assets/ChatPage-*.js   # 200
        curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8000/assets/ChatPage-*.js          # 403/403
        

        PROPOSED FIX (in the package's nginx.conf)
        Add a location /assets/ block that proxies to the same dashboard backend with the
        same headers as /kanban/, including X-Forwarded-Prefix: /kanban so the CSS route
        keeps rewriting url(/fonts/...) references correctly:

        location /assets/ {
            proxy_pass http://127.0.0.1:9119;
            proxy_http_version 1.1;
            proxy_set_header Host 127.0.0.1:9119;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Prefix /kanban;
            proxy_read_timeout 600s;
            proxy_send_timeout 600s;
        }
        

        This single block fixes every lazy-loaded page at once (Chat, System, and any
        future dynamically-imported route).

        Environment: Hermes Agent v0.20.0 (2026.8.3), Cloudron deployment, dashboard bound
        to 127.0.0.1:9119, SPA mounted under /kanban.

        andreasduerenA
        andreasduerenA
        andreasdueren
        App Dev
        wrote on last edited by
        #17

        @chrisbol Thanks for the detailed report, the root asset routing issue was confirmed and fixed in package version 0.4.65. The package now proxies the lazy loaded dashboard assets to the Hermes dashboard backend while keeping them protected by the same authentication as the Kanban dashboard. Chat, System, terminal, theme, and related asset chunks now return successfully. The update is published and available.

        1 Reply Last reply
        2
        • M
          M
          msbt
          App Dev
          wrote on last edited by
          #18

          @andreasdueren do you have plans or even already tried adding something like https://hermes-workspace.com/ to the package?

          Happy Hosting & Web Development

          andreasduerenA 2 Replies Last reply
          1
          • M msbt

            @andreasdueren do you have plans or even already tried adding something like https://hermes-workspace.com/ to the package?

            andreasduerenA
            andreasduerenA
            andreasdueren
            App Dev
            wrote on last edited by
            #19

            @msbt I’ll look into it

            1 Reply Last reply
            2
            • M msbt

              @andreasdueren do you have plans or even already tried adding something like https://hermes-workspace.com/ to the package?

              andreasduerenA
              andreasduerenA
              andreasdueren
              App Dev
              wrote on last edited by
              #20

              @msbt this looks like a community package and probably should not be included on the Hermes package. Adds extra complexity, package churn and attack surface.

              1 Reply Last reply
              2
              • M
                M
                msbt
                App Dev
                wrote on last edited by
                #21

                @andreasdueren aye, thanks for checking it out!

                Happy Hosting & Web Development

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

                  @andreasdueren hello Andreas!
                  I have an issue with setting the HERMES_REDACT_SECRETS for scheduled cron jobs. Scheduled cron does phone number extraction and reports it to telegram, but the phone numbers arrive redacted (+49*****1234). If I create a one-off cron and then execute it via hermes cron ... then the redaction doesn't happen (phone numbers are visible).

                  I think the issue is that the main gateway process doesn't pick up the value that I wrote in the .env file (false), which results in phone numbers being redacted when they are outputted to telegram.
                  If you want to go into the issue with much more depth, below is the detailed summary from my agent of all the things we tried and all the findings that might be useful.

                  This happened on HermesAgent app version 0.4.61, but I would guess that the issue still persists.
                  Thank you for your time and dedication to the project maintenance!

                  Agent summary

                  Short version
                  python -m gateway.run imports agent.redact before gateway.run loads ~/.hermes/.env, so HERMES_REDACT_SECRETS=false arrives too late for its import-time snapshot.
                  Fixing that alone won't solve it though: the gateway's final outbound delivery call forces redaction regardless, and scheduled cron output passes through both scheduler and gateway redaction layers.

                  Root causes identified

                  • agent/redact.py snapshots HERMES_REDACT_SECRETS at import time (_REDACT_ENABLED = os.getenv(...)), so it must be set before agent.redact is imported.
                  • The Cloudron supervisor's environment= list for hermes-gateway includes HERMES_HOME etc., but not HERMES_REDACT_SECRETS/HERMES_REDACT_PHONES.
                  • gateway/run.py imports agent modules (which import agent.redact) near the top, but only calls load_hermes_dotenv() much later (~line 1829) — so the .env loads after the snapshot is taken.
                  • gateway/run.py::_redact_gateway_user_facing_secrets() calls redact_sensitive_text(text, force=True) — this bypasses _REDACT_ENABLED entirely, so security.redact_secrets: false in config.yaml has no effect on this path.
                  • The phone regex also misses Serbian local format and international numbers with a space after the country code.
                  • cron/scheduler.py redacts no_agent stdout/stderr independently, then the gateway applies its own forced pass — so scheduled jobs go through two redaction layers.

                  What we tried

                  • We tested: security.redact_secrets: false in config.yaml
                  • HERMES_REDACT_SECRETS=false in .env
                  • editing supervisord's environment directly (not durable — file is app-owned and replaced on updates)
                  • a sitecustomize.py early-patch (confirmed _REDACT_ENABLED=False standalone, but scheduled Telegram delivery still redacted due to force=True)
                  • disabling phone matching + HERMES_REDACT_PHONES=false (still redacted in the real delivery path)
                  andreasduerenA 1 Reply Last reply
                  0
                  • A alpheus

                    @andreasdueren hello Andreas!
                    I have an issue with setting the HERMES_REDACT_SECRETS for scheduled cron jobs. Scheduled cron does phone number extraction and reports it to telegram, but the phone numbers arrive redacted (+49*****1234). If I create a one-off cron and then execute it via hermes cron ... then the redaction doesn't happen (phone numbers are visible).

                    I think the issue is that the main gateway process doesn't pick up the value that I wrote in the .env file (false), which results in phone numbers being redacted when they are outputted to telegram.
                    If you want to go into the issue with much more depth, below is the detailed summary from my agent of all the things we tried and all the findings that might be useful.

                    This happened on HermesAgent app version 0.4.61, but I would guess that the issue still persists.
                    Thank you for your time and dedication to the project maintenance!

                    Agent summary

                    Short version
                    python -m gateway.run imports agent.redact before gateway.run loads ~/.hermes/.env, so HERMES_REDACT_SECRETS=false arrives too late for its import-time snapshot.
                    Fixing that alone won't solve it though: the gateway's final outbound delivery call forces redaction regardless, and scheduled cron output passes through both scheduler and gateway redaction layers.

                    Root causes identified

                    • agent/redact.py snapshots HERMES_REDACT_SECRETS at import time (_REDACT_ENABLED = os.getenv(...)), so it must be set before agent.redact is imported.
                    • The Cloudron supervisor's environment= list for hermes-gateway includes HERMES_HOME etc., but not HERMES_REDACT_SECRETS/HERMES_REDACT_PHONES.
                    • gateway/run.py imports agent modules (which import agent.redact) near the top, but only calls load_hermes_dotenv() much later (~line 1829) — so the .env loads after the snapshot is taken.
                    • gateway/run.py::_redact_gateway_user_facing_secrets() calls redact_sensitive_text(text, force=True) — this bypasses _REDACT_ENABLED entirely, so security.redact_secrets: false in config.yaml has no effect on this path.
                    • The phone regex also misses Serbian local format and international numbers with a space after the country code.
                    • cron/scheduler.py redacts no_agent stdout/stderr independently, then the gateway applies its own forced pass — so scheduled jobs go through two redaction layers.

                    What we tried

                    • We tested: security.redact_secrets: false in config.yaml
                    • HERMES_REDACT_SECRETS=false in .env
                    • editing supervisord's environment directly (not durable — file is app-owned and replaced on updates)
                    • a sitecustomize.py early-patch (confirmed _REDACT_ENABLED=False standalone, but scheduled Telegram delivery still redacted due to force=True)
                    • disabling phone matching + HERMES_REDACT_PHONES=false (still redacted in the real delivery path)
                    andreasduerenA
                    andreasduerenA
                    andreasdueren
                    App Dev
                    wrote on last edited by
                    #23

                    @alpheus I pushed 0.4.87 which should resolve this

                    A 1 Reply Last reply
                    2
                    • WiseMetalheadW
                      WiseMetalheadW
                      WiseMetalhead
                      translator
                      wrote on last edited by
                      #24

                      Am I right in thinking that Incoming Email in the Cloudron app settings currently doesn't work? Whenever I try to configure the mailbox, I always get these errors in the logs:

                      Sep 02 17:03:52 2026-09-02 14:03:52,991 ERROR hermes_plugins.email_platform.adapter: [Email] SMTP connection failed: STARTTLS extension not supported by server.
                      
                      Sep 02 17:03:53 2026-09-02 14:03:53,013 WARNING gateway.run: ✗ email failed to connect
                      

                      And if I send an email to that address, the agent doesn't respond at all.

                      Outgoing email works fine, but only if I leave the default settings unchanged after installing the app.

                      andreasduerenA 1 Reply Last reply
                      0
                      • andreasduerenA andreasdueren

                        @alpheus I pushed 0.4.87 which should resolve this

                        A
                        A
                        alpheus
                        wrote on last edited by
                        #25

                        @andreasdueren thank you for the fix! I will update hermes in the next few days to the latest version and let you know if it fixed it! Thanks for the fast effort and update!

                        1 Reply Last reply
                        1
                        • WiseMetalheadW WiseMetalhead

                          Am I right in thinking that Incoming Email in the Cloudron app settings currently doesn't work? Whenever I try to configure the mailbox, I always get these errors in the logs:

                          Sep 02 17:03:52 2026-09-02 14:03:52,991 ERROR hermes_plugins.email_platform.adapter: [Email] SMTP connection failed: STARTTLS extension not supported by server.
                          
                          Sep 02 17:03:53 2026-09-02 14:03:53,013 WARNING gateway.run: ✗ email failed to connect
                          

                          And if I send an email to that address, the agent doesn't respond at all.

                          Outgoing email works fine, but only if I leave the default settings unchanged after installing the app.

                          andreasduerenA
                          andreasduerenA
                          andreasdueren
                          App Dev
                          wrote on last edited by
                          #26

                          @WiseMetalhead Please update to 0.4.88. It should work now.

                          1 Reply Last reply
                          2
                          • nostrdevN
                            nostrdevN
                            nostrdev
                            wrote on last edited by
                            #27

                            @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 1 Reply Last reply
                            2
                            • 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
                              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
                                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
                                    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
                                          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

                                          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