Naar de inhoud

Software die we zelf bouwen en zelf draaien.

Virtunet maakt drie producten. Phaeton laat een laadpaal laden op zonne-overschot van een Victron-systeem. OuterScope bewaakt wat er van uw organisatie publiek bereikbaar is. Tyrum is een AI-agent met een eigen computer.

Energie
Victron, EV-laden
Security
DNS, TLS, e-mail
AI
Agents, MCP
Gebouwd in
Rust, TypeScript, Go
drie producten (voorbeeld)start
phaetonouterscopetyrumlaadpaalphaetonvictron gx, vrmuw domeinscannersbevindingenopdrachtagenteigen machine
$ phaeton status
pv-overschot 5,2 kW, laadstroom 7,5 A per fase  laden
$ outerscope scan voorbeeld.nl
dns ok, tls ok, dmarc p=none  1 bevinding
$ tyrum
4 stappen, 1 keer toestemming gevraagd  klaar
Voorbeeldwaarden, geen live data.

Wat we bouwen.

Drie producten, elk in een eigen domein.

In productie

rust, victron venus os, modbus tcp, mqtt

Phaeton

Laat een gangbare laadpaal werken als Victron EV Charging Station, voor laden op zonne-overschot. Draait lokaal op het Victron GX-apparaat.

In productie

rust, next.js, postgresql, nats, kubernetes

OuterScope

Bewaakt het publieke aanvalsoppervlak: DNS, TLS, HTTP, e-mail en cloudopslag, met heldere bevindingen en begeleide melding. Als SaaS, met een gratis abonnement.

Bèta

typescript, next.js, go, firecracker, kubernetes, mcp

Tyrum

Een AI-agent met een eigen computer: werkt door terwijl u weg bent, vraagt toestemming voor wat ertoe doet en legt elke stap vast.

Zo bouwen we.

Drie producten in drie domeinen, met dezelfde uitgangspunten. Hiernaast een stukje Phaeton, vereenvoudigd.

Lokaal waar het kan
Phaeton stuurt de laadpaal vanaf het eigen Victron-systeem, niet vanuit een cloud.
Eerst verifiëren
OuterScope meldt een risico pas als het bevestigd is, met het bewijs erbij.
De mens beslist
Tyrum vraagt toestemming voordat het iets doet dat ertoe doet.
Alles vastgelegd
Laadsessies, scans en agentstappen worden gelogd: achteraf is te zien wat er gebeurde en waarom.
phaeton/src/controls/core.rsrust, vereenvoudigd
// Vereenvoudigd uit Phaeton: van zonne-overschot naar laadstroom.
// Draait elke paar seconden op het Victron GX-apparaat.

const NOMINAL_VOLTAGE: f32 = 230.0;

/// Overschot = opwek min verbruik, gedempt zodat een
/// voorbijtrekkende wolk de laadpaal niet laat pendelen.
fn smoothed_excess(raw_w: f32, previous_w: f32, alpha: f32) -> f32 {
    (alpha * raw_w + (1.0 - alpha) * previous_w).max(0.0)
}

/// Laadstroom per fase. Onder de minimumstroom van de auto
/// liever niet laden dan stroom van het net trekken.
fn auto_amps(excess_w: f32, phases: u8, min_a: f32, max_a: f32) -> f32 {
    let phases = phases.clamp(1, 3) as f32;
    let amps = excess_w / (phases * NOMINAL_VOLTAGE);
    if amps < min_a { 0.0 } else { amps.min(max_a) }
}

AI uitgelegd, zonder marketing.

Dertien artikelen over machine learning, LLM's, RAG en agents. Over de concepten, niet over het model van deze maand.

Alle artikelen

Eerder gebouwd.

Voordat we ons op eigen producten richtten, bouwden we voor klanten. Die ervaring zit in de producten.

Alle cases

Een vraag? Stel hem hier.

Alles loopt via e-mail. Stuur een bericht via het formulier; u krijgt binnen twee werkdagen antwoord.

Liever direct mailen? info@virtunet.io