Skip to content

Feature: Neuron Core visualization — WebGL neuron animation for agent state #902

Description

@ar1vit0r

Problem Statement

OpenJarvis has a Tauri desktop app but lacks visual feedback for agent state. Users cannot see when the agent is thinking, speaking, or idle — they only see text output.

A visual indicator would:

  • Provide immediate feedback on agent state
  • Make the desktop app feel more alive and responsive
  • Support voice interactions with visual cues
  • Enhance the user experience for always-on assistants

Proposed Solution

Add a WebGL-based neuron visualization that reacts to agent state changes:

Core Components:

NeuronCoreMini.tsx
├── Three.js WebGL renderer
├── 5 morphology types (pyramidal, stellate, purkinje, bipolar, network)
├── State-driven animation (idle, listening, thinking, speaking)
├── Mic amplitude integration
└── Pitch-driven shape morphing

neuronMorphologies.ts
├── Geometry builders for each morphology
├── Camera positioning
└── Branch/twig generation

Key Features:

  • 5 neuron morphologies (selectable via config)
  • State-driven color and animation speed
  • Real-time mic amplitude visualization
  • Pitch-driven shape morphing
  • Cross-window state synchronization
  • Reduced motion support (prefers-reduced-motion)

Dependencies:

  • three — WebGL rendering (frontend only)

Acceptance Criteria

  • NeuronCoreMini component renders WebGL neuron visualization
  • 5 morphologies are selectable (pyramidal, stellate, purkinje, bipolar, network)
  • Animation reacts to agent state (idle, listening, thinking, speaking)
  • Mic amplitude drives visualization intensity
  • Pitch drives shape morphing
  • Cross-window state sync works via EventBus
  • Reduced motion preference is respected
  • Component is self-contained (no OpenJarvis runtime dependencies)
  • Unit tests for morphology generation
  • Documentation with usage examples

Alternatives Considered

  1. CSS animations — Simpler but less dynamic, no 3D capabilities
  2. Canvas 2D — Less performant for complex animations
  3. Lottie/Rive — Pre-made animations, less customizable
  4. Status indicator only — Simple text/icon, but less engaging

Additional Context

I have a working implementation in my personal fork (ar1vit0r/OpenJarvis) with:

  • 445 lines (NeuronCoreMini.tsx)
  • 320 lines (neuronMorphologies.ts)
  • 5 morphologies with real-time animation
  • Cross-window state synchronization
  • Integration with voice channel events

The visualization has been tested in the Tauri desktop app and responds to voice channel state changes in real-time.

Contributor: @ar1vit0r (9 merged PRs in OpenJarvis)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Fields

    Priority

    P3

    Effort

    L

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions