Accessible communication, at the user's pace.
zekALS is a local-first communication application for people with ALS and others who benefit from alternative input. Compose messages using touch, a keyboard, pointer dwell, a single switch, or optional experimental webcam tracking, then speak them with a device voice or a local neural speech engine.
- Large, labeled controls, high contrast, adjustable text, pause, undo and clear feedback. Communication remains available when the camera is disconnected.
- English, French, Simplified Chinese, Italian and Sinhala packs; Greek retained. Packs include phrases, character boards, interface text and speech metadata.
- Installed offline voices by default; optional Piper neural speech. Voice/model availability varies by language; a Sinhala neural model is not bundled.
- Bounded camera processing, low/balanced/high profiles, normalized coordinates, calibration, tracking-loss cancellation and an optional dependency-free Rust filter.
- CPU-first operation on x86_64 and ARM64 systems. Optional GPU and Intel NPU provider adapters use compatible models and runtimes, with documented fallback.
- A small Node.js server, one browser origin, local processing, no required API keys, no message broadcast to other users and no privileged default container.
Install Node.js 22 or newer, then:
git clone https://github.com/Zektopic/zekals-containerized.git
cd zekals-containerized
npm ci --prefix za-frontend
npm start --prefix za-frontendOpen http://localhost:3000. The basic interface needs no Python, Rust, webcam, GPU, or internet connection after dependencies are installed. For containers:
docker compose up --build -dOpen http://localhost:8080. Camera tracking and neural speech are optional installations; follow the setup guide.
| Guide | Contents |
|---|---|
| Getting started | Native, Windows, Docker and Raspberry Pi setup |
| Accessibility | Controls, scanning, dwell and calibration |
| Speech and languages | Neural voices, IMEs and language-pack example |
| Hardware and performance | CPU/GPU/NPU matrix, profiles, limitations and measurements |
| Architecture | Services, protocol, data flow and native boundary |
| Security and privacy | Trust boundaries, deployment and reporting |
| Development | Tests, dependencies, contribution and release process |
| Troubleshooting | Camera, speech, access and installation problems |
| Migration | Changes from the original intern-project version |
| Roadmap | Review sequence and future improvements |
| Validation | What was tested and what still needs devices/users |
The native Android companion is zekals-android, with its own C++/JNI input processing, offline speech and documentation.
This modernization provides an engineering foundation requiring real-user and physical-device validation; webcam tracking is experimental. Automated accessibility checks do not establish complete accessibility conformance. GPU/NPU compatibility is conditional, and performance on every device is not guaranteed. The measured Rust FFI filter did not improve this host's per-sample latency; see the recorded benchmark.
Code is available under the MIT License. Dependencies, model files and voices retain their own licenses; see third-party notices.
