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.5.0.tar.gz (50.7 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.5.0-py3-none-any.whl (51.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cocapn_snapkit-2.5.0.tar.gz
  • Upload date:
  • Size: 50.7 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.5.0.tar.gz
Algorithm Hash digest
SHA256 36caf1e6b269e131e788e63ffa7e905c50971b410db9f11a5cb4a8ff834f54ca
MD5 f0c5895c5e7016c5e54de7ab0b7d6b31
BLAKE2b-256 a3c348f67bb3ef50183b06f0d83519597f4c735d9d852deac03f8f79798680c2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cocapn_snapkit-2.5.0-py3-none-any.whl
  • Upload date:
  • Size: 51.6 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.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 27d4770b8be00adfa90c9671bcc71df52d1154e4aeecd2d511d4e5ab7c1e9e0e
MD5 ff0b31e778ad385acf794a2291d5ff8a
BLAKE2b-256 028d57833b0e332c4fa7e064a55a6ae833a9af1bb06419494accc9cf2957868a

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