Connected console action
The console example is the maintained minimal end-to-end proof. It starts the three server roles from one in-memory component set, launches a TypeScript console runtime, sends a custom action, verifies the full retained result, and shuts everything down.
Prepare and run
From the repository root on Windows:
bootstrap.cmd --core
serverCheetah\venv\Scripts\python.exe cheetahClient\examples\console-client\connected_smoke.py
On macOS or Linux:
./bootstrap.sh --core
serverCheetah/venv/bin/python cheetahClient/examples/console-client/connected_smoke.py
The successful report includes status ok, logical client console_minimal_smoke, a generated command ID, terminal kind result, and the original minimal-connected probe in the retained parameters.
What belongs to Cheetah
The host composition, client identity and connection, command envelope, dispatch, ACK, returned-data ingestion, deduplication, correlation, history, and shutdown path exercise Cheetah responsibilities.
The example_info handler is product code. It returns the received parameters and current working directory only to make the cross-process result easy to recognize. It is not a built-in remote action.
The smoke verifies history after correlation resolves. This is intentional: the waiter carries terminal metadata, while the retained message carries the handler payload. An implementation that wakes the caller but loses the full result should not pass.
Explore the client without a backend
The console example package also contains two constructor and wiring examples:
cd cheetahClient\examples\console-client
npm run smoke:headless
npm run smoke:interactive
The headless runtime uses @cheetah/console. The interactive runtime adds @cheetah/console-tui, typed modes, menu registration, and local command dispatch. These checks do not open a socket and therefore do not replace the connected proof.
For a real run against an already running compatible server:
npm run start:headless
npm run start:interactive
The examples read CHEETAH_SERVER_URL, CHEETAH_AUTH_TOKEN, CHEETAH_REST_ENDPOINT, and CHEETAH_TRANSPORT_SECURITY_MODE. Their defaults are for controlled localhost development.
Add a product action safely
Register the new handler and descriptor before runtime startup. Define a narrow argument schema, apply client-local policy, return a structured payload, and preserve stable error codes. Change the Python command to call that action, then keep the assertion over retained history.
If the action reads files, starts processes, or changes the machine, make the authority and target explicit. Do not inherit the permissive nature of an informational example simply because both run in the console package.
What not to copy into production
The smoke uses loopback plaintext transport under debug_insecure, a fixed development key, in-memory state, and temporary listeners. It contains no production identity provider, administrative interface, durable store, Redis coordination, rate policy, monitoring backend, or deployment edge.
Its value is the opposite of a deployment template: it isolates the irreducible connected journey so later compositions have a stable proof to preserve.
Preserve this proof as the system grows
Adding a browser client, product UI, Redis coordination, or an optional service should not invalidate this basic assertion: addressed work reaches one eligible runtime, the runtime returns an honest terminal outcome, and the application can read the retained payload. Keep a similarly small connected smoke beside larger product tests. It localizes failures that a many-panel integration environment can otherwise hide.
The next journey adds different client environments while preserving the same identity, authority, command, and result vocabulary.