Skip to main content

What is Synheart Sensor Agent?

Synheart Sensor Agent is a privacy-first PC background sensor that captures keyboard and mouse interaction timing (not content) for behavioral research. It extracts features like typing rhythm, mouse movement patterns, and interaction continuity - all without ever capturing what you type or where you click.

Key Features

  • Privacy by Design: Never captures key content, passwords, or screen coordinates
  • Behavioral Features: Extracts 16+ behavioral signals from interaction patterns
  • HSI Format: Exports data in the Human State Interface (HSI) JSON format (via Synheart Flux)
  • Transparency: Full visibility into what data is collected via status command
  • App Context: Captures foreground application bundle ID per window for task-switch detection (no window titles or content)
  • macOS Support: Native integration using Core Graphics event taps
  • Windows Support: Native integration using Windows Hooks API

Privacy Guarantees

What We CaptureWhat We Never Capture
When keys are pressed (timing only)Which keys you press (no passwords, messages, etc.)
How fast the mouse moves (speed only)Where your cursor is (no screen position tracking)
When clicks and scrolls occur (timing only)Window titles or application content
Foreground app bundle ID (for task-switch detection)Any screen content

Installation

From Source

# Clone the repository
git clone https://github.com/synheart-ai/synheart-sensor-agent.git
cd synheart-sensor-agent

# Build in release mode
cargo build --release

# The binary will be at target/release/synheart-sensor

Requirements

  • Rust: 1.82 or later
  • macOS: 10.15 (Catalina) or later
  • Windows: 10 or later
  • Permissions: Input Monitoring (macOS) or Run as Administrator (Windows)

Usage

Grant Input Capture Permission

macOS

Before the agent can capture events:
  1. Open System Preferences > Security & Privacy > Privacy
  2. Select Input Monitoring in the left sidebar
  3. Click the lock icon and authenticate
  4. Add the synheart-sensor application
  5. Restart the application

Windows

Run the sensor agent as Administrator to capture input events:
  1. Right-click the synheart-sensor.exe binary
  2. Select Run as administrator
  3. Or launch your terminal (Command Prompt / PowerShell) as Administrator before running the binary

Commands

# Start capturing behavioral data
synheart-sensor start

# Start with specific sources
synheart-sensor start --sources keyboard
synheart-sensor start --sources mouse
synheart-sensor start --sources keyboard,mouse

# Pause collection
synheart-sensor pause

# Resume collection
synheart-sensor resume

# Show current status and statistics
synheart-sensor status

# Display privacy declaration
synheart-sensor privacy

# Export collected data
synheart-sensor export
synheart-sensor export --output /path/to/export --format jsonl

# Show configuration
synheart-sensor config

Data Flow

The sensor-agent is a pure collector. It captures raw keyboard/mouse timing events and exposes them. Feature extraction, windowing, and session management are handled by synheart-session-runtime via synheart-core-rust:
sensor-agent (raw events) --> synheart-core-rust (SensorTranslator) --> session-runtime (FeatureSet)

Configuration

Configuration is stored at:
  • macOS: ~/Library/Application Support/synheart-sensor-agent/config.json
  • Windows: %APPDATA%\synheart-sensor-agent\config.json
Default configuration:
{
  "sources": {
    "keyboard": true,
    "mouse": true
  },
  "paused": false
}

Architecture

┌─────────────────────────────────────────────────────────────┐
│                    Synheart Sensor Agent                       │
├─────────────────────────────────────────────────────────────┤
│  ┌─────────────┐                     ┌─────────────┐       │
│  │  Collector  │────────────────────▶│ Raw Events  │       │
│  │   (macOS)   │                     │  (channel)  │       │
│  └─────────────┘                     └─────────────┘       │
│         │                                                  │
│         ▼                                                  │
│  ┌─────────────┐                                           │
│  │Transparency │                                           │
│  │    Log      │                                           │
│  └─────────────┘                                           │
└─────────────────────────────────────────────────────────────┘
         Pure sensor — windowing, features, and sessions handled
         by synheart-session-runtime via synheart-core-rust

Troubleshooting

macOS: “Input Monitoring permission not granted”

  1. Open System Preferences > Security & Privacy > Privacy
  2. Select Input Monitoring
  3. Ensure the application is in the list and checked
  4. If already checked, remove and re-add the application
  5. Restart the application

Windows: “Administrator privileges required”

  1. Right-click the terminal or binary and select “Run as administrator”
  2. If using PowerShell, launch it with elevated privileges
  3. Restart the application

No events being captured

  • Ensure you’re actively typing or moving the mouse
  • Check that the correct sources are enabled (--sources all)
  • Verify permission is granted with synheart-sensor status
  • macOS: Confirm Input Monitoring permission in System Preferences
  • Windows: Confirm the process is running as Administrator

Resources

License

Licensed under the Apache License, Version 2.0.