Skip to main content

Eisenstein lattice snap, temporal analysis, connectome detection, harmony governor, and hypothesis sandbox

Project description

snapkit-v2

The Architecture of Harmony — a triadic cognitive architecture for multi-agent systems based on the Free Energy Principle.

What is this?

snapkit-v2 is a constraint-geometry toolkit that implements FEP (Free Energy Principle) cognition for AI agents. Each agent operates on the Eisenstein A₂ lattice, communicates via MIDI-style temporal events, and is monitored by a Harmony Governor that measures "friction" — the degree to which an agent's internal model fails to predict its sensory inputs.

The Triadic Architecture

┌─────────────────────────────────────────┐
│  Layer 3: Executive (Agency)            │
│  Wakes on friction alarm, improvises    │
│  (rewrites constraints, cross-wires I/O)│
└──────────────────┬──────────────────────┘
                   │ tuning forks
                   ▼
┌─────────────────────────────────────────┐
│  Layer 2: Harmony Governor              │
│  Measures cognitive friction (Φ)        │
│  Triggers Executive when Φ > deadband   │
└──────┬───────────────────────┬──────────┘
       │ MIDI ch 0             │ MIDI ch N
       ▼                       ▼
┌──────────────┐      ┌──────────────┐
│  Layer 1     │      │  Layer 1     │
│  Sandbox     │      │  Sandbox     │
│  Forward     │      │  Forward     │
│  simulation  │      │  simulation  │
└──────────────┘      └──────────────┘

Install

pip install cocapn-snapkit

From source:

git clone https://github.com/SuperInstance/snapkit-v2
cd snapkit-v2
pip install -e .

For MIDI hardware support:

pip install cocapn-snapkit[midi]

Quick Start

Run the integration demo

python3 examples/harmony_demo.py

Simulates a fishing boat in calm → rough seas. Shows the full triadic architecture in action.

View the maritime token lattice

snapkit lattice

Run the harmony monitor

snapkit harmony --period 1.0 --deadband 1.5

Listen to the harmony

from snapkit.audio import harmony_demo_audio
harmony_demo_audio("/tmp/harmony.wav")

Use as a library

from snapkit.governor import HarmonyGovernor
from snapkit.sandbox import HypothesisSandbox
from snapkit.executive import ExecutiveAgent
from snapkit.midi_io import MIDIBridge
from snapkit.clever_tokens import create_maritime_lattice

# Set up the triadic architecture
gov = HarmonyGovernor()
gov.register_channel("helm", channel=0)

sandbox = HypothesisSandbox(sensor_name="heading")
sandbox.set_action_range(-1.0, 1.0, step=0.1)

executive = ExecutiveAgent(gov)
executive.register_agent("helm", channel=0)

bridge = MIDIBridge(governor=gov)
bridge.register_sensor("heading", lo=0, hi=360)

# In your main loop:
gov.tick()
phi = sandbox.evaluate(sensor_current=heading, target_sensor=target)
sandbox.observe(action_taken=best_action, sensor_before=h, sensor_after=h2)
gov.record_observation("helm", prediction=p, actual=h2)

# When something breaks:
results = executive.handle_alarms()

Physical Hardware

ESP32 + MPU6050 IMU

See firmware/esp32_mpu6050_imu/. Flash the Arduino sketch, connect to a serial port, and feed IMU data to the MIDI bridge:

import serial, json
from snapkit.midi_io import MIDIBridge

bridge = MIDIBridge(governor=gov)
ser = serial.Serial('/dev/ttyUSB0', 115200)

while True:
    line = ser.readline()
    data = json.loads(line)
    if 'roll' in data:
        bpm = bridge.feed_roll(data['roll'])
        print(f"Hull tempo: {bpm:.1f} BPM")

Architecture Layers

Module Purpose
eisenstein.py Geometric constraint space (A₂ lattice)
temporal.py BeatGrid, T-minus-0 detection
spectral.py Entropy, Hurst exponent, autocorrelation
connectome.py Coupled/anti-coupled room detection
midi.py FluxTensorMIDI protocol
midi_io.py Bridge to physical sensors
clever_tokens.py Lattice-anchored constraint tokens
sandbox.py Layer 1: Forward simulation + óthismos scoring
governor.py Layer 2: FEP friction monitoring
executive.py Layer 3: Improvisation protocol
fleet.py Multi-vessel coordination
othismos_bridge.py Connects to the othismos library
audio.py Synthesize MIDI bus as audio (listen to harmony)
cli.py Command-line tools

Web Dashboard

Open examples/harmony_dashboard.html in a browser for a real-time view of:

  • Per-channel friction state
  • Hull-derived tempo
  • MIDI piano roll
  • Event log

For a live deployment, serve the dashboard from a Fleet Coordinator:

docker run -p 8000:8000 snapkit-v2

JavaScript / TypeScript

The core primitives are available in TypeScript at js/snapkit.ts for browser-side use:

import { HarmonyGovernor, BeatGrid, TokenLattice } from './snapkit.js';

const gov = new HarmonyGovernor();
gov.registerChannel('helm', 0, 1.5);
gov.tick();
gov.recordObservation('helm', 180.0, 182.0);
console.log(gov.systemState());

Related Repos

Documentation

License

MIT


The hull sets the beat. The agents sync to the ocean.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cocapn_snapkit-2.8.0.tar.gz (62.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cocapn_snapkit-2.8.0-py3-none-any.whl (58.8 kB view details)

Uploaded Python 3

File details

Details for the file cocapn_snapkit-2.8.0.tar.gz.

File metadata

  • Download URL: cocapn_snapkit-2.8.0.tar.gz
  • Upload date:
  • Size: 62.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for cocapn_snapkit-2.8.0.tar.gz
Algorithm Hash digest
SHA256 9b9301f2c57004ca0fe2fbaa08ffbf17b4c9b49bac50d1f4392cb076bab1aaa8
MD5 e736385b70917212f4ccb6339a130e59
BLAKE2b-256 22fcd5ee1e90adf29b57804a5f8cdc5fbae8cdad116554fed359bead0ad74a3b

See more details on using hashes here.

File details

Details for the file cocapn_snapkit-2.8.0-py3-none-any.whl.

File metadata

  • Download URL: cocapn_snapkit-2.8.0-py3-none-any.whl
  • Upload date:
  • Size: 58.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for cocapn_snapkit-2.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c29fa415849ef688757da17fb67f282989e827e1c332cc4c4c0af24330f55f48
MD5 adf96cb8f9f18488a53dae5c336496bd
BLAKE2b-256 c0cccad4b6a1c69f68c2b1b1dc660666c23e6bc2b433de5c083767441dd45a01

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page