@peloruslabs/station-core
v0.6.0
Published
Host-agnostic boat-brain engines (anchor watch) — pure TypeScript, no Node/React Native dependencies
Readme
@peloruslabs/station-core
Host-agnostic marine engines for the Aelos boat brain. The anchor-watch engine is the first engine to live here: it decides when a vessel has dragged anchor, and it keeps the swing trail that gets drawn on screen.
The package is pure TypeScript — no Node and no React Native dependencies. zod is
the single runtime dependency, declared as a peer dependency so the host application owns
the version. The same code therefore runs inside a mobile app, on a server, or on a small
onboard computer such as a Signal K installation.
Pre-release and unpublished. Nothing here is on npm yet, and the public API is expected to change without notice. See
docs/api-pass-notes.mdin the repo root for the API cleanup that is deferred until the first publish.
Quickstart
npm install @peloruslabs/station-core zodimport { arm, onFix, onTick, watchConfigSchema, type Fix } from '@peloruslabs/station-core';
// Drop the hook: parse the config so the tuning defaults get filled in.
const config = watchConfigSchema.parse({
anchor: { lat: 47.6, lon: -122.3 },
radiusM: 40,
});
let state = arm(config, Date.now());
// Feed each GPS fix as it arrives; the returned state carries the phase.
const fix: Fix = { point: { lat: 47.6004, lon: -122.3 }, accuracyM: 5, atMs: Date.now() };
state = onFix(state, fix, fix.atMs);
// Tick on a timer too, so a feed that goes quiet can raise 'gps-degraded'.
state = onTick(state, Date.now());
if (state.phase === 'alarm') {
// …wake the skipper.
}The engine is pure and synchronous: every function takes the current state plus the current time and returns the next state — the host owns the clock, the GPS feed, and the alarm. Distances are metres, angles are degrees, and times are epoch milliseconds throughout; the engine never converts for display.
Docs and license
See the repo root for full docs, the monorepo layout, and the development gate. Apache-2.0. Copyright 2026 Pelorus Labs LLC.
