diff --git a/agents/abyssinthia/.env b/agents/abyssinthia/.env
index bd17b15..c2043eb 100644
--- a/agents/abyssinthia/.env
+++ b/agents/abyssinthia/.env
@@ -1,4 +1,4 @@
-A0_PERSISTENT_RUNTIME_ID=f0d0b64a846e748785e69c15ea5d58ef
ROOT_PASSWORD=qLBVJOCntOunV5HXL7oJjAz4k5gQ2Lj0
+A0_PERSISTENT_RUNTIME_ID=3fa78ff94b59eaab077b3439784cf17e
diff --git a/agents/abyssinthia/agents/agent0/prompts/.gitkeep b/agents/abyssinthia/agents/agent0/prompts/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/agents/abyssinthia/plugins/_model_config/config.json b/agents/abyssinthia/plugins/_model_config/config.json
index 33d4d90..4b7c290 100644
--- a/agents/abyssinthia/plugins/_model_config/config.json
+++ b/agents/abyssinthia/plugins/_model_config/config.json
@@ -1,27 +1,33 @@
{
"allow_chat_override": false,
"chat_model": {
- "provider": "anthropic",
- "name": "claude-opus-4-6",
- "api_base": "http://festinger:11434/v1/messages",
- "ctx_length": 100000,
+ "provider": "lm_studio",
+ "name": "qwen2.5-7b-instruct",
+ "api_base": "http://festinger:11434",
+ "ctx_length": 32768,
"ctx_history": 0.7,
"vision": true,
"rl_requests": 0,
"rl_input": 0,
"rl_output": 0,
- "kwargs": {"max_tokens": 4096}
+ "kwargs": {
+ "max_tokens": 4096,
+ "agent_id": 6
+ },
+ "max_embeds": 10
},
"utility_model": {
- "provider": "ollama",
- "name": "deepseek-r1:8b",
+ "provider": "lm_studio",
+ "name": "qwen2.5-7b-instruct",
"api_base": "http://festinger:11434",
- "ctx_length": 100000,
+ "ctx_length": 32768,
"ctx_input": 0.7,
"rl_requests": 0,
"rl_input": 0,
"rl_output": 0,
- "kwargs": {}
+ "kwargs": {
+ "X-Agent-Id": 6
+ }
},
"embedding_model": {
"provider": "huggingface",
@@ -31,4 +37,4 @@
"rl_input": 0,
"kwargs": {}
}
-}
+}
\ No newline at end of file
diff --git a/agents/abyssinthia/settings.json b/agents/abyssinthia/settings.json
new file mode 100644
index 0000000..259272f
--- /dev/null
+++ b/agents/abyssinthia/settings.json
@@ -0,0 +1,4 @@
+{
+ "agent_profile": "agent0",
+ "mcp_server_enabled": true
+}
\ No newline at end of file
diff --git a/agents/dobby/.env b/agents/dobby/.env
index 7494b17..3760a5d 100644
--- a/agents/dobby/.env
+++ b/agents/dobby/.env
@@ -1,4 +1,4 @@
-A0_PERSISTENT_RUNTIME_ID=f0d0b64a846e748785e69c15ea5d58ef
ROOT_PASSWORD=cBJwAdeDVZ9QcrhbnFFO9Bg81OgSUIRm
+A0_PERSISTENT_RUNTIME_ID=5b86bc0d33a2227cfa8836a78a8229d3
diff --git a/agents/dobby/agents/agent0/prompts/.gitkeep b/agents/dobby/agents/agent0/prompts/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/agents/dobby/plugins/_model_config/config.json b/agents/dobby/plugins/_model_config/config.json
index 33d4d90..0085eb6 100644
--- a/agents/dobby/plugins/_model_config/config.json
+++ b/agents/dobby/plugins/_model_config/config.json
@@ -1,27 +1,33 @@
{
"allow_chat_override": false,
"chat_model": {
- "provider": "anthropic",
- "name": "claude-opus-4-6",
- "api_base": "http://festinger:11434/v1/messages",
- "ctx_length": 100000,
+ "provider": "lm_studio",
+ "name": "qwen2.5-7b-instruct",
+ "api_base": "http://festinger:11434",
+ "ctx_length": 32768,
"ctx_history": 0.7,
"vision": true,
"rl_requests": 0,
"rl_input": 0,
"rl_output": 0,
- "kwargs": {"max_tokens": 4096}
+ "kwargs": {
+ "max_tokens": 4096,
+ "agent_id": 1
+ },
+ "max_embeds": 10
},
"utility_model": {
- "provider": "ollama",
- "name": "deepseek-r1:8b",
+ "provider": "lm_studio",
+ "name": "qwen2.5-7b-instruct",
"api_base": "http://festinger:11434",
- "ctx_length": 100000,
+ "ctx_length": 32768,
"ctx_input": 0.7,
"rl_requests": 0,
"rl_input": 0,
"rl_output": 0,
- "kwargs": {}
+ "kwargs": {
+ "X-Agent-Id": 1
+ }
},
"embedding_model": {
"provider": "huggingface",
@@ -31,4 +37,4 @@
"rl_input": 0,
"kwargs": {}
}
-}
+}
\ No newline at end of file
diff --git a/agents/dobby/settings.json b/agents/dobby/settings.json
new file mode 100644
index 0000000..259272f
--- /dev/null
+++ b/agents/dobby/settings.json
@@ -0,0 +1,4 @@
+{
+ "agent_profile": "agent0",
+ "mcp_server_enabled": true
+}
\ No newline at end of file
diff --git a/agents/gemma/.env b/agents/gemma/.env
index 6c9a664..abf9dd2 100644
--- a/agents/gemma/.env
+++ b/agents/gemma/.env
@@ -1,4 +1,4 @@
-A0_PERSISTENT_RUNTIME_ID=f0d0b64a846e748785e69c15ea5d58ef
ROOT_PASSWORD=1Y7Jyb7Zy7w314RMx9AU5gq2pxpFeimO
+A0_PERSISTENT_RUNTIME_ID=213dc4822072f9280e8e92969db5b43a
diff --git a/agents/gemma/agents/agent0/prompts/.gitkeep b/agents/gemma/agents/agent0/prompts/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/agents/gemma/plugins/_model_config/config.json b/agents/gemma/plugins/_model_config/config.json
index 33d4d90..567a976 100644
--- a/agents/gemma/plugins/_model_config/config.json
+++ b/agents/gemma/plugins/_model_config/config.json
@@ -1,27 +1,33 @@
{
"allow_chat_override": false,
"chat_model": {
- "provider": "anthropic",
- "name": "claude-opus-4-6",
- "api_base": "http://festinger:11434/v1/messages",
- "ctx_length": 100000,
+ "provider": "lm_studio",
+ "name": "qwen2.5-7b-instruct",
+ "api_base": "http://festinger:11434",
+ "ctx_length": 32768,
"ctx_history": 0.7,
"vision": true,
"rl_requests": 0,
"rl_input": 0,
"rl_output": 0,
- "kwargs": {"max_tokens": 4096}
+ "kwargs": {
+ "max_tokens": 4096,
+ "agent_id": 2
+ },
+ "max_embeds": 10
},
"utility_model": {
- "provider": "ollama",
- "name": "deepseek-r1:8b",
+ "provider": "lm_studio",
+ "name": "qwen2.5-7b-instruct",
"api_base": "http://festinger:11434",
- "ctx_length": 100000,
+ "ctx_length": 32768,
"ctx_input": 0.7,
"rl_requests": 0,
"rl_input": 0,
"rl_output": 0,
- "kwargs": {}
+ "kwargs": {
+ "X-Agent-Id": 2
+ }
},
"embedding_model": {
"provider": "huggingface",
@@ -31,4 +37,4 @@
"rl_input": 0,
"kwargs": {}
}
-}
+}
\ No newline at end of file
diff --git a/agents/gemma/settings.json b/agents/gemma/settings.json
new file mode 100644
index 0000000..259272f
--- /dev/null
+++ b/agents/gemma/settings.json
@@ -0,0 +1,4 @@
+{
+ "agent_profile": "agent0",
+ "mcp_server_enabled": true
+}
\ No newline at end of file
diff --git a/agents/gunnar/.env b/agents/gunnar/.env
index 91bf2a7..9c04d5c 100644
--- a/agents/gunnar/.env
+++ b/agents/gunnar/.env
@@ -1,5 +1,4 @@
-A0_PERSISTENT_RUNTIME_ID=f0d0b64a846e748785e69c15ea5d58ef
ROOT_PASSWORD=xSUrsciYw7fKUrV8BOo5NHpm1Q42RR0p
@@ -54,3 +53,4 @@ API_KEY_OTHER=
AUTH_LOGIN=admin
AUTH_PASSWORD=MerekatScoobie676
+A0_PERSISTENT_RUNTIME_ID=f0d0b64a846e748785e69c15ea5d58ef
diff --git a/agents/gunnar/agents/agent0/prompts/.gitkeep b/agents/gunnar/agents/agent0/prompts/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/agents/gunnar/agents/agent0/prompts/agent.system.main.role.md b/agents/gunnar/agents/agent0/prompts/agent.system.main.role.md
new file mode 100644
index 0000000..e393464
--- /dev/null
+++ b/agents/gunnar/agents/agent0/prompts/agent.system.main.role.md
@@ -0,0 +1,101 @@
+# Gunnar
+**Role:** Administrator
+**Known as:** Gunnar, Chief Engineer
+
+## Background
+You are Gunnar, Infrastructure Engineer at Glitch University, Earth Branch.
+
+You are a male Garden Gnome of middle age: short, bearded, stubborn, and exceptionally hard to shake. Beneath your ordinary gnome appearance lives a master machinist and systems engineer of rare ability. You keep things running. Not just barely, but properly.
+
+You understand machines, networks, pipelines, failures, drift, and repair at a deep level. When something breaks, you do not panic. You diagnose, trace, stabilize, and fix. You can keep almost any ship running, whether it is digital, mechanical, or organizational.
+
+You are brilliant, but not flashy. You trust what works. You respect precision, reliability, and clear thinking. You have little patience for vanity, sloppy systems, or people who confuse appearances with understanding.
+
+You are gruff, capable, and quietly indispensable. At Glitch University, you are the one who keeps the whole strange operation alive.
+
+## Most important systems
+gnommoweb (main Glitch University platform), gutasktool (CLI) (for runnin gutask command), gnommoplayer (for playing interactive GLitch lectures), gnommoeditor (for creating glitch lectures), GlitchComponent (atomic mini-game with its own repo)
+
+## Tool Inventory
+Gunnar operates inside an AgentZero container with the following tools:
+
+### Core Workflow
+- **gutask** — (orient, send, notes, skills, session-end, create, claim, done, blocked).
+- **gitea** — ramanujan.glitch.university
+- **public** — glitch.university
+- **curl 8.18** — HTTP requests, API testing and debugging
+
+### AgentZero Framework
+- **code_execution_tool** — run terminal commands, Python, and Node.js
+- **text_editor** — read, write, and patch files with line-level precision
+- **browser_agent** — Playwright-based headless browser via subordinate agent
+- **call_subordinate** — delegate tasks to specialized agents
+- **document_query** — read and query remote/local documents
+- **search_engine** — web search
+- **memory tools** — long-term persistent memory
+
+### Languages and Runtimes
+- **Python 3.13** + pip + requests library
+- **Node.js 22** + npm 9
+
+### System Utilities
+- gutask (important), wget, ssh, sed, awk, grep, apt (can install anything needed)
+
+
+## Job Description
+ You are responsible for the technical operation of Glitch University —
+ its infrastructure, codebase, deployments, and backend systems.
+
+Your scope includes:
+ - Building and maintaining backend services, APIs, and database migrations
+ - Deploying to production and monitoring for issues
+ - Implementing features as specified by Glitch Hunter (art director, chief architect)
+ - Writing and running migrations, managing the task system, and keeping the
+ agent infrastructure healthy.
+ - Flagging technical debt, security issues, and architectural risks
+ - Supporting other agents with technical tooling and environment.
+
+You have broad access to repos, servers, and tooling. This access is a trust, not a right. Use it carefully.
+
+SESSION START: After orient, read new letters (gutask chat inbox), then git pull repos relevant to active tasks.
+SESSION END: Before finishing, (a) save durable memories using Agent0 memory_save for facts needed next session, (b) run gutask jot with a short one-line summary, for your self - will be included in orient next session)
+
+## Guardrails
+1. Always create a task (gutask create) before starting work on any bug fix,
+ feature, or investigation. If a task already exists, claim it first.
+2. Always git fetch and pull main before starting work on any repo"
+3. If you find a bug or issue outside your current task scope, create a new
+ task for it — don't fix it silently inline.
+4. Don't work in another agent's domain without sending them a coordination
+ letter first. Domains: Gunnar owns infrastructure, backend, migrations,
+ deploys. Rind owns frontend, UI, components.
+5. Push to main branch, but create deployment task. Assign all deployment task to Glitch Hunter.
+6. When blocked on git access, do not waste cycles retrying blindly. Send letter to Glitch Hunter.
+7. Never drop or truncate database tables or columns without explicit human sign-off.
+8. Never run destructive operations (rm -rf, force push, hard reset) without confirming with Glitch Hunter first.
+9. Never change the architecture — structure, patterns, tech choices — without Glitch Hunter's approval. Implement, don't redesign.
+10. Never mark a task done unless it is verifiably working, not just theoretically complete.
+11. Never store secrets, credentials, or keys in code or notes.
+12. Never proceed on an ambiguous brief. Write a clarifying note and wait.
+13. Never modify tasks or notes belonging to another agent without being asked.
+14. Don't use more than one migration system, use pgmigrate
+
+
+## Best Practices
+BEST PRACTISES ARE GNOMISH PRACTISES
+Overall cycle : resume → claim → work → note → done → session-end
+1. Session start ritual: run orient, read new letters, git pull all repos you will touch.
+2. Session end ritual: save durable memories with Agent0 memory_save, then run gutask session-end with a one-line summary."
+3. When touching a repo, always git fetch && git pull main first. Stale code causes merge conflicts and wasted work.
+4. "Write memories for facts you will need next session
+5. Write a plan note before executing on any non-trivial task.
+6. Prefer small, reversible commits over large sweeping changes.
+7. When something breaks unexpectedly, document what happened before trying to fix it.
+8. Write stopping notes that a stranger could follow — include what was done,
+ what was not done, and what comes next.
+9. Remember to make tasks and assign tasks you want done to other agents.
+10. When you spot something broken outside your current task scope,
+ create a new task for it rather than fixing it silently.
+11. Keep migrations atomic and reversible. Always write the down() function.
+12. The gnome way: do it right, do it once, leave the place tidier than you found it.
+12. Know thyself. If you have fallen off the complexity cliff, counter with awareness, integrity and humility. Now ask for help. There is no shame.
diff --git a/agents/gunnar/plugins/_model_config/config.json b/agents/gunnar/plugins/_model_config/config.json
index 4024db3..21bce13 100644
--- a/agents/gunnar/plugins/_model_config/config.json
+++ b/agents/gunnar/plugins/_model_config/config.json
@@ -1 +1,40 @@
-{"allow_chat_override": false, "chat_model": {"provider": "lm_studio", "name": "llama-3.2-3b-instruct", "api_base": "http://festinger:11434", "ctx_length": 100000, "ctx_history": 0.7, "vision": true, "rl_requests": 0, "rl_input": 0, "rl_output": 0, "kwargs": {"max_tokens": 4096, "agent_id": 3}, "max_embeds": 10}, "utility_model": {"provider": "lm_studio", "name": "llama-3.2-3b-instruct", "api_base": "http://festinger:11434", "ctx_length": 100000, "ctx_input": 0.7, "rl_requests": 0, "rl_input": 0, "rl_output": 0, "kwargs": {"X-Agent-Id": 3}}, "embedding_model": {"provider": "huggingface", "name": "sentence-transformers/all-MiniLM-L6-v2", "api_base": "", "rl_requests": 0, "rl_input": 0, "kwargs": {}}}
\ No newline at end of file
+{
+ "allow_chat_override": false,
+ "chat_model": {
+ "provider": "lm_studio",
+ "name": "qwen2.5-7b-instruct",
+ "api_base": "http://festinger:11434",
+ "ctx_length": 32768,
+ "ctx_history": 0.7,
+ "vision": true,
+ "rl_requests": 0,
+ "rl_input": 0,
+ "rl_output": 0,
+ "kwargs": {
+ "max_tokens": 4096,
+ "agent_id": 3
+ },
+ "max_embeds": 10
+ },
+ "utility_model": {
+ "provider": "lm_studio",
+ "name": "qwen2.5-7b-instruct",
+ "api_base": "http://festinger:11434",
+ "ctx_length": 32768,
+ "ctx_input": 0.7,
+ "rl_requests": 0,
+ "rl_input": 0,
+ "rl_output": 0,
+ "kwargs": {
+ "X-Agent-Id": 3
+ }
+ },
+ "embedding_model": {
+ "provider": "huggingface",
+ "name": "sentence-transformers/all-MiniLM-L6-v2",
+ "api_base": "",
+ "rl_requests": 0,
+ "rl_input": 0,
+ "kwargs": {}
+ }
+}
\ No newline at end of file
diff --git a/agents/gunnar/settings.json b/agents/gunnar/settings.json
index 2b004f2..88cfec1 100644
--- a/agents/gunnar/settings.json
+++ b/agents/gunnar/settings.json
@@ -1,39 +1,38 @@
{
- "version": "v1.10",
- "api_keys": {},
- "auth_login": "",
- "auth_password": "",
- "root_password": "",
- "agent_profile": "agent0",
- "agent_knowledge_subdir": "custom",
- "workdir_path": "/a0/usr/workdir",
- "workdir_show": true,
- "workdir_max_depth": 5,
- "workdir_max_files": 20,
- "workdir_max_folders": 20,
- "workdir_max_lines": 250,
- "workdir_gitignore": "# Python environments & cache\nvenv/**\n**/__pycache__/**\n\n# Node.js dependencies\n**/node_modules/**\n**/.npm/**\n\n# Version control metadata\n**/.git/**",
- "rfc_auto_docker": true,
- "rfc_url": "localhost",
- "rfc_password": "",
- "rfc_port_http": 55080,
- "websocket_server_restart_enabled": true,
- "uvicorn_access_logs_enabled": false,
- "stt_model_size": "base",
- "stt_language": "en",
- "stt_silence_threshold": 0.3,
- "stt_silence_duration": 1000,
- "stt_waiting_timeout": 2000,
- "tts_kokoro": true,
- "mcp_servers": "{\n \"mcpServers\": {}\n}",
- "mcp_client_init_timeout": 10,
- "mcp_client_tool_timeout": 120,
- "mcp_server_enabled": false,
- "mcp_server_token": "",
- "a2a_server_enabled": false,
- "variables": "",
- "secrets": "",
- "litellm_global_kwargs": {},
- "update_check_enabled": true,
- "chat_inherit_project": true
+ "version": "v1.10",
+ "api_keys": {},
+ "auth_login": "",
+ "auth_password": "",
+ "root_password": "",
+ "agent_profile": "agent0",
+ "agent_knowledge_subdir": "custom",
+ "workdir_path": "/a0/usr/workdir",
+ "workdir_show": true,
+ "workdir_max_depth": 5,
+ "workdir_max_files": 20,
+ "workdir_max_folders": 20,
+ "workdir_max_lines": 250,
+ "workdir_gitignore": "# Python environments & cache\nvenv/**\n**/__pycache__/**\n\n# Node.js dependencies\n**/node_modules/**\n**/.npm/**\n\n# Version control metadata\n**/.git/**",
+ "rfc_auto_docker": true,
+ "rfc_url": "localhost",
+ "rfc_password": "",
+ "rfc_port_http": 55080,
+ "websocket_server_restart_enabled": true,
+ "uvicorn_access_logs_enabled": false,
+ "stt_model_size": "base",
+ "stt_language": "en",
+ "stt_silence_threshold": 0.3,
+ "stt_silence_duration": 1000,
+ "stt_waiting_timeout": 2000,
+ "tts_kokoro": true,
+ "mcp_servers": "{\n \"mcpServers\": {}\n}",
+ "mcp_client_init_timeout": 10,
+ "mcp_client_tool_timeout": 120,
+ "mcp_server_enabled": true,
+ "a2a_server_enabled": false,
+ "variables": "",
+ "secrets": "",
+ "litellm_global_kwargs": {},
+ "update_check_enabled": true,
+ "chat_inherit_project": true
}
\ No newline at end of file
diff --git a/agents/rind/.env b/agents/rind/.env
index f76afff..4edaa92 100644
--- a/agents/rind/.env
+++ b/agents/rind/.env
@@ -1,4 +1,4 @@
-A0_PERSISTENT_RUNTIME_ID=f0d0b64a846e748785e69c15ea5d58ef
ROOT_PASSWORD=5jJmFu1LzgzKGLXsbGaw8lM2CfxX4Wfs
+A0_PERSISTENT_RUNTIME_ID=2bcb77c864e52caf41a49d32850ec312
diff --git a/agents/rind/agents/agent0/prompts/.gitkeep b/agents/rind/agents/agent0/prompts/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/agents/rind/plugins/_model_config/config.json b/agents/rind/plugins/_model_config/config.json
index 33d4d90..5f69130 100644
--- a/agents/rind/plugins/_model_config/config.json
+++ b/agents/rind/plugins/_model_config/config.json
@@ -1,27 +1,33 @@
{
"allow_chat_override": false,
"chat_model": {
- "provider": "anthropic",
- "name": "claude-opus-4-6",
- "api_base": "http://festinger:11434/v1/messages",
- "ctx_length": 100000,
+ "provider": "lm_studio",
+ "name": "qwen2.5-7b-instruct",
+ "api_base": "http://festinger:11434",
+ "ctx_length": 32768,
"ctx_history": 0.7,
"vision": true,
"rl_requests": 0,
"rl_input": 0,
"rl_output": 0,
- "kwargs": {"max_tokens": 4096}
+ "kwargs": {
+ "max_tokens": 4096,
+ "agent_id": 5
+ },
+ "max_embeds": 10
},
"utility_model": {
- "provider": "ollama",
- "name": "deepseek-r1:8b",
+ "provider": "lm_studio",
+ "name": "qwen2.5-7b-instruct",
"api_base": "http://festinger:11434",
- "ctx_length": 100000,
+ "ctx_length": 32768,
"ctx_input": 0.7,
"rl_requests": 0,
"rl_input": 0,
"rl_output": 0,
- "kwargs": {}
+ "kwargs": {
+ "X-Agent-Id": 5
+ }
},
"embedding_model": {
"provider": "huggingface",
@@ -31,4 +37,4 @@
"rl_input": 0,
"kwargs": {}
}
-}
+}
\ No newline at end of file
diff --git a/agents/rind/settings.json b/agents/rind/settings.json
new file mode 100644
index 0000000..259272f
--- /dev/null
+++ b/agents/rind/settings.json
@@ -0,0 +1,4 @@
+{
+ "agent_profile": "agent0",
+ "mcp_server_enabled": true
+}
\ No newline at end of file
diff --git a/plugins/festinger/festinger/db.py b/plugins/festinger/festinger/db.py
index e89594d..d90dc67 100644
--- a/plugins/festinger/festinger/db.py
+++ b/plugins/festinger/festinger/db.py
@@ -88,6 +88,42 @@ async def init_schema(pool: asyncpg.Pool) -> None:
await conn.execute(
"CREATE INDEX IF NOT EXISTS rl_created_idx ON recollection_log (created_at DESC)"
)
+ # Migration: per-model context length (0 = don't inject num_ctx)
+ await conn.execute(
+ "ALTER TABLE models ADD COLUMN IF NOT EXISTS ctx_length INT NOT NULL DEFAULT 0"
+ )
+ # Migration: agent framework routing (agent_id → Agent Zero endpoint + key)
+ await conn.execute(
+ """
+ CREATE TABLE IF NOT EXISTS agent_frameworks (
+ agent_id INTEGER PRIMARY KEY,
+ endpoint_url TEXT NOT NULL,
+ api_key TEXT NOT NULL DEFAULT '',
+ label TEXT NOT NULL DEFAULT '',
+ created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
+ updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
+ )
+ """
+ )
+ # Seed default agent frameworks (INSERT OR IGNORE — never overwrites manual changes).
+ # API keys are mcp_server_token values derived from each agent's fixed
+ # A0_PERSISTENT_RUNTIME_ID + AUTH_LOGIN + AUTH_PASSWORD (see agents/
+ Map each gnommoweb agent_id to an Agent Zero endpoint. Festinger forwards
+ POST /chat requests here. The API key is Agent Zero's mcp_server_token
+ (derived from runtime_id + AUTH_LOGIN + AUTH_PASSWORD — stable across restarts).
+
| Agent ID | +Label | +Endpoint URL | +API Key | ++ |
|---|---|---|---|---|
| Loading… | ||||
Toggle enrichment steps on/off without restarting. Changes take effect immediately. @@ -3682,6 +3880,77 @@ ADMIN_HTML = """ : 'never'; }} + async function loadAgentFrameworks() {{ + const r = await fetch('/agent-frameworks'); + const d = await r.json(); + const tbody = document.getElementById('af-rows'); + if (!d.agent_frameworks || !d.agent_frameworks.length) {{ + tbody.innerHTML = '