Skip to content

feat: DiDAL Phase 2 — dialectical orchestrator + direct hermes.ecoseek.org - #58

Merged
alrobles merged 1 commit into
mainfrom
devin/1779661005-didal-phase2
May 24, 2026
Merged

feat: DiDAL Phase 2 — dialectical orchestrator + direct hermes.ecoseek.org#58
alrobles merged 1 commit into
mainfrom
devin/1779661005-didal-phase2

Conversation

@alrobles

Copy link
Copy Markdown
Owner

Summary

DiDAL Phase 2 — the dialectical dual-agent orchestrator for Emily (Alpha, local) ↔ Hermes (Beta, remote on reumanlab).

Key changes:

Emily Plugin (Alpha side) — emily/plugins/ecoseek/

  • Refactored to talk directly to hermes.ecoseek.org (no broker needed)
  • Added dialectical_exchange tool — structured Alpha↔Beta debate (plan → execute → critique → refine → loop)
  • Added hermes_status tool — check if Beta is available before escalating
  • Uses HERMES_ECOSEEK_API_KEY for auth (replaces legacy ECOSEEK_BROKER_KEY)
  • Model default: hermes (was openclaw/main)
  • Plugin version: 0.5.0

Emily Config — emily/config.yaml

  • Enhanced system prompt with DiDAL delegation instructions
  • Emily now prefers delegating heavy tasks to Beta (SDMs, HPC, GBIF bulk, code execution)
  • Clear guidance: when to escalate vs handle locally
  • Three tools documented: escalate_remote, dialectical_exchange, hermes_status

Frontend — CORS fix + DiDAL UI

  • nginx reverse proxy at /api/hermes-healthhermes.ecoseek.org/health (fixes the CORS bug from PR feat: Emily avatar + Hermes Remote health check in info panel #56)
  • Remote health check now works in the browser (was always "Disconnected")
  • Info panel shows "DiDAL Phase 2 Active" when Beta is connected
  • Shows available tools: eco_analyze, ku_hpc, escalate_remote, dialectical_exchange
  • About section updated to describe Alpha↔Beta architecture

Startup — emily-start.sh + entrypoint.sh

  • Accepts HERMES_ECOSEEK_API_KEY env var
  • Passes HERMES_REMOTE_URL and API key through to container
  • Startup output shows DiDAL enabled/disabled status

Architecture

User → localhost:4000 (frontend)
  → localhost:8642 (Emily/Alpha, DeepSeek v4 Flash)
    → hermes.ecoseek.org (Hermes/Beta on reumanlab)
      → eco_analyze (GBIF, SDM, diversity, taxonomy)
      → ku_hpc (Slurm → A100/MI210 GPUs)
      → shell, GitHub CLI, DeepSeek v4 Pro

Review & Testing Checklist for Human

  • Test CORS fix: Run bash emily-start.sh, open localhost:4000, check that "Hermes Beta" shows "Connected" (green) in the info panel — this was broken before
  • Test DiDAL delegation: Set HERMES_ECOSEEK_API_KEY=agenticplu... and ask Emily "Query GBIF for jaguar occurrences in Costa Rica" — she should escalate to Beta
  • Test without API key: Run without HERMES_ECOSEEK_API_KEY — Emily should still work locally but show "DiDAL: Unavailable" in info panel
  • Test startup output: Verify emily-start.sh shows "DiDAL: Enabled" when key is set, "DiDAL: Disabled" when not
# Full test:
DEEPSEEK_API_KEY=sk-... HERMES_ECOSEEK_API_KEY=agenticplu-... bash emily-start.sh
# Open http://localhost:4000

Notes

  • Companion PR on hermes-agent: updates the remote-side plugin to also prefer hermes.ecoseek.org over broker
  • The dialectical_exchange tool breaks on Beta critique type to return control to Alpha, enabling multi-round refinement
  • The nginx proxy is a clean CORS workaround — no changes needed on the remote Hermes gateway config

Link to Devin session: https://app.devin.ai/sessions/6e7495b7d2e2416ba3f9626d6dcb9a2e
Requested by: @alrobles

…k.org

Phase 2 of the Dialectical Dual-Agent Loop (DiDAL):

Emily plugin (Alpha side):
- Refactored to talk directly to hermes.ecoseek.org (no broker needed)
- Added dialectical_exchange tool for structured Alpha↔Beta debate
- Added hermes_status tool to check remote availability
- Uses HERMES_ECOSEEK_API_KEY for auth (replaces ECOSEEK_BROKER_KEY)
- Model default changed from openclaw/main to hermes

Emily config:
- Enhanced system prompt with DiDAL delegation instructions
- Emily now prefers delegating heavy tasks to Beta
- Clear guidance on when to escalate vs handle locally

Frontend:
- nginx reverse proxy /api/hermes-health → hermes.ecoseek.org/health (CORS fix)
- Remote health check now uses nginx proxy (no more CORS errors)
- Info panel shows DiDAL Phase 2 status and available tools
- Updated About section to describe Alpha↔Beta architecture

Startup:
- emily-start.sh accepts HERMES_ECOSEEK_API_KEY
- entrypoint.sh passes HERMES_REMOTE_URL and API key to container
- Startup output shows DiDAL enabled/disabled status
@devin-ai-integration

Copy link
Copy Markdown
Contributor

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@alrobles
alrobles merged commit 434639d into main May 24, 2026
@alrobles
alrobles deleted the devin/1779661005-didal-phase2 branch May 26, 2026 13:27
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.

1 participant