VonNeuro
vonNeuro network · connecting a device

Connecting a device

A connected device stays in the laboratory that owns it. An agent on the adjacent computer links it to vonNeuro Messenger; a short driver declares the operations the device supports and their limits; the owner decides who may use it. Messenger provides accounts, queueing, metering and the return of results.

Node registration is reviewed: any account can register a node from My hardware, and while the hub runs on a temporary tunnel each new node is approved before it pairs. To discuss a device first, write to us.
Outbound connection only

The agent connects out to the hub over HTTPS. Nothing listens on the laboratory network and no port is opened.

Limits set by the driver

The driver checks every job before anything is driven. The hub can narrow what reaches a device, never widen it.

Access set by the owner

New devices start private. Owners share them with every account, with selected users, or with nobody, and can switch them off or disconnect at any time.

Procedure

  1. Describe the device in a driver. A short Python class lists the devices and the operations they offer, each with typed parameters and their ranges (a voltage up to 1 V, a channel from 0 to 15). Its check() rejects unsafe requests; its run() drives the hardware and writes the result files.
  2. Register and pair the computer. Sign in to Messenger, open My hardware, register the node (registration is reviewed), and obtain a one-time pairing code, which the agent exchanges for the node's own secret. The account that registers a node owns it and can add colleagues as node admins.
  3. Run the agent. The devices appear on the network with their operations. Users run them from the website, the Python lab, VS Code or their own Python, and the owner sees who ran what, for how long and with how much energy delivered.

On the computer next to the hardware

pip install https://series-marina-gigantic.ngrok-free.dev/downloads/vonneuro-node.zip   # Python 3.11+
vonneuro-node pair --hub https://series-marina-gigantic.ngrok-free.dev --code ABCD-EFGH
vonneuro-node check          # validates your driver's operations, offline
vonneuro-node run            # connects; your devices go online
vonneuro-node service install   # optional: start it at logon

The default configuration uses a simulated RC circuit, so the full job path can be tested before real hardware is attached.

Writing a driver

import json
from vonneuro_node import Driver, DeviceSpec, Operation, RunResult
import my_lab.probe_station as instrument          # your existing control code

class CrossbarDriver(Driver):
    def devices(self):
        return [DeviceSpec(slug="crossbar-8x8", name="8×8 memristor crossbar", kind="memristor",
            specs={"cells": 64, "max_voltage_v": 1.0},
            operations=[Operation("read", "Read one cell at a small voltage",
                params={"row": {"type": "integer", "minimum": 0, "maximum": 7},
                        "col": {"type": "integer", "minimum": 0, "maximum": 7},
                        "voltage": {"type": "number", "exclusiveMinimum": 0, "maximum": 0.3,
                                    "unit": "V", "default": 0.1}},
                result="read.json")])]

    def check(self, slug, operation, params, ctx):
        return None if instrument.ready() else "The probe station is busy"

    def run(self, slug, operation, params, ctx):
        current = instrument.read(params["row"], params["col"], params["voltage"])
        (ctx.output_dir / "read.json").write_text(json.dumps({"current_a": current}))
        return RunResult(exit_code=0, usage_seconds=0.2)

Set [driver] class = "your_module:CrossbarDriver" in node.toml. The agent keeps a local journal of every job it ran, independent of the hub's records.

Two example drivers come with the agent: drivers/simulated.py, the shortest starting point, and drivers/bench.py, the driver of the laboratory bench used in the worked examples. That bench is an ordinary node, paired the same way: its RC board and memristor array sit behind multiplexers, and its safety rules are written in its driver. A driver can also declare settings that node admins change from the website, a device page, and VOLT support through a single drive function.

Terms

My hardware Create an account Devices