expand_less
Author: Linas Vepstas (sole author)
Repo: opencog/sensory @ 64849f3 (master, 2026-02-24)
Status: Operational on the AtomSpace-Scheme stack. ~733 commits. 7 wired sensory atom types with per-type C++ factory functions and Scheme runtime examples. Identified as the previously-unmapped Hyperon-era perception bridge by the Perception/Neural-Symbolic cluster pilot Source 5 (2026-05-01).
What Sensory Is
Sensory is a perception/action substrate for AtomSpace: it provides AtomSpace-native input nodes for files, sockets, terminals, IRC chat, and LLM prompts/embeddings, plus the C++ factory layer and Scheme bindings to instantiate and consume them at runtime. The 705-line README at 64849f3 explicitly frames the project as a perception/action revival on AtomSpace, positioned against failed prior embodiment efforts (Hanson Sophia ROS+Blender; Minecraft MineRL+Malmo+ROCCA; Unity pet-dog avatars; Ethiopian soccer-robothon).
Sensory does not cite DeSTIN, FISHGRAM, or the 2013 Goertzel/Sanders/O'Neill/Yu paper architecture by name -- pickaxe across the repo at HEAD AND in git history returns zero hits for fishgram, sushigram, DeSTIN tokens. It is a BROAD perception/action revival, not a specific 2013-paper-architecture revival. See {{Publications+Deep Learning Perception with PLN|view:link;title:the 2013 paper card}} for the editorial-terminology note on this distinction.
Wired Sensory Atom Types
Seven sensory atom types are declared at opencog/sensory/types/sensory_types.script:29-51 and built via opencog/atoms/CMakeLists.txt:7-14:
Atom typeFactoryUse
TEXT_FILE_NODETextFileNode.cc:296Text file open/read/write
FILE_SYS_NODEFileSysNode.cc:515Filesystem traversal/listing
UNIX_SOCKET_NODEUnixSocketNode.cc:310UNIX domain socket I/O
TCP_SOCKET_NODETcpSocketNode.cc:320TCP socket I/O
TERMINAL_NODETerminalNode.cc:216Terminal/console I/O
I_R_CHAT_NODEIRChatNode.cc:528IRC chat client
OLLAMA_NODEOllamaNode.cc:676Ollama LLM generate / chat / embed (optional, gated via CMake FIND_PROGRAM at CMakeLists.txt:45-55, 71-72)
All 7 are [WIRED] per the cluster-pilot 3-state classification (no [STUB-NOT-WIRED] and no [UNIMPLEMENTED] in this set).
OllamaNode Dual Characterization
OllamaNode supports two distinct uses, both runtime-wired and both with non-trivial implementation. The Perception cluster pilot V5-2 split-verdict resolution treats them as separate characterizations rather than collapsing them into a single label:
[LLM-MEDIATED-PERCEPTION] -- IRC text-stream wiring at examples/ollama-bot.scm:104-141 (:20-35 setup). The LLM is the intermediate language-understanding layer between IRC sensory I/O and the AtomSpace. This is sensory I/O where an LLM happens to be the parsing layer.
[LLM-AS-KNOWLEDGE-SOURCE] / [LLM-AS-MEMORY-SUBSTRATE] -- embedding-vector extraction at examples/ollama-embed.scm:20-31, 42-46; storage via *-embedding-* key at OllamaNode.cc:629-664. Embeddings are used as semantic-memory primitives. This is not perception -- it's external-memory access via LLM-vended representations.
Both characterizations co-exist in the same OllamaNode implementation but address different use-cases. The duality is a concrete instance of how LLM nodes resist single-label classification in cognitive-architecture terms. Definition at OllamaNode.h:34-45; generate/chat/embed paths at OllamaNode.cc:362-430. C++ HTTP via cpp-httplib. Tests at tests/sensory/ollama/ollama-embed-test.scm (Scheme).
Sister Portfolio (Vepstas Hyperon-era research portfolio)
Sensory is part of a 5-repo sole-authored Vepstas portfolio plus 2 co-authored repos. Cross-references in READMEs confirm portfolio cohesion: the sensory README cites evidence, motor, agents, atomese-simd; the motor README cites sensory and agents.
Sister repoHEADCommitsRole
opencog/agents0718ba089Pure-Atomese learning agents. experiments/02-memory/CMakeLists.txt:14-15; count-agent.scm:37-40, 73.
opencog/motord5ba07e76Sensory-backed crawler project. demos/crawler.scm:15-20, 69-81, 200-213, 268.
opencog/evidenceba0314c30Theory/docs portfolio (CLAUDE.md:20-23; README.md:141-155, 210-216); not executable integration.
opencog/atomese-simdb8be282372OpenCL/CUDA Atomese/Sensory acceleration. 4 .cl + 1 .cu files. CMakeLists.txt:84-101, 115-177.
opencog/miner(co-authored with Nil Geisweiller)--The C++/Scheme symbolic miner that the {{Hyperon AI Algorithms+ECAN+ECAN Full+Development and Historical Context|view:link;title:hyperon-miner trio}} ports to MeTTa.
opencog/vision(co-authored with Adrian Borucki)--Minimal AtomSpace-OpenCV scaffolding (5 wired ImageLink operation types + 1 stub-not-wired); not a perception pipeline. See {{About Hyperon+Vision|view:link;title:Vision}}.
Stack Identity: AtomSpace-Scheme, not MeTTa-runtime
Sensory and the entire Vepstas portfolio are [ATOMSPACE-SCHEME-STACK]:
C++ implementation with Guile Scheme examples and tests.
No .metta files anywhere in the portfolio.
No hyperon-experimental bindings.
Uses cpp-httplib for Ollama HTTP, AtomSpace C++ API + Scheme bindings throughout.
This is a cluster-narrative-deciding finding: the Hyperon ecosystem operates on TWO parallel stacks, both receiving concurrent active development as of 2026-04-30:
AtomSpace-Scheme stack: Vepstas perception portfolio + opencog/miner + opencog/vision.
MeTTa-runtime stack: hyperon-experimental + hyperon-miner trio + neural-subgraph-matcher-miner + metta-attention.
Bidirectional cross-grep between Sensory + sister repos and the MeTTa-runtime mining stack returned ZERO references in either direction (Codex token list: sensory, opencog/sensory, OllamaNode, neurospace, torchme, ImageLink, Fishgram, sushigram, DeSTIN, hyperon-miner, neural-subgraph). The two stacks operate in code-isolation. [PARALLEL-NON-INTEGRATED] holds.
Architecture Status: [PARTIAL-FRAGMENTED-REVIVAL]
The 2013 DeSTIN-FISHGRAM-PLN architecture has fragments scattered across parallel research tracks but no end-to-end runtime pipeline:
Perception layer: opencog/sensory (this card).
Symbolic mining layer: opencog/miner + hyperon-miner trio + neural-subgraph-matcher-miner.
Inference layer: hyperon-pln + chaining.
The layers are not interconnected at runtime. Sensory → Miner: 0 hits. Sensory → Hyperon-miner: 0 hits. The LLM-mediated path via OllamaNode exists but is NOT wired to any downstream reasoner (PLN or Miner). The cluster-pilot verdict is [PARTIAL-FRAGMENTED-REVIVAL] -- generic architectural concerns recur in fragmented form across the three traditions but no end-to-end pipeline ties them together.
Quick Start
# Build sensory (requires AtomSpace + cogutil)
cd sensory && mkdir build && cd build && cmake .. && make && sudo make install
# Ollama embedding example (requires Ollama installed and running)
guile -L /usr/local/share/opencog/scm \
examples/ollama-embed.scm
# IRC chat bot (requires IRC connection details)
guile -L /usr/local/share/opencog/scm \
examples/ollama-bot.scm
# Run sensory tests
cd build && make test
Open Questions
Cross-stack bridge. If Hyperon production work consolidates on the MeTTa-runtime stack, will the Vepstas perception portfolio be ported to MeTTa, or will an AtomSpace-Scheme ↔ MeTTa-runtime bridge be built? No work on either path is documented at this snapshot.
Downstream reasoner wiring. Sensory provides runtime-wired perception input. No current wiring routes that input to {{Hyperon AI Algorithms+PLN (Probabilistic Logic Networks)|view:link;title:PLN}} or to any pattern miner. Bridging the perception layer to a reasoner is the structural gap that [PARTIAL-FRAGMENTED-REVIVAL] describes.
OllamaNode classification. The dual [LLM-MEDIATED-PERCEPTION] / [LLM-AS-KNOWLEDGE-SOURCE] characterization is a cluster-pilot resolution but suggests OllamaNode wants a richer cognitive-architecture vocabulary than perception alone provides.
Higher-layer sensory goal. README.md:636-648 sketches a higher-layer sensory goal that is not yet realized in code.
References
Cluster-pilot extraction archive: scripts/archive/perception_pilot/source5_perception_output_boundary/.
Cross-cluster context: {{Implementation Families+Attention and Motivation|view:link;title:Attention and Motivation}} (Vepstas role upgrade); {{Hyperon AI Algorithms+ECAN+ECAN Full+Development and Historical Context|view:link;title:ECAN Full → Development and Historical Context}} (cluster pilot addendum).
Sister cards: {{Implementation Families+Neural Pattern Mining|view:link;title:Neural Pattern Mining}} (Tradition 7 candidate); {{About Hyperon+Vision|view:link;title:Vision}} (co-authored scaffolding).
Editorial note: {{Publications+Deep Learning Perception with PLN|view:link;title:2013 FISHGRAM paper}} (terminology disambiguation).
{{+tags|titled;title:Tags}}
{{+discussion|titled;title:Discussion}}
Repo: opencog/sensory @ 64849f3 (master, 2026-02-24)
Status: Operational on the AtomSpace-Scheme stack. ~733 commits. 7 wired sensory atom types with per-type C++ factory functions and Scheme runtime examples. Identified as the previously-unmapped Hyperon-era perception bridge by the Perception/Neural-Symbolic cluster pilot Source 5 (2026-05-01).
What Sensory Is
Sensory is a perception/action substrate for AtomSpace: it provides AtomSpace-native input nodes for files, sockets, terminals, IRC chat, and LLM prompts/embeddings, plus the C++ factory layer and Scheme bindings to instantiate and consume them at runtime. The 705-line README at 64849f3 explicitly frames the project as a perception/action revival on AtomSpace, positioned against failed prior embodiment efforts (Hanson Sophia ROS+Blender; Minecraft MineRL+Malmo+ROCCA; Unity pet-dog avatars; Ethiopian soccer-robothon).
Sensory does not cite DeSTIN, FISHGRAM, or the 2013 Goertzel/Sanders/O'Neill/Yu paper architecture by name -- pickaxe across the repo at HEAD AND in git history returns zero hits for fishgram, sushigram, DeSTIN tokens. It is a BROAD perception/action revival, not a specific 2013-paper-architecture revival. See {{Publications+Deep Learning Perception with PLN|view:link;title:the 2013 paper card}} for the editorial-terminology note on this distinction.
Wired Sensory Atom Types
Seven sensory atom types are declared at opencog/sensory/types/sensory_types.script:29-51 and built via opencog/atoms/CMakeLists.txt:7-14:
Atom typeFactoryUse
TEXT_FILE_NODETextFileNode.cc:296Text file open/read/write
FILE_SYS_NODEFileSysNode.cc:515Filesystem traversal/listing
UNIX_SOCKET_NODEUnixSocketNode.cc:310UNIX domain socket I/O
TCP_SOCKET_NODETcpSocketNode.cc:320TCP socket I/O
TERMINAL_NODETerminalNode.cc:216Terminal/console I/O
I_R_CHAT_NODEIRChatNode.cc:528IRC chat client
OLLAMA_NODEOllamaNode.cc:676Ollama LLM generate / chat / embed (optional, gated via CMake FIND_PROGRAM at CMakeLists.txt:45-55, 71-72)
All 7 are [WIRED] per the cluster-pilot 3-state classification (no [STUB-NOT-WIRED] and no [UNIMPLEMENTED] in this set).
OllamaNode Dual Characterization
OllamaNode supports two distinct uses, both runtime-wired and both with non-trivial implementation. The Perception cluster pilot V5-2 split-verdict resolution treats them as separate characterizations rather than collapsing them into a single label:
[LLM-MEDIATED-PERCEPTION] -- IRC text-stream wiring at examples/ollama-bot.scm:104-141 (:20-35 setup). The LLM is the intermediate language-understanding layer between IRC sensory I/O and the AtomSpace. This is sensory I/O where an LLM happens to be the parsing layer.
[LLM-AS-KNOWLEDGE-SOURCE] / [LLM-AS-MEMORY-SUBSTRATE] -- embedding-vector extraction at examples/ollama-embed.scm:20-31, 42-46; storage via *-embedding-* key at OllamaNode.cc:629-664. Embeddings are used as semantic-memory primitives. This is not perception -- it's external-memory access via LLM-vended representations.
Both characterizations co-exist in the same OllamaNode implementation but address different use-cases. The duality is a concrete instance of how LLM nodes resist single-label classification in cognitive-architecture terms. Definition at OllamaNode.h:34-45; generate/chat/embed paths at OllamaNode.cc:362-430. C++ HTTP via cpp-httplib. Tests at tests/sensory/ollama/ollama-embed-test.scm (Scheme).
Sister Portfolio (Vepstas Hyperon-era research portfolio)
Sensory is part of a 5-repo sole-authored Vepstas portfolio plus 2 co-authored repos. Cross-references in READMEs confirm portfolio cohesion: the sensory README cites evidence, motor, agents, atomese-simd; the motor README cites sensory and agents.
Sister repoHEADCommitsRole
opencog/agents0718ba089Pure-Atomese learning agents. experiments/02-memory/CMakeLists.txt:14-15; count-agent.scm:37-40, 73.
opencog/motord5ba07e76Sensory-backed crawler project. demos/crawler.scm:15-20, 69-81, 200-213, 268.
opencog/evidenceba0314c30Theory/docs portfolio (CLAUDE.md:20-23; README.md:141-155, 210-216); not executable integration.
opencog/atomese-simdb8be282372OpenCL/CUDA Atomese/Sensory acceleration. 4 .cl + 1 .cu files. CMakeLists.txt:84-101, 115-177.
opencog/miner(co-authored with Nil Geisweiller)--The C++/Scheme symbolic miner that the {{Hyperon AI Algorithms+ECAN+ECAN Full+Development and Historical Context|view:link;title:hyperon-miner trio}} ports to MeTTa.
opencog/vision(co-authored with Adrian Borucki)--Minimal AtomSpace-OpenCV scaffolding (5 wired ImageLink operation types + 1 stub-not-wired); not a perception pipeline. See {{About Hyperon+Vision|view:link;title:Vision}}.
Stack Identity: AtomSpace-Scheme, not MeTTa-runtime
Sensory and the entire Vepstas portfolio are [ATOMSPACE-SCHEME-STACK]:
C++ implementation with Guile Scheme examples and tests.
No .metta files anywhere in the portfolio.
No hyperon-experimental bindings.
Uses cpp-httplib for Ollama HTTP, AtomSpace C++ API + Scheme bindings throughout.
This is a cluster-narrative-deciding finding: the Hyperon ecosystem operates on TWO parallel stacks, both receiving concurrent active development as of 2026-04-30:
AtomSpace-Scheme stack: Vepstas perception portfolio + opencog/miner + opencog/vision.
MeTTa-runtime stack: hyperon-experimental + hyperon-miner trio + neural-subgraph-matcher-miner + metta-attention.
Bidirectional cross-grep between Sensory + sister repos and the MeTTa-runtime mining stack returned ZERO references in either direction (Codex token list: sensory, opencog/sensory, OllamaNode, neurospace, torchme, ImageLink, Fishgram, sushigram, DeSTIN, hyperon-miner, neural-subgraph). The two stacks operate in code-isolation. [PARALLEL-NON-INTEGRATED] holds.
Architecture Status: [PARTIAL-FRAGMENTED-REVIVAL]
The 2013 DeSTIN-FISHGRAM-PLN architecture has fragments scattered across parallel research tracks but no end-to-end runtime pipeline:
Perception layer: opencog/sensory (this card).
Symbolic mining layer: opencog/miner + hyperon-miner trio + neural-subgraph-matcher-miner.
Inference layer: hyperon-pln + chaining.
The layers are not interconnected at runtime. Sensory → Miner: 0 hits. Sensory → Hyperon-miner: 0 hits. The LLM-mediated path via OllamaNode exists but is NOT wired to any downstream reasoner (PLN or Miner). The cluster-pilot verdict is [PARTIAL-FRAGMENTED-REVIVAL] -- generic architectural concerns recur in fragmented form across the three traditions but no end-to-end pipeline ties them together.
Quick Start
# Build sensory (requires AtomSpace + cogutil)
cd sensory && mkdir build && cd build && cmake .. && make && sudo make install
# Ollama embedding example (requires Ollama installed and running)
guile -L /usr/local/share/opencog/scm \
examples/ollama-embed.scm
# IRC chat bot (requires IRC connection details)
guile -L /usr/local/share/opencog/scm \
examples/ollama-bot.scm
# Run sensory tests
cd build && make test
Open Questions
Cross-stack bridge. If Hyperon production work consolidates on the MeTTa-runtime stack, will the Vepstas perception portfolio be ported to MeTTa, or will an AtomSpace-Scheme ↔ MeTTa-runtime bridge be built? No work on either path is documented at this snapshot.
Downstream reasoner wiring. Sensory provides runtime-wired perception input. No current wiring routes that input to {{Hyperon AI Algorithms+PLN (Probabilistic Logic Networks)|view:link;title:PLN}} or to any pattern miner. Bridging the perception layer to a reasoner is the structural gap that [PARTIAL-FRAGMENTED-REVIVAL] describes.
OllamaNode classification. The dual [LLM-MEDIATED-PERCEPTION] / [LLM-AS-KNOWLEDGE-SOURCE] characterization is a cluster-pilot resolution but suggests OllamaNode wants a richer cognitive-architecture vocabulary than perception alone provides.
Higher-layer sensory goal. README.md:636-648 sketches a higher-layer sensory goal that is not yet realized in code.
References
Cluster-pilot extraction archive: scripts/archive/perception_pilot/source5_perception_output_boundary/.
Cross-cluster context: {{Implementation Families+Attention and Motivation|view:link;title:Attention and Motivation}} (Vepstas role upgrade); {{Hyperon AI Algorithms+ECAN+ECAN Full+Development and Historical Context|view:link;title:ECAN Full → Development and Historical Context}} (cluster pilot addendum).
Sister cards: {{Implementation Families+Neural Pattern Mining|view:link;title:Neural Pattern Mining}} (Tradition 7 candidate); {{About Hyperon+Vision|view:link;title:Vision}} (co-authored scaffolding).
Editorial note: {{Publications+Deep Learning Perception with PLN|view:link;title:2013 FISHGRAM paper}} (terminology disambiguation).
{{+tags|titled;title:Tags}}
{{+discussion|titled;title:Discussion}}