titan-agent 5.0.2 → 5.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/agent.js +48 -3
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/agentLoop.js +83 -5
- package/dist/agent/agentLoop.js.map +1 -1
- package/dist/agent/commandPost.js +1 -1
- package/dist/agent/commandPost.js.map +1 -1
- package/dist/agent/goalProposer.js +2 -2
- package/dist/agent/goalProposer.js.map +1 -1
- package/dist/agent/missionDriver.js +1 -1
- package/dist/agent/missionDriver.js.map +1 -1
- package/dist/agent/promptBudget.js +85 -0
- package/dist/agent/promptBudget.js.map +1 -0
- package/dist/agent/structuredSpawn.js +1 -1
- package/dist/agent/structuredSpawn.js.map +1 -1
- package/dist/agent/subtaskTaxonomy.js +1 -1
- package/dist/agent/subtaskTaxonomy.js.map +1 -1
- package/dist/agent/systemPromptParts.js +10 -1
- package/dist/agent/systemPromptParts.js.map +1 -1
- package/dist/agent/toolRunner.js +16 -0
- package/dist/agent/toolRunner.js.map +1 -1
- package/dist/agent/toolSearch.js +4 -1
- package/dist/agent/toolSearch.js.map +1 -1
- package/dist/analytics/bugReports.js +1 -1
- package/dist/analytics/bugReports.js.map +1 -1
- package/dist/channels/messenger.js +1 -1
- package/dist/channels/messenger.js.map +1 -1
- package/dist/eval/harness.js +141 -0
- package/dist/eval/harness.js.map +1 -0
- package/dist/gateway/server.js +374 -74
- package/dist/gateway/server.js.map +1 -1
- package/dist/hooks/shellHooks.js +1 -1
- package/dist/hooks/shellHooks.js.map +1 -1
- package/dist/lib/auto-heal/repair-strategies.js.map +1 -1
- package/dist/memory/promptIncludes.js +58 -0
- package/dist/memory/promptIncludes.js.map +1 -0
- package/dist/organism/alertsStore.js +70 -0
- package/dist/organism/alertsStore.js.map +1 -0
- package/dist/plugins/memoryRetrieval.js.map +1 -1
- package/dist/providers/ollama.js +7 -7
- package/dist/providers/ollama.js.map +1 -1
- package/dist/safety/invariants.js +60 -0
- package/dist/safety/invariants.js.map +1 -0
- package/dist/safety/opusReview.js +1 -1
- package/dist/safety/opusReview.js.map +1 -1
- package/dist/security/commandScanner.js +2 -2
- package/dist/security/commandScanner.js.map +1 -1
- package/dist/security/secretGuard.js +4 -4
- package/dist/security/secretGuard.js.map +1 -1
- package/dist/skills/builtin/widget_gallery.js +28 -1
- package/dist/skills/builtin/widget_gallery.js.map +1 -1
- package/dist/skills/frontmatterLoader.js +119 -0
- package/dist/skills/frontmatterLoader.js.map +1 -0
- package/dist/skills/registry.js +20 -0
- package/dist/skills/registry.js.map +1 -1
- package/dist/testing/testHealthMonitor.js +1 -2
- package/dist/testing/testHealthMonitor.js.map +1 -1
- package/dist/utils/constants.js +2 -2
- package/dist/utils/constants.js.map +1 -1
- package/dist/utils/replyQuality.js +1 -1
- package/dist/utils/replyQuality.js.map +1 -1
- package/dist/utils/tokens.js +1 -1
- package/dist/utils/tokens.js.map +1 -1
- package/docs/bleeding-edge-agents-2026.md +450 -0
- package/docs/langchain-analysis.md +598 -0
- package/docs/langchain-code-analysis.md +363 -0
- package/docs/space-agent-analysis.md +300 -0
- package/package.json +1 -1
- package/ui/dist/assets/{AuditPanel-G7YA1HzV.js → AuditPanel-B84Mp16G.js} +2 -2
- package/ui/dist/assets/AutonomyPanel-DOtiTFxV.js +11 -0
- package/ui/dist/assets/{AutopilotPanel-CHRjxdh0.js → AutopilotPanel-nTb1Dnru.js} +1 -1
- package/ui/dist/assets/AutoresearchPanel-D46mX8VF.js +6 -0
- package/ui/dist/assets/BackupPanel-DGM1XXbG.js +1 -0
- package/ui/dist/assets/BrowserPanel-Cn1tTN3y.js +6 -0
- package/ui/dist/assets/{CPAgents-D5533PhK.js → CPAgents-CEraUkME.js} +1 -1
- package/ui/dist/assets/{CPDashboard-C-GgqDsI.js → CPDashboard-B_yidGAe.js} +2 -2
- package/ui/dist/assets/CPFiles-BBS8jtYH.js +1 -0
- package/ui/dist/assets/CPGoals-DL5v21TZ.js +1 -0
- package/ui/dist/assets/CPInbox-CyLQJBYF.js +11 -0
- package/ui/dist/assets/{CPSocial-mUQsrSh5.js → CPSocial-BkEtQ1Um.js} +3 -3
- package/ui/dist/assets/ChannelsPanel-CD2kHhA5.js +1 -0
- package/ui/dist/assets/CheckpointsPanel-BrUTFPu_.js +1 -0
- package/ui/dist/assets/CommandPostHub-BPPaUv1B.js +29 -0
- package/ui/dist/assets/CronPanel-CsfQctFp.js +1 -0
- package/ui/dist/assets/DaemonPanel-CNUggBbL.js +1 -0
- package/ui/dist/assets/DataTable-DuAEp_QJ.js +1 -0
- package/ui/dist/assets/{EmptyState-D60-wQrz.js → EmptyState-DFrAEZDm.js} +1 -1
- package/ui/dist/assets/EvalPanel-DEX0a5-b.js +1 -0
- package/ui/dist/assets/{FilesPanel-BNN3h_HW.js → FilesPanel-DATsiAqG.js} +1 -1
- package/ui/dist/assets/FleetPanel-QYQKqx4W.js +1 -0
- package/ui/dist/assets/{HomelabPanel-1mfhRBh6.js → HomelabPanel-DhuXd3ZD.js} +2 -2
- package/ui/dist/assets/{InfraView-Df6SFI7b.js → InfraView-eS7cpESw.js} +2 -2
- package/ui/dist/assets/InlineEditableField-zIAnW4AR.js +1 -0
- package/ui/dist/assets/{Input-DYukme8A.js → Input-bFsLI0fq.js} +1 -1
- package/ui/dist/assets/IntegrationsPanel-C_FswSRN.js +1 -0
- package/ui/dist/assets/IntelligenceView-smQ6aBwx.js +2 -0
- package/ui/dist/assets/{LearningPanel-BPx05bBu.js → LearningPanel-BEgF_iND.js} +1 -1
- package/ui/dist/assets/{LogsPanel-D3Qfp2SE.js → LogsPanel-Br1P8ST6.js} +1 -1
- package/ui/dist/assets/McpPanel-ByvQ12J_.js +1 -0
- package/ui/dist/assets/{MemoryGraphPanel-BFovwaSG.js → MemoryGraphPanel-BGOeSaET.js} +1 -1
- package/ui/dist/assets/MemoryWikiPanel-CR8btd66.js +11 -0
- package/ui/dist/assets/MeshPanel-BjkcSOMz.js +11 -0
- package/ui/dist/assets/NvidiaPanel-NYt42w7L.js +1 -0
- package/ui/dist/assets/OrganismPanel-PHvISvVn.js +1 -0
- package/ui/dist/assets/OverviewPanel-q35zdMr6.js +6 -0
- package/ui/dist/assets/{PageHeader-BdvxKoad.js → PageHeader-Cwn3OALc.js} +1 -1
- package/ui/dist/assets/PaperclipPanel-BDpQki0d.js +1 -0
- package/ui/dist/assets/{PersonasPanel-BpI6Npxv.js → PersonasPanel-DxrGW5C4.js} +1 -1
- package/ui/dist/assets/RecipesPanel-CYRdBx5u.js +1 -0
- package/ui/dist/assets/{SecurityPanel-CBDsEAFz.js → SecurityPanel-i1QMctV0.js} +1 -1
- package/ui/dist/assets/SelfImprovePanel-DbybAZWp.js +1 -0
- package/ui/dist/assets/SelfProposalsPanel-DtcTUDDd.js +2 -0
- package/ui/dist/assets/SessionsPanel-B7QmOizR.js +1 -0
- package/ui/dist/assets/SessionsTab-BdJj_vsI.js +1 -0
- package/ui/dist/assets/{SettingsPanel-BiWHsOAJ.js → SettingsPanel-DnEvJUFe.js} +1 -1
- package/ui/dist/assets/SettingsView-C39dk_yr.js +2 -0
- package/ui/dist/assets/{SkeletonLoader-CGtpZJ-7.js → SkeletonLoader-CsiR8ED9.js} +1 -1
- package/ui/dist/assets/{SkillsPanel-Z_9jA6dU.js → SkillsPanel-DM4qBFDS.js} +1 -1
- package/ui/dist/assets/{SomaView-AP3BXqf-.js → SomaView-CWnPKEQI.js} +1 -1
- package/ui/dist/assets/{StatCard-CrnvXPg5.js → StatCard-CY8lgeWm.js} +1 -1
- package/ui/dist/assets/{StatusBadge-B6r5EWBA.js → StatusBadge-CGvKbP7R.js} +1 -1
- package/ui/dist/assets/TeamsPanel-Bf6GaUni.js +1 -0
- package/ui/dist/assets/{TelemetryPanel-D6o14H-i.js → TelemetryPanel-JZ90gJXC.js} +1 -1
- package/ui/dist/assets/TitanCanvas-Hk49NFcA.js +1092 -0
- package/ui/dist/assets/ToolsView-Cq7Fuq3i.js +2 -0
- package/ui/dist/assets/{Tooltip-DNsYGHC9.js → Tooltip-CcoZrKsl.js} +1 -1
- package/ui/dist/assets/{TraceViewer-TOpdmqLF.js → TraceViewer-ojGf0drx.js} +1 -1
- package/ui/dist/assets/TrainingPanel-CWnP4H2l.js +1 -0
- package/ui/dist/assets/{VoiceOverlay-XIyCbAP7.js → VoiceOverlay-Dn6iaYgd.js} +1 -1
- package/ui/dist/assets/VramPanel-CLd9Ggck.js +1 -0
- package/ui/dist/assets/WatchView-CQBemwsm.js +13 -0
- package/ui/dist/assets/WorkTab-BOfTN-Bd.js +1 -0
- package/ui/dist/assets/WorkflowsPanel-qzNS0p0u.js +11 -0
- package/ui/dist/assets/{arrow-left-CQF-yBIU.js → arrow-left-c-8OFZUV.js} +1 -1
- package/ui/dist/assets/{chart-column-1smg0GbX.js → chart-column-x6L66Qw7.js} +1 -1
- package/ui/dist/assets/{circle-check-big-BiMDFx6C.js → circle-check-big-WaW3U3Xl.js} +1 -1
- package/ui/dist/assets/{dollar-sign-DMYH4Q_a.js → dollar-sign-D2Oce4Ru.js} +1 -1
- package/ui/dist/assets/{download-BYFd-yl6.js → download-YvPDLlFJ.js} +1 -1
- package/ui/dist/assets/eye-off-DIMcxsdQ.js +6 -0
- package/ui/dist/assets/{funnel-pWBglhfw.js → funnel-DqD9srZu.js} +1 -1
- package/ui/dist/assets/{git-branch-Cgqic2Us.js → git-branch-0FamUEbU.js} +1 -1
- package/ui/dist/assets/index-D932CbpQ.css +1 -0
- package/ui/dist/assets/index-NatBSFxj.js +227 -0
- package/ui/dist/assets/{legacy-BHbi-Nm_.js → legacy-DOO7F5cq.js} +1 -1
- package/ui/dist/assets/{lightbulb-D_y0Mtyq.js → lightbulb-Bk6KlR6q.js} +1 -1
- package/ui/dist/assets/pause-DDC_zUiJ.js +6 -0
- package/ui/dist/assets/{play-2xR4_zUG.js → play-BPXbHToG.js} +1 -1
- package/ui/dist/assets/{plug-DhvhYYy_.js → plug-Dxp-sWVF.js} +1 -1
- package/ui/dist/assets/proxy-vU7v4NVM.js +9 -0
- package/ui/dist/assets/square-Bn_0tYME.js +6 -0
- package/ui/dist/assets/target-BrtxUtzl.js +6 -0
- package/ui/dist/assets/toggle-right-CYphlpN5.js +11 -0
- package/ui/dist/assets/{trash-2-DmRaMz9e.js → trash-2-C_Jsp23A.js} +1 -1
- package/ui/dist/assets/{trending-up-DsDcs3Jo.js → trending-up-DrtLViSm.js} +1 -1
- package/ui/dist/assets/trophy-DdRzAOfo.js +6 -0
- package/ui/dist/index.html +2 -2
- package/ui/dist/assets/CPFiles-G7veSjMg.js +0 -6
- package/ui/dist/assets/CPGoals-C3DlKJrJ.js +0 -1
- package/ui/dist/assets/CPInbox-D10curQs.js +0 -16
- package/ui/dist/assets/ChannelsPanel-M3pO2htW.js +0 -1
- package/ui/dist/assets/CommandPostHub-CW9OY1A4.js +0 -37
- package/ui/dist/assets/InlineEditableField-CH-jR3LC.js +0 -11
- package/ui/dist/assets/IntegrationsPanel-EaN999Te.js +0 -1
- package/ui/dist/assets/IntelligenceView-Q4DBmJpJ.js +0 -2
- package/ui/dist/assets/McpPanel-zC7jTaSx.js +0 -6
- package/ui/dist/assets/MeshPanel-CqtYZ74K.js +0 -11
- package/ui/dist/assets/NvidiaPanel-BVIZFHet.js +0 -1
- package/ui/dist/assets/SelfImprovePanel-PSCYO6sx.js +0 -11
- package/ui/dist/assets/SessionsTab-Cn3dGgjX.js +0 -1
- package/ui/dist/assets/SettingsView-3BSIzAfW.js +0 -2
- package/ui/dist/assets/TitanCanvas-cnb7R1gS.js +0 -1056
- package/ui/dist/assets/ToolsView-Dp-xUWJG.js +0 -2
- package/ui/dist/assets/WorkTab-Pgq-iLz9.js +0 -1
- package/ui/dist/assets/WorkflowsPanel-B91LeW7r.js +0 -21
- package/ui/dist/assets/eye-BfW7UcEC.js +0 -11
- package/ui/dist/assets/index-BWSnB6Kr.js +0 -227
- package/ui/dist/assets/index-Dtw1pbjc.css +0 -1
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
# Bleeding-Edge AI Agent Frameworks: March–April 2026 Analysis
|
|
2
|
+
|
|
3
|
+
> **Date:** 2026-04-25
|
|
4
|
+
> **Scope:** Frameworks released or majorly updated in March–April 2026
|
|
5
|
+
> **Goal:** Understand how modern AI agent frameworks work from first principles, analyze the bleeding edge, and identify what TITAN should adopt.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Part 1: How AI Agent Frameworks Work (A→Z)
|
|
10
|
+
|
|
11
|
+
Every production-grade agent framework, regardless of language or paradigm, implements the same core pipeline:
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
15
|
+
│ Input │───→│ Intent │───→│ Plan │───→│ Execute │───→│ Output │
|
|
16
|
+
│ (User msg) │ │ (Classify) │ │ (Reasoning) │ │ (Tools) │ │ (Response) │
|
|
17
|
+
└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘
|
|
18
|
+
│ │ │
|
|
19
|
+
▼ ▼ ▼
|
|
20
|
+
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
|
21
|
+
│ Memory │ │ State │ │ Callbacks │
|
|
22
|
+
│ (Context) │ │ (Checkpoint)│ │ (Observab.) │
|
|
23
|
+
└─────────────┘ └─────────────┘ └─────────────┘
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### 1.1 The Agent Loop (REACT Pattern)
|
|
27
|
+
|
|
28
|
+
All modern frameworks implement some variant of the **REACT** pattern (Reasoning + Acting):
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
THINK → ACT → OBSERVE → [repeat] → RESPOND
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**TITAN's implementation:** `src/agent/agentLoop.ts` — phase state machine (THINK/ACT/RESPOND/DONE)
|
|
35
|
+
|
|
36
|
+
**LangGraph's implementation:** Nodes in a directed graph. Each node is a function that receives state, modifies it, and returns. The graph engine routes to the next node based on conditional edges.
|
|
37
|
+
|
|
38
|
+
**Hermes Agent's implementation:** Skill-based loop. The agent checks if a skill exists for the task. If yes, executes the skill. If no, reasons through the task, creates a new skill, and stores it.
|
|
39
|
+
|
|
40
|
+
### 1.2 Tool System
|
|
41
|
+
|
|
42
|
+
Tools are the agent's hands. Every framework needs:
|
|
43
|
+
|
|
44
|
+
| Component | Responsibility | TITAN Equivalent |
|
|
45
|
+
|-----------|---------------|------------------|
|
|
46
|
+
| **Schema** | Define tool name, description, parameters | `toolRunner.ts` parameter objects |
|
|
47
|
+
| **Registry** | Map tool name → implementation | `getRegisteredTools()` |
|
|
48
|
+
| **Invocation** | Parse args, call handler, return result | `_callTool()` in agent loop |
|
|
49
|
+
| **Validation** | Zod/JSON Schema validation before execution | Zod parsing in tool handlers |
|
|
50
|
+
| **Error handling** | Catch failures, format for LLM consumption | try/catch in `invokeTool()` |
|
|
51
|
+
|
|
52
|
+
**Key insight from LangChain.js:** Tools implement a `StructuredTool` base class with `invoke(input, config)` method. The config carries callbacks for tracing. TITAN's tools are plain functions — adding a base class would enable callbacks and standardized error handling.
|
|
53
|
+
|
|
54
|
+
### 1.3 Memory Architecture
|
|
55
|
+
|
|
56
|
+
Memory is the hardest problem in agent engineering. Frameworks use layered approaches:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
┌─────────────────────────────────────────┐
|
|
60
|
+
│ Layer 4: Semantic Memory (Vector DB) │ Long-term facts, embeddings
|
|
61
|
+
├─────────────────────────────────────────┤
|
|
62
|
+
│ Layer 3: Episodic Memory (Graph/JSON) │ Conversation history, sessions
|
|
63
|
+
├─────────────────────────────────────────┤
|
|
64
|
+
│ Layer 2: Working Memory (Context) │ Current conversation window
|
|
65
|
+
├─────────────────────────────────────────┤
|
|
66
|
+
│ Layer 1: Procedural Memory (Skills) │ Learned patterns, workflows
|
|
67
|
+
└─────────────────────────────────────────┘
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
| Framework | Memory Approach | Innovation |
|
|
71
|
+
|-----------|----------------|------------|
|
|
72
|
+
| **TITAN** | Vector + graph + JSON files | CRDT-backed spatial state |
|
|
73
|
+
| **LangGraph** | Checkpoint persistence | State resumes after interruption |
|
|
74
|
+
| **Hermes Agent** | Three-layer + skill files | Self-improving skill creation |
|
|
75
|
+
| **OpenClaw** | REM Backfill | Dream-like consolidation of memories |
|
|
76
|
+
| **Space-Agent** | Prompt-include files | `*.system.include.md` auto-discovery |
|
|
77
|
+
|
|
78
|
+
### 1.4 State Management
|
|
79
|
+
|
|
80
|
+
Agents are state machines. Frameworks manage state differently:
|
|
81
|
+
|
|
82
|
+
- **LangGraph:** Immutable state object passed between nodes. Each node returns a partial state update. The graph engine merges updates.
|
|
83
|
+
- **TITAN:** Phase-based state machine (THINK→ACT→RESPOND). State lives in `AgentContext`.
|
|
84
|
+
- **AutoGen:** Conversation-centric state. Each agent has a message history. Group chats manage turn-taking.
|
|
85
|
+
- **Hermes:** Skill-state. The agent tracks which skills are loaded, which are active, and which were created during the session.
|
|
86
|
+
|
|
87
|
+
### 1.5 Orchestration Patterns
|
|
88
|
+
|
|
89
|
+
| Pattern | Description | Best For |
|
|
90
|
+
|---------|-------------|----------|
|
|
91
|
+
| **Single-agent** | One agent with tools | Simple tasks, chatbots |
|
|
92
|
+
| **Hierarchical** | Supervisor + workers | Complex tasks with sub-delegation |
|
|
93
|
+
| **Graph-based** | Nodes + edges (LangGraph) | Deterministic, auditable workflows |
|
|
94
|
+
| **Swarm/Council** | Multiple agents vote | High-stakes decisions (trading, medical) |
|
|
95
|
+
| **Debate** | Agents argue, final agent decides | Truth-seeking, fact-checking |
|
|
96
|
+
|
|
97
|
+
**TITAN's current pattern:** Single-agent with sub-agent spawning (`spawn_agent`). The Command Post provides hierarchical oversight.
|
|
98
|
+
|
|
99
|
+
**What TITAN is missing:** Graph-based orchestration for deliberation. LangGraph's checkpointed state machines would make TITAN's deliberation process auditable and resumable.
|
|
100
|
+
|
|
101
|
+
### 1.6 Observability
|
|
102
|
+
|
|
103
|
+
Production agents need tracing. Every framework handles this:
|
|
104
|
+
|
|
105
|
+
- **LangSmith:** Visual trace trees, token usage, latency breakdowns
|
|
106
|
+
- **AgentOps:** Cross-framework observability (works with any framework)
|
|
107
|
+
- **TITAN:** SSE event stream + audit log. Missing: visual trace trees, token accounting per tool call
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Part 2: Bleeding-Edge Framework Deep Dives
|
|
112
|
+
|
|
113
|
+
### 2.1 Hermes Agent (Nous Research, Feb–Apr 2026)
|
|
114
|
+
|
|
115
|
+
**GitHub:** 95.6K stars (7-week growth from 0)
|
|
116
|
+
**Version:** v0.10.0 (April 16, 2026)
|
|
117
|
+
**License:** MIT
|
|
118
|
+
**Creator:** Nous Research (Hermes, Nomos, Psyche model families)
|
|
119
|
+
|
|
120
|
+
#### Core Innovation: Self-Improving Skill System
|
|
121
|
+
|
|
122
|
+
Hermes doesn't just execute tasks — it **learns** from them. When Hermes successfully completes a task, it:
|
|
123
|
+
|
|
124
|
+
1. Documents the steps taken
|
|
125
|
+
2. Generalizes the approach into a reusable skill file
|
|
126
|
+
3. Stores the skill in a local library
|
|
127
|
+
4. Applies the skill to similar future requests without re-reasoning
|
|
128
|
+
|
|
129
|
+
```yaml
|
|
130
|
+
# Example skill file (Hermes format)
|
|
131
|
+
id: web_research_report
|
|
132
|
+
name: Research Report Generator
|
|
133
|
+
created_at: 2026-04-20
|
|
134
|
+
success_count: 14
|
|
135
|
+
triggers:
|
|
136
|
+
- "research report"
|
|
137
|
+
- "write a report about"
|
|
138
|
+
- "investigate and summarize"
|
|
139
|
+
steps:
|
|
140
|
+
- tool: web_search
|
|
141
|
+
args: { query: "{{topic}} latest developments" }
|
|
142
|
+
- tool: web_fetch
|
|
143
|
+
args: { url: "{{top_result}}" }
|
|
144
|
+
- reasoning: "Synthesize findings into structured report"
|
|
145
|
+
- output_format: markdown
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
#### Three-Layer Memory
|
|
149
|
+
|
|
150
|
+
1. **Context Window** — Current conversation (standard LLM context)
|
|
151
|
+
2. **Working Memory** — Session-scratchpad for multi-step tasks
|
|
152
|
+
3. **Skill Library** — Persistent, reusable task patterns
|
|
153
|
+
|
|
154
|
+
#### What TITAN Should Borrow
|
|
155
|
+
|
|
156
|
+
- **Skill auto-creation:** After TITAN successfully creates a widget or completes a workflow, auto-generate a skill file for future reuse.
|
|
157
|
+
- **Success tracking:** Track which skills/workflows succeed most often and surface them.
|
|
158
|
+
- **Skill marketplace:** The 118 built-in skills + community contributions model.
|
|
159
|
+
|
|
160
|
+
#### Integration Path
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
// src/skills/hermesAdapter.ts
|
|
164
|
+
export async function createSkillFromRun(sessionId: string, task: string, steps: ToolCall[]): Promise<void> {
|
|
165
|
+
const skill = {
|
|
166
|
+
id: `skill_${Date.now()}`,
|
|
167
|
+
name: task.slice(0, 50),
|
|
168
|
+
triggers: extractTriggers(task),
|
|
169
|
+
steps: steps.map(s => ({ tool: s.name, args: s.args })),
|
|
170
|
+
success_count: 1,
|
|
171
|
+
};
|
|
172
|
+
await writeFileSync(join(TITAN_HOME, 'skills', `${skill.id}.yaml`), YAML.stringify(skill));
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
### 2.2 OpenClaw v2026.4.9 — "The Dreaming Release"
|
|
179
|
+
|
|
180
|
+
**GitHub:** 135K+ stars
|
|
181
|
+
**Release:** April 9, 2026
|
|
182
|
+
**Key Feature:** REM Backfill memory consolidation
|
|
183
|
+
|
|
184
|
+
#### Core Innovation: Biological Memory Consolidation
|
|
185
|
+
|
|
186
|
+
OpenClaw's REM Backfill replays historical user interactions through a "dream-like" consolidation process:
|
|
187
|
+
|
|
188
|
+
1. **Collect:** Raw conversation logs accumulate
|
|
189
|
+
2. **Sleep trigger:** After N interactions or idle time, backfill initiates
|
|
190
|
+
3. **Replay:** Old interactions are re-processed by a smaller model
|
|
191
|
+
4. **Consolidate:** Key facts, preferences, and patterns are extracted
|
|
192
|
+
5. **Store:** Structured memories replace raw logs
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
Raw Logs (10MB) ──→ REM Backfill ──→ Structured Memories (50KB)
|
|
196
|
+
│ │
|
|
197
|
+
▼ ▼
|
|
198
|
+
Slow retrieval Fast, semantic retrieval
|
|
199
|
+
Unbounded growth Bounded, prioritized
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
#### Diary Timeline UI
|
|
203
|
+
|
|
204
|
+
Users can inspect what the agent remembers and why. Each memory has:
|
|
205
|
+
- Source conversation ID
|
|
206
|
+
- Consolidation timestamp
|
|
207
|
+
- Confidence score
|
|
208
|
+
- Traceable back to original raw logs
|
|
209
|
+
|
|
210
|
+
#### What TITAN Should Borrow
|
|
211
|
+
|
|
212
|
+
- **Memory consolidation:** TITAN's vector memory grows unbounded. Adding a periodic consolidation step would keep memory lean.
|
|
213
|
+
- **Memory transparency:** Show users what TITAN remembers about them and let them edit/delete memories.
|
|
214
|
+
- **Dreaming mode:** A background process that runs during idle time to consolidate the day's interactions.
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
### 2.3 Goose (Block / Linux Foundation, April 2026)
|
|
219
|
+
|
|
220
|
+
**GitHub:** 4.9K+ stars (first 2 weeks)
|
|
221
|
+
**Language:** Rust
|
|
222
|
+
**License:** Apache 2.0
|
|
223
|
+
**Key Feature:** Local-first AI agent with MCP support
|
|
224
|
+
|
|
225
|
+
#### Core Innovation: Rust + MCP Native
|
|
226
|
+
|
|
227
|
+
Goose is built in Rust for performance and safety:
|
|
228
|
+
- **Memory safety:** No garbage collection pauses
|
|
229
|
+
- **Concurrency:** Async/await throughout
|
|
230
|
+
- **Binary size:** Single static binary (~15MB)
|
|
231
|
+
- **Startup time:** <100ms
|
|
232
|
+
|
|
233
|
+
Goose is MCP-native — every tool is an MCP server. There's no distinction between "built-in tools" and "external tools."
|
|
234
|
+
|
|
235
|
+
```rust
|
|
236
|
+
// Goose architecture (simplified)
|
|
237
|
+
struct Agent {
|
|
238
|
+
model: Box<dyn LLM>,
|
|
239
|
+
mcp_clients: Vec<McpClient>,
|
|
240
|
+
memory: MemoryLayer,
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
impl Agent {
|
|
244
|
+
async fn run(&mut self, prompt: &str) -> Result<String> {
|
|
245
|
+
let tools = self.discover_tools().await?;
|
|
246
|
+
let plan = self.model.plan(prompt, &tools).await?;
|
|
247
|
+
for step in plan.steps {
|
|
248
|
+
let result = self.execute(step).await?;
|
|
249
|
+
self.memory.record(&result);
|
|
250
|
+
}
|
|
251
|
+
Ok(plan.summary)
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
#### What TITAN Should Borrow
|
|
257
|
+
|
|
258
|
+
- **Rust components:** TITAN's hot paths (token counting, tool dispatch) could be Rust N-API modules for 10-100x speedup.
|
|
259
|
+
- **MCP-first design:** Treat ALL tools as MCP servers, including built-ins. This makes TITAN's tool system uniform and extensible.
|
|
260
|
+
- **Local-first:** Goose runs entirely locally. TITAN's offline mode could learn from this.
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
### 2.4 Google Agent Development Kit (ADK) — April 2026
|
|
265
|
+
|
|
266
|
+
**GitHub:** 8.2K+ stars (first 2 weeks)
|
|
267
|
+
**Language:** Python
|
|
268
|
+
**License:** Apache 2.0
|
|
269
|
+
**Key Feature:** Hierarchical agent compositions
|
|
270
|
+
|
|
271
|
+
#### Core Innovation: Agent-as-Tool
|
|
272
|
+
|
|
273
|
+
In ADK, any agent can be used as a tool by another agent. This enables recursive agent hierarchies:
|
|
274
|
+
|
|
275
|
+
```python
|
|
276
|
+
# ADK: Agent composition
|
|
277
|
+
from google.adk import Agent, Tool
|
|
278
|
+
|
|
279
|
+
researcher = Agent(name="researcher", tools=[web_search, web_fetch])
|
|
280
|
+
writer = Agent(name="writer", tools=[write_file, edit_file])
|
|
281
|
+
|
|
282
|
+
# The orchestrator uses other agents as tools
|
|
283
|
+
orchestrator = Agent(
|
|
284
|
+
name="orchestrator",
|
|
285
|
+
tools=[researcher.as_tool(), writer.as_tool(), approve_gate]
|
|
286
|
+
)
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
#### What TITAN Should Borrow
|
|
290
|
+
|
|
291
|
+
- **Agent-as-tool:** TITAN's `spawn_agent` creates parallel sub-agents. Making them callable as tools from the parent agent would enable richer coordination.
|
|
292
|
+
- **Hierarchical approval:** ADK's built-in approval gates at each hierarchy level. TITAN's approval system is flat — adding hierarchy would improve safety.
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
### 2.5 Elite Trading System (March 2026)
|
|
297
|
+
|
|
298
|
+
**GitHub:** Espenator/elite-trading-system
|
|
299
|
+
**Architecture:** 39-agent council DAG
|
|
300
|
+
**Key Feature:** Swarm invariants + Bayesian decision making
|
|
301
|
+
|
|
302
|
+
#### Core Innovation: Council DAG with Swarm Invariants
|
|
303
|
+
|
|
304
|
+
39 specialized agents organized in a directed acyclic graph:
|
|
305
|
+
|
|
306
|
+
```
|
|
307
|
+
Data Ingestion Agents (5)
|
|
308
|
+
├── Feature Engineering Agents (4)
|
|
309
|
+
│ ├── Model Agents (8)
|
|
310
|
+
│ │ ├── Ensemble Agents (3)
|
|
311
|
+
│ │ │ └── Council Gate (1) ← Final decision
|
|
312
|
+
│ │ └── Risk Agents (4)
|
|
313
|
+
│ └── Validation Agents (3)
|
|
314
|
+
└── Monitoring Agents (11)
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
**Swarm Invariants** (hard rules):
|
|
318
|
+
1. No trade without `council_decision_id`
|
|
319
|
+
2. No data without agent validation
|
|
320
|
+
3. No UI mutation without agent approval
|
|
321
|
+
4. Decisions expire after 30 seconds
|
|
322
|
+
5. No yfinance — ever
|
|
323
|
+
6. No mock data in production
|
|
324
|
+
|
|
325
|
+
#### Bayesian WeightLearner
|
|
326
|
+
|
|
327
|
+
Agents don't just vote — they have weighted influence based on historical accuracy. The WeightLearner continuously updates agent weights using Bayesian inference.
|
|
328
|
+
|
|
329
|
+
#### What TITAN Should Borrow
|
|
330
|
+
|
|
331
|
+
- **Swarm invariants:** TITAN's safety system is rule-based. Adding invariant checks (e.g., "No file deletion without explicit user confirmation") would harden security.
|
|
332
|
+
- **Weighted agent voting:** TITAN's deliberation could weight agents by their track record on similar tasks.
|
|
333
|
+
- **Decision expiration:** Auto-reject approvals that aren't acted on within a timeout.
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
### 2.6 TUICommander (February 2026)
|
|
338
|
+
|
|
339
|
+
**GitHub:** sstraus/tuicommander
|
|
340
|
+
**Stack:** Rust + Tauri v2 + SolidJS
|
|
341
|
+
**Key Feature:** Desktop terminal orchestrator for parallel AI agents
|
|
342
|
+
|
|
343
|
+
#### Core Innovation: Terminal-Native Agent Orchestration
|
|
344
|
+
|
|
345
|
+
TUICommander runs dozens of AI coding agents in parallel, each in its own terminal pane:
|
|
346
|
+
|
|
347
|
+
- **xterm.js + WebGL terminals:** GPU-accelerated terminal rendering
|
|
348
|
+
- **Agent detection:** Auto-detects when an AI agent is running in a terminal
|
|
349
|
+
- **Rate limiting:** Prevents agent overload with per-agent token budgets
|
|
350
|
+
- **Question detection:** Intercepts when an agent asks for clarification
|
|
351
|
+
|
|
352
|
+
```
|
|
353
|
+
┌─────────────────────────────────────────┐
|
|
354
|
+
│ Agent 1: Builder (coding) │
|
|
355
|
+
│ Agent 2: Scout (research) │
|
|
356
|
+
│ Agent 3: Tester (validation) │
|
|
357
|
+
│ Agent 4: Reviewer (audit) │
|
|
358
|
+
│ ... │
|
|
359
|
+
└─────────────────────────────────────────┘
|
|
360
|
+
All agents run in parallel
|
|
361
|
+
Token budgets enforced per agent
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
#### What TITAN Should Borrow
|
|
365
|
+
|
|
366
|
+
- **Parallel sub-agent visualization:** TITAN's Command Post shows agent status but not live terminal output. Adding terminal-like views for each running agent would improve observability.
|
|
367
|
+
- **Per-agent rate limiting:** TITAN has global rate limits. Per-agent budgets would prevent one runaway agent from exhausting the quota.
|
|
368
|
+
- **Question interception:** When a sub-agent asks for clarification, surface it to the user immediately rather than letting it hang.
|
|
369
|
+
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
## Part 3: Comparative Architecture Matrix
|
|
373
|
+
|
|
374
|
+
| Framework | Loop Type | State | Memory | Tools | Orchestration | Language |
|
|
375
|
+
|-----------|-----------|-------|--------|-------|---------------|----------|
|
|
376
|
+
| **TITAN** | Phase machine (THINK/ACT) | Context object | Vector + Graph + JSON | Function registry | Sub-agent spawn | TypeScript |
|
|
377
|
+
| **LangGraph** | Graph nodes | Immutable state | Checkpoint persistence | StructuredTool | Graph edges | Python/TS |
|
|
378
|
+
| **Hermes** | Skill-first | Skill library | Three-layer + skills | Skill files | Skill matching | Python |
|
|
379
|
+
| **OpenClaw** | REACT + dreaming | Conversation | REM Backfill | MCP + built-in | Flow engine | TypeScript |
|
|
380
|
+
| **Goose** | Async loop | Agent struct | MemoryLayer | MCP-only | Sequential | Rust |
|
|
381
|
+
| **ADK** | Agent-as-tool | Hierarchical | Session + context | Agent tools | Tree | Python |
|
|
382
|
+
| **Elite** | Council DAG | DAG state | Agent-specific | Agent outputs | DAG vote | Python |
|
|
383
|
+
| **TUICommander** | Parallel loops | Per-agent | Terminal history | Shell commands | Parallel | Rust |
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
## Part 4: Recommendations for TITAN
|
|
388
|
+
|
|
389
|
+
### Immediate (This Sprint)
|
|
390
|
+
|
|
391
|
+
1. **Adopt skill auto-creation** (from Hermes)
|
|
392
|
+
- After a successful widget creation or workflow, auto-generate a skill YAML
|
|
393
|
+
- Store in `~/.titan/skills/auto/`
|
|
394
|
+
- Load on boot alongside TypeScript skills
|
|
395
|
+
|
|
396
|
+
2. **Add memory consolidation** (from OpenClaw)
|
|
397
|
+
- Daily background job that compresses conversation history into structured memories
|
|
398
|
+
- Store in `~/.titan/memory/consolidated/`
|
|
399
|
+
- Surface in Memory Wiki UI
|
|
400
|
+
|
|
401
|
+
3. **Implement swarm invariants** (from Elite)
|
|
402
|
+
- Define 5-10 hard rules that CANNOT be violated
|
|
403
|
+
- Check before every tool execution
|
|
404
|
+
- Examples: "No file deletion without user confirmation", "No shell command with `rm -rf /`"
|
|
405
|
+
|
|
406
|
+
### Short-term (Next 2 Weeks)
|
|
407
|
+
|
|
408
|
+
4. **Add per-agent rate limiting** (from TUICommander)
|
|
409
|
+
- Each sub-agent gets its own token budget
|
|
410
|
+
- Prevents fork bombs and runaway agents
|
|
411
|
+
|
|
412
|
+
5. **Agent-as-tool composition** (from ADK)
|
|
413
|
+
- `spawn_agent` returns a tool handle
|
|
414
|
+
- Parent agent can call sub-agents as tools in subsequent turns
|
|
415
|
+
|
|
416
|
+
6. **Terminal output streaming** (from TUICommander)
|
|
417
|
+
- Sub-agents stream their output to the Command Post in real-time
|
|
418
|
+
- Not just status updates — full terminal-like output
|
|
419
|
+
|
|
420
|
+
### Medium-term (Next Month)
|
|
421
|
+
|
|
422
|
+
7. **Graph-based deliberation** (from LangGraph)
|
|
423
|
+
- Replace hand-coded deliberation with a LangGraph-compatible graph
|
|
424
|
+
- Nodes: gather_evidence, debate, vote, decide
|
|
425
|
+
- Edges: conditional routing based on confidence scores
|
|
426
|
+
|
|
427
|
+
8. **MCP-first tool redesign** (from Goose)
|
|
428
|
+
- Convert all built-in tools to MCP servers
|
|
429
|
+
- TITAN becomes an MCP client that connects to itself
|
|
430
|
+
- External MCP servers work identically to built-ins
|
|
431
|
+
|
|
432
|
+
9. **Rust hot paths** (from Goose)
|
|
433
|
+
- Token counting in Rust (N-API)
|
|
434
|
+
- Tool dispatch in Rust (tokio async)
|
|
435
|
+
- Target: 10x speedup on agent loop
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## Appendix: Key URLs
|
|
440
|
+
|
|
441
|
+
| Framework | URL |
|
|
442
|
+
|-----------|-----|
|
|
443
|
+
| Hermes Agent | https://github.com/NousResearch/hermes-agent |
|
|
444
|
+
| OpenClaw | https://github.com/openclaw/openclaw |
|
|
445
|
+
| Goose | https://github.com/block/goose |
|
|
446
|
+
| Google ADK | https://github.com/google/adk-python |
|
|
447
|
+
| TUICommander | https://github.com/sstraus/tuicommander |
|
|
448
|
+
| Elite Trading | https://github.com/Espenator/elite-trading-system |
|
|
449
|
+
| LangGraph | https://github.com/langchain-ai/langgraph |
|
|
450
|
+
| Space-Agent | https://github.com/agent0ai/space-agent |
|