HUDSONKIT
01HEROTitleGeneral ArrangementSheet01 / 07
HudsonKit / open-source workspace framework / v0.4.2

A workspace framework,
drawn to spec.

Hudson is the chrome your apps share — nav, panels, command palette, status bar, voice. Declare what your app is; the framework renders it on iOS, macOS, and the web from the same source.

View source · GitHub
Surfaces
0
iOS · macOS · Web
Primitives
0
Frame · Nav · Panel · Status · Canvas · Palette · Drawer · Assistant
Apps live
0
Talkie · Scout · Linea · Lattices · Vox
License
MINE
ask me nicely
200pt LEAD
FIG. 01-A · LIVE EMBEDworkspace = self · installs 2,847 ·  stars 1,217
① capability map② command dock③ status bar④ canvas · pan/zoom
HUDSONKIT
02LIVE WORKSPACETitlePossession Mode — Live EmbedSheet02 / 07
02 / Live Embed · spec ↔ live

The component below is a Hudson embed.

The same workspace shell twice. Mock: a stripped-down schematic — same design language, same colors, no recreated content. Live: the real primitives, rendered from the SDK. Same chrome any Hudson app inherits.

FIG. 02 · LAYOUT
FIG. 02-A · MOCK · the spec, drawn
FIG. 02-B · LIVE · the spec, running
① CAPABILITY MAP② COMMAND DOCK③ STATUS BAR④ CANVAS · pan/zoom
Param
Value
NAV.HEIGHT
48 px
PANEL.WIDTH
280 px
STATUS.HEIGHT
28 px
ACCENT
var(--accent)
INTENTS
16 indexed
COMMANDS
45 live
LATENCY
< 80 ms (vox→cmd)
SURFACES
iOS · macOS · Web
THEME
hudson · dark
VERSION
v0.4.2

Note. Every parameter on this sheet is read from the same manifest.ts the embedded workspace consumes.

Parts list · build sequence
01
DECLARE

A typed object names your app.

id, mode, intents, ports — Hudson reads it like a blueprint.

02
WIRE

Intents become voice + ⌘K.

Each entry is indexed for fuzzy match, hotkeys, and the assistant.

03
COMPOSE

Drop in primitives.

Frame, Nav, Panel, Canvas, Status — same chrome every app inherits.

04
SHIP

Three surfaces, zero forks.

iOS through TestFlight, macOS notarized, Web via CDN. One command.

HUDSONKIT
02½THE PLOTTERTitleDrafting Plotter — HP-7475A EMUSheet02½ / 07
Interactive · 02½

Type a phrase. Watch it draw.

A virtual pen plotter renders your words in single-stroke drafting type, then dimensions the result like an engineering specimen. Download the SVG and use it however.

PLOT · LIVE · 0%PEN DOWN · DRAWING
HUDSONKIT · DRAFTING PLOTTER · HP-7475A EMUSCALE 1:1 PEN 0.90MM N=161922 mm272 mmSTROKE: 0.30 mm · ISO 3098PLOT · PHRASE SPECIMENDRAWNHUDSONSHEETP-001 / 01
TRAVEL
000 / 100
HUDSONKIT
03VOICE LOOPTitleVoice → Intent → CommandSheet03 / 07
03 / Voice loop · sub-80ms

Speak. The chrome understands.

Every intent you declare is searchable — by keystroke, by ⌘K, and by voice. Hudson handles the loop: capture, transcribe, match, dispatch. Your app gets a typed call.

EMBED · app = hudson/voice · status: live
Stage
Primitive
CAPTURE
useVoiceInput
TRANSCRIBE
voxProbe · stt
MATCH
IntentIndex
CONFIRM
Assistant
DISPATCH
command.run
REPLY
voiceReply
What it gives you
⌘K
Command palette

Every intent fuzzy-searched. Open with ⌘K, type three letters, hit return.

🎤
Voice

Tap-and-hold or hotword. Same intents, no extra wiring per surface.

Replies

Assistant reads the result back if the intent declares a voice reply.

HUDSONKIT
04MULTI-SURFACETitleOne Manifest, Three SurfacesSheet04 / 07
04 / Multi-surface

Write once. Render on iOS, macOS, and the Web.

FIG. 04-A · ASSEMBLY
SOURCE · manifest.ts
const app: HudsonApp = {
id: "talkie",
mode: "canvas",
intents: [12],
surfaces: [
"ios",
"macos",
"web",
],
};
iOS
TestFlight · App Store
macOS
notarized · DMG
Web
CDN · PWA
390 × 844
@3x
1024 × 768
window
fluid
@1x → ∞

Same primitives, same intents, same chrome dimensions across every target. Hudson swaps the platform layer underneath — Swift on Apple, React on the web — but the components your app declares are identical. Zero forks. Zero "iOS-only" features. Zero per-platform UI debt.

SHIP COMMAND
$ 
HUDSONKIT
05APPS GALLERYTitleApps Built on HudsonSheet05 / 07
05 / Apps gallery · in production

Four apps,
one kit.

Each ships independently — its own brand, its own scope, its own audience. They share Hudson the way print designers share a type system: identical bones, distinct identities.

T
ios · macos
01

Talkie

Voice notes, transcribed.

A canvas of audio clips. Long-press to record, drag to arrange, ⌘K to find anything you said three weeks ago.

view source▸ open
S
macos · web
02

Scout

Field notes that file themselves.

TODO — replace with the real Scout pitch.

view source▸ open
L
macos · web
03

Linea

A line, finely drawn.

TODO — replace with the real Linea pitch.

view source▸ open
L
macos
04

Lattices

Structure, made visible.

TODO — replace with the real Lattices pitch.

view source▸ open
HUDSONKIT
06PRIMITIVESTitlePrimitives — Reference SheetSheet06 / 07
06 / Primitives · the kit

The whole kit, itemized.

Eight components do every job. They compose, they nest, and they obey the same dimensions on every surface. If you've used one Hudson app, the rest are already familiar.

<Frame/>
100% × 100%

Chrome root. Hosts nav, panels, canvas, status.

<NavigationBar/>
h: 48 px

Crumbs, ⌘K, install. Always pinned to top.

<SidePanel/>
w: 280 px

Manifest, inspector, file tree. Either side.

<Canvas/>
fluid

Pan/zoom workspace. Floating windows live here.

<StatusBar/>
h: 28 px

Live runtime: uptime, intents, logs, version.

<CommandPalette/>
⌘K · 480 px

Fuzzy-searches every intent. Voice + keys.

$
<TerminalDrawer/>
h: 0 / 240px

Slide-up shell. Natural-language → bash.

<Assistant/>
overlay

AI primitive. Reads capability map, dispatches commands.

HUDSONKIT
07QUICKSTARTTitleQuickstart — End SheetSheet07 / 07
07 / Quickstart · the page turns

End of our drawing. Start of yours.

Seven sheets in, you’ve seen the shape of a Hudson app: manifest, primitives, voice loop, the whole drawing set. Now the drawing ends and the build begins. Three commands and the docs are waiting.

01INSTALL
$ bun add hudsonkit

One package. SDK, primitives, and voice in the same import surface.

02SCAFFOLD
$ hudson new my-app

Manifest, app folder, primitives wired up. Ready to run.

03RUN
$ bun dev

Your standard dev server. Hudson runs alongside whatever you already use.

EMBED · app = hudson/docs · status: live
⸻ Last sheet · first commit

Build software the way you'd draw it.