HAUSE

Terminal

A query surface whose chrome is the form and whose meaning is one executor.

OPERATE THE FORM
01 / THE ENCOUNTERAN INSTRUMENT — THE READER OPERATES

A STUDY IN TERMINAL

A question becomes an operation.

Type into the working HAUSE terminal. Its visible response belongs to the executor, not to decorative command-line chrome.

THE LIBRARY — A SPECIMEN SHELL

A terminal is chrome plus an executor. The executor is the argument.

Connected — the HAUSE library · 35 forms · read from the manifest

The executor derives from manifest.ts — the same index the holdings page reads

Type HELP, or start with SHOW FORMS;

hause>

The form owns the banner, scrollback, prompt, seed chips, CLEAR, and the sounds. The meaning — what a line does — is one function passed in by the page, so the language's discipline lives in exactly one place. On vindex3.org the same form fronts a live public query endpoint; here it browses this library.

Promoted from vindex3.org's Explorer. The refusal seed is deliberate: try DELETE.

This is the existing connected terminal, with its supported commands and source-backed responses—not a simulated shell.

INSPECT THE REUSABLE LIBRARY COMPONENT

THE LIBRARY — A SPECIMEN SHELL

A terminal is chrome plus an executor. The executor is the argument.

Connected — the HAUSE library · 35 forms · read from the manifest

The executor derives from manifest.ts — the same index the holdings page reads

Type HELP, or start with SHOW FORMS;

hause>

The form owns the banner, scrollback, prompt, seed chips, CLEAR, and the sounds. The meaning — what a line does — is one function passed in by the page, so the language's discipline lives in exactly one place. On vindex3.org the same form fronts a live public query endpoint; here it browses this library.

Promoted from vindex3.org's Explorer. The refusal seed is deliberate: try DELETE.

02 / THE DECISION

An act.
Not a container.

YOU ARE SHOWING WHAT SOMETHING IS MADE OF

Letting the reader query something real.

Is there an executor behind this, answering for real? A recording of a terminal is a Film.

EXPLORE THE SELECTION GRAMMAR ↗

What is the Terminal form in HAUSE, and when do you use it?

The Terminal form is a HAUSE instrument — a query surface whose chrome is the form and whose meaning is one executor. The form is the chrome: banner, scrollback, prompt, input, seed chips, a CLEAR control, toned lines, the hause sounds. What the terminal *means* lives entirely in the caller's `execute` — a function from one typed line to lines out, sync or async. The form never interprets a statement itself, so whatever discipline governs the language (an allowlisted AST, a server-side capability profile) stays in exactly one place: the executor.

origin — vindex3 · the Explorer · 2026-08-29

THE LIBRARY’S OWN ACCOUNT

Behind the form.

components/forms/Terminal.tsx

The form is the chrome: banner, scrollback, prompt, input, seed chips, a CLEAR control, toned lines, the hause sounds. What the terminal *means* lives entirely in the caller's `execute` — a function from one typed line to lines out, sync or async. The form never interprets a statement itself, so whatever discipline governs the language (an allowlisted AST, a server-side capability profile) stays in exactly one place: the executor.

Promoted from vindex3.org's Explorer ("psql, for a model"), where the executor is a live public query endpoint with an offline snapshot fallback. `sessionKey` supports that shape: when it changes, the scrollback resets to the current `banner`, so a transport change reads as a new connection rather than a spliced history.

The text fallback discipline holds: pass `fallback` — the plain sentences that survive with the interaction removed.

THE INSTRUMENT’S DISCIPLINE

Every instrument carries an always-present text fallback, so the point survives with the interaction removed — for reduced motion, for no-JS, for a crawler, and for anyone in a hurry. ARIA state is part of the form, because an agent browser reads aria-pressed and aria-expanded to understand what it is looking at.

03 / MAKE SOMETHINGINSTALL HAUSE ↗

Give it your subject.

The opening study is an authored demonstration, not an additional component API. Expand the library specimen above to inspect the reusable form. Its props below come directly from the source.

REACT · Terminal

import { Terminal } from "@chrishayuk/hause/components/forms/Terminal";

export type TerminalLine = {
	text: string;
	tone?: "accent" | "dim" | "err" | "ok";
	/** Renders the line as a link — the terminal's door into the rest of the site. */
	href?: string;
};

export type TerminalResult = {
	lines: TerminalLine[];
	/** A designed object rendered beneath the lines, with its RAW proof. */
	panel?: TerminalPanel;
	/** Reset the scrollback to the banner instead of appending. */
	clear?: boolean;
	/** Play the refusal sound instead of the tick. */
	refused?: boolean;
};

export function Terminal({
	kicker,
	headline,
	banner,
	prompt = ">",
	seeds = [],
	execute,
	complete,
	autorun,
	notice,
	sessionKey,
	height = 420,
	clearLabel = "CLEAR",
	fallback,
	footnote,
}: {
	/** Evidence-voice label above the instrument. */
	kicker: string;
	/** Editorial-voice line, e.g. "psql, for a model." */
	headline?: string;
	/** The lines a fresh session opens with — also what CLEAR restores. */
	banner: TerminalLine[];
	/** The prompt string, caller-owned (may change between lines). */
	prompt?: string;
	/** One-click statements rendered as chips under the terminal. */
	seeds?: string[];
	/** The meaning of the terminal: one line in, lines out. */
	execute: (line: string) => Promise<TerminalResult> | TerminalResult;
	/** Tab completion: candidate continuations for the current input. */
	complete?: (line: string) => string[];
	/** A command run once on mount — deep links into the terminal. */
	autorun?: string;
	/** Appended (not reset) when it changes — e.g. a transport coming live. */
	notice?: TerminalLine;
	/** When this changes, the scrollback resets to the current banner. */
	sessionKey?: string | number;
	height?: number;
	clearLabel?: string;
	/** System-voice sentences that survive with the interaction removed. */
	fallback?: string;
	/** Evidence-voice closing line. */
	footnote?: string;
})

The import and the complete props contract. For installation and composition, follow the Build guide.

NOT INVENTED IN ISOLATION

A page needed this.

2026-08-29 · Entered the library from vindex3 · the Explorer.

PUBLISHED 31 AUG 2026 · REVISED 9 SEP 2026 · VERSION 0.1.0

CITE

source components/forms/Terminal.tsx · origin vindex3 · the Explorer · 2026-08-29 · site build 3ee5339 · built 2026-09-09

CITE THIS

Web page · 0.1.0

Hay, C. (2026). Terminal — a HAUSE instrument. In HAUSE — a design system for AI (Version 0.1.0). hause.design. https://hause.design/forms/terminal

The specimen, the source account and the props share one form record. Cite this page or follow its source identifier to inspect the implementation.