All repositories implementing attention allocation (ECAN) and motivational/goal management (MetaMo/OpenPsi). For theoretical foundations, see ECAN Full and MetaMo Full.
| Repo | Language | Upstream | Maturity | Purpose |
|---|---|---|---|---|
| metta-attention | MeTTa + Python | iCog-Labs-Dev | Research / Operational | MeTTa port of ECAN: attention-bank (storage/indexing) + attention agents (diffusion, Hebbian learning, rent, forgetting). Runs on PeTTa. |
| attention | C++ | iCog-Labs-Dev | Legacy | Original OpenCog ECAN (v0.1.4): ImportanceDiffusion, RentCollection, HebbianLinkCreation/Updating, Forgetting agents. CogServer module. |
| weighted-atom-sweep | Rust | iCog-Labs-Dev | Experimental | Weighted atom sweep operations on MORK's S-expressions. Graph traversal and importance-proportional sampling. Implementation analogy only — generic AtomHeader trait, NOT an STI/LTI/AttentionValue bridge. Requires nightly Rust and sibling MORK/PathMap. |
| DAS AttentionBroker (subsystem) | C++ | singnet | Operational | Per-context Hebbian network + token rent/wages/spreading economy outside AtomDB. ExactCountHebbianUpdater + TokenSpreader. ECAN-compatible engineering surrogate; see DAS Full. |
| Repo | Language | Upstream | Maturity | Purpose |
|---|---|---|---|---|
| hyperon-openpsi | MeTTa + Python | iCog-Labs-Dev | Operational | OpenPsi cognitive architecture in MeTTa: demands, emotions, modulators, action planners (hill-climbing). Use cases: ping-pong, curious-agent (Gemini LLM), Qwestor API. |
| MetaMo-Python | Python | iCog-Labs-Dev | Experimental | Category theory reference implementation: AppraisalComonad, DecisionMonad, MetaMoPseudoBimonad. 8-dim goals, 6-dim modulators, dual overgoals. |
| PeTTa-OpenPSI | MeTTa + Python | iCog-Labs-Dev | Research / Operational | Prolog-based MeTTa port of OpenPsi with A* and Thompson sampling planners. Use cases: curious-agent, metta-trader (NARS-based). |
Attention lineage:
tanh sigmoid), and the MeTTa port faithfully ports those surrogates. The MeTTa port did not lose paper equations — Classic C++ had already moved away from them.ExactCountHebbianUpdater (HebbianNetworkUpdater.cc:57-96; weights = count(A→B)/count(A) — NOT the Classic ECAN Hebbian Conjunction equation) and a fixed-token TokenSpreader (rent rate 0.75, lower/upper spreading 0.10, deterministic arity-weighted spreading; StimulusSpreader.cc). Like the other two members it is 0/4 strict-literal against the 2009 ECAN paper but is more production-oriented (RPC-driven per-context STI outside AtomDB; MeTTa surface via new-das!). All three should be classified as ECAN-inspired engineering surrogates rather than literal 2009 ECAN. See DAS Full for code anchors and the cluster-pilot lock-in.1471ff2c) outside the canonical MORK 8-member workspace; its AtomHeader is a generic trait, NOT an STI/LTI/AttentionValue, and its match counter is an integer, not an ECAN attention currency. Repurposable for recency/priority/card-version metadata if a Decko-specific AtomHeader and traversal policy are defined, but NOT a code-real ECAN bridge. The whitepaper-described "scaling ECAN on MORK" path is design-stage, not implemented at this snapshot.Motivation lineage:
The evolutionary path is: OpenPsi (heuristic) → hyperon-openpsi (MeTTa port) → MetaMo (formal category theory). All three coexist during the transition.
Hanson dialogue/robotics runtime branch (historical, not active in current Hyperon). The OpenPsi cluster pilot Source 4 (2026-04-28) established that Hanson Robotics' Sophia stack -- via ros-behavior-scripting and loving-ai-ghost -- consumed Classic OpenPsi as a behavior-loop authority for dialogue and motor schemas, with psi-step driving the runtime loop and psi-rule registrations mapping perceptual predicates to behaviors. Demands like face-demand and speech-demand were satisfied by hardcoded constant TVs (e.g., (stv 1 1)) rather than the OpenPsi paper's quantitative satisfaction economy. The Loving AI Ghost production runtime explicitly disabled ECAN/STI in 2018 (commit 51a413e7 DevHEAD: (ghost-set-sti-weight 0)) using the supported Ghost API. Hanson's opencog fork stopped tracking upstream OpenPsi at 2016-06 master and missed the entire 2017+ opencog/openpsi/dynamics/ mathematical buildout. This is a runtime/application branch over Classic OpenPsi -- not a paper-faithful reimplementation, not a separate mathematical tradition. No documented MeTTa equivalent of this branch exists in the current Hyperon ecosystem.
Linas Vepstas Hyperon-era research portfolio (Perception cluster pilot 2026-05-01). Vepstas's role in the Hyperon ecosystem extends well beyond his historical legacy authorship of Classic C++ opencog/attention (424 commits) and the 2019-09-06 AttentionBank removal (commit 318c0b4cb). The Perception/Neural-Symbolic cluster pilot Source 5 established a CF5.2 role upgrade from [LEGACY-AUTHOR-BRIDGE] to [HYPERON-ERA-PARALLEL-RESEARCH-PORTFOLIO]. Evidence: a 5-repo sole-authored Hyperon-era research effort on the AtomSpace-Scheme stack (C++ + Guile, no .metta files):
64849f3 -- ~733 commits; 7 wired sensory atom types (TEXT_FILE_NODE, FILE_SYS_NODE, UNIX_SOCKET_NODE, TCP_SOCKET_NODE, TERMINAL_NODE, I_R_CHAT_NODE, OLLAMA_NODE) at opencog/sensory/types/sensory_types.script:29-51; 705-line README framing perception/action research on AtomSpace as successor to failed Hanson Sophia / Minecraft ROCCA / Unity pet-dog / soccer-robothon embodiment efforts.0718ba0 -- 89 commits; pure-Atomese learning agents (experiments/02-memory/, count-agent.scm).d5ba07e -- 76 commits; sensory-backed crawler project (demos/crawler.scm).ba0314c -- 30 commits; theory/docs portfolio.b8be282 -- 372 commits; OpenCL/CUDA Atomese/Sensory acceleration (4 .cl + 1 .cu).Plus two co-authored repositories: opencog/miner (with Nil Geisweiller; the C++/Scheme symbolic miner that the hyperon-miner trio ports to MeTTa) and opencog/vision (with Adrian Borucki; minimal AtomSpace-OpenCV scaffolding).
Significance for Attention & Motivation framing. The Hyperon ecosystem operates on TWO parallel stacks (cluster-narrative-deciding finding):
opencog/miner + opencog/vision. Active 2025-2026.hyperon-experimental + metta-attention + hyperon-miner trio + neural-subgraph-matcher-miner. Active 2025-2026.The Vepstas portfolio receives concurrent active development on a different stack from metta-attention; it is not a frozen legacy artifact. OllamaNode in particular has dual characterization: [LLM-MEDIATED-PERCEPTION] (IRC text-stream wiring at examples/ollama-bot.scm:104-141) AND [LLM-AS-KNOWLEDGE-SOURCE] / [LLM-AS-MEMORY-SUBSTRATE] (embedding-vector extraction at examples/ollama-embed.scm:20-31, 42-46). Bidirectional cross-grep across the AtomSpace-Scheme perception portfolio and the MeTTa-runtime mining stack returned ZERO references between layers -- the two stacks operate in code-isolation. Any future ECAN reactivation that wants to consume runtime-wired perception input must either bridge across stacks or re-host on whichever stack ECAN re-emerges on. See Sensory for the synthesis card.
# ECAN on PeTTa (requires sibling PeTTa directory)
cd ../PeTTa && sh run.sh ../metta-attention/attention/test/agents-test.metta
# OpenPsi use cases (requires hyperon==0.2.3)
cd hyperon-openpsi && python3 test/run-tests.py
metta use-cases/ping-pong/ping-pong.metta
# MetaMo Python reference
cd MetaMo-Python && pip install -r requirements.txt
python applications/research_assistant.py
# PeTTa-OpenPSI
metta main/demands/demands.metta
# Legacy C++ ECAN (requires cogutil, atomspace, cogserver)
cd attention && mkdir build && cd build && cmake .. && make && make test
No significant fork/mirror pattern in this family. The attention repo is an iCog-Labs-Dev fork of opencog/attention. All three motivation repos (hyperon-openpsi, MetaMo-Python, PeTTa-OpenPSI) are original iCog Labs work targeting different execution strategies.
stimulate, correlate, asymmetric_correlate, get_importance, set_determiners, set_parameters, save_context, drop_and_load_context); see DAS Full for query-tree integration via STI-sorted Source nodes.attention, metta-attention, and DAS AttentionBroker each independently re-engineered around the 2009 paper rather than implementing it. None of the three currently provides the literal target-importance-funds rent / wage equation, the literal Hebbian Conjunction update, or the literal stochastic tanh diffusion. A strict-literal reimplementation track (separate from the production surrogates) is an open research/engineering question.0a0b09912 2016-03-09 wire-up by Misgana Bayetta; commit 0b744dbab 2018-10-23 deliberate unwire by Nil Geisweiller with comment "An attentionbank is needed in order to get the STI..."), a brief OpenPsi default action-selector STI path 2016-05 to 2016-11 (commit 8ab0e8f81 Amen Belayneh wire; commit 9f2697859 Linas Vepstas removal; commit e5bae708f 2017-11-08 reintroduction as uncalled helper), and a Loving AI Ghost runtime explicit STI-disable via supported public API (commit 51a413e7 2018-06-06 DevHEAD: (ghost-set-sti-weight 0)). All three executable paths were deliberately decoupled by 2019. Current MeTTa-PLN has no attention-layer integration. Re-establishing executable PLN-attention coupling is an open problem; see ECAN Full → Development and Historical Context for the full reconstructed lifecycle.WARentCollectionAgent.cc:68-70 (mutates member STIAtomRent/LTIAtomRent in place every call), and the WA diffusion parameter mis-read at WAImportanceDiffusionAgent.cc:51-52 (reads dif_tournament_size into hebbianMaxAllocationPercentage). Cleaning these up requires upstream coordination since they exist in both C++ and MeTTa codebases.HebbianCreationAgent.metta:17 hardcodes localToFarLinks = 1000.0, shadowing the configured LOCAL_FAR_LINK_RATIO = 10 that Classic C++ correctly reads. Fix: read the parameter, don't hardcode.recentVal.metta:22-67 has both updateMin/updateMax implementations commented out, where Classic C++ keeps _maxSTI/_minSTI as live recent_val instances. Restoring the smoothed-extrema infrastructure would be needed if the paper formulas (which depend on recentMaxSTI) are ever implemented.matcher.scm:117-130, 284, plus STI/AF reads/writes in matcher and schemas), NLP fuzzy matching (AF-only via bank->atom_is_in_AF), Python web API AttentionValue surfaces, and OpenPsi (action-selector seam + uncalled rule-sca-weight STI helper at action-selector.scm:57-64) — all confirmed at the pre-removal monorepo snapshot (cluster Source 4, 2026-04-26). OpenPsi cluster pilot Source 1 (2026-04-27) refined the OpenPsi characterization: helper-only / uncalled in default runtime path, so OpenPsi was an ECAN-coupling enabler rather than a default executable ECAN consumer. None were preserved as functioning ECAN integrations across the 2019-09-06 AttentionBank removal; none have documented MeTTa equivalents in the current Hyperon ecosystem. Selecting which consumer integrations to rebuild is an open Hyperon-ecosystem decision.opencog/sensory + agents + motor + evidence + atomese-simd portfolio (Perception cluster pilot 2026-05-01) provides actively-developed runtime-wired perception/action artifacts on the AtomSpace-Scheme stack. None of these consume ECAN attention values; bidirectional cross-grep confirms zero references between the perception portfolio and either metta-attention or DAS AttentionBroker. Whether future Hyperon attention work should bridge across stacks (Scheme-side perception → MeTTa-side attention) or re-host (port perception artifacts to MeTTa, or port attention to Scheme) is an open architectural decision.