Skip to content
sonnesPublic

About

A communication assistant for people living with neurodegenerative conditions like ALS, MND, or other speech & motor difficulties.

Resources

Stars

5 stars

Watchers

1 watching

Forks

Repository files navigation

September

September is an assistive communication app for people with ALS, MND, or other speech and motor difficulties. It helps a user express a full thought with fewer keystrokes.

The Talk screen of a space named Family. Six spoken messages sit above a row of pinned phrases and suggested words, and a composer with a Speak button.

The screenshots on this page show the browser app with sample data.

Applications

September contains three applications:

  • apps/web is the browser application.
  • apps/desktop is the Tauri application for macOS.
  • apps/keyboard is the native floating keyboard for macOS.

The web and desktop applications import the same rules, autocomplete engine, design system, and application screens from the root workspace packages. Each app keeps its own route bootstrap and platform services. The web app also has a public landing page at /.

The web app stores data and its bounded speech cache in one IndexedDB database. The desktop app stores domain data in SQLite and provider keys in the macOS Keychain.

Features

  • Talk spaces combine saved phrases, word suggestions, and a text composer.
  • A suggestion row can start with the typed words or contain them. The Mac app shows Talk in one panel that floats above other apps.
  • Each space has an Agent that can read its context and propose approved changes to its setup, notes, phrases, and Talk transcript.
  • System and ElevenLabs voices speak Talk messages and notes.
  • The ElevenLabs Dialogue voice reads audio tags such as [laughs]. Five mood keys set the tone of the suggestions.
  • Notes store prepared long-form text inside a space.
  • A note presents full-screen in the user's voice, and exports as text, audio, or a captioned video.
  • Phrase codes expand short input into a full phrase.
  • Local usage reports show saved keystrokes and provider use.
  • AI Assistance uses one provider. Suggestions have their own model. The agent and phrases share a second model.
  • Separate switches control automatic AI suggestions, phrase generation, and the agent. AI suggestions wait for a space or punctuation.
  • A portable JSON backup moves settings and data between the browser and Mac apps.
  • ElevenLabs can create a cloned voice from browser or desktop recordings.
  • Help groups step-by-step guidance by task, searches the shared guide catalog, and labels each guide for the browser, Mac app, or Mac keyboard.

Help remains available before setup is complete. The setup screen opens its guide inline, while /help and each stable guide link open the full Help screen.

Screens

A note holds prepared long-form text inside a space. The same words read aloud, present, or export.

A note named Thursday appointment, open in the note editor. Read aloud, Present, and Export buttons sit at the top, and the other notes of the space sit in a row under the text.

Present fills the screen with one chunk of the note at a time and speaks it in the user's voice.

A presented note on a full indigo screen. One sentence reads, in large white type, "Seventy years, and she still gets to the kitchen before anyone else is awake."

Today reports the typing the app saved and what the services cost. The numbers stay on the device.

The Today screen. Efficiency reads 66 percent less typing this week, beside 508 keystrokes saved and 12 messages spoken. Service use reads 6 cents across 16 requests.

Requirements

  • Node.js 20 or later
  • pnpm
  • Rust and the Tauri system requirements for desktop builds
  • Swift 6 and Xcode command-line tools for the native keyboard

Install

Install the JavaScript workspace from the repository root:

pnpm install

The web app does not use environment variables for provider keys. Add OpenRouter or ElevenLabs keys in the application settings.

Develop

Start the browser application:

make dev

The application opens at http://localhost:3009.

Start the desktop application:

make desktop-dev

Start the native keyboard:

make mac-run

Build its signed app bundle or installable DMG:

make mac-app
make keyboard-dmg

The keyboard uses the bundle identifier com.september.keyboard. The DMG is written to apps/keyboard/.build/release/Keyboard.dmg.

Release the desktop app

Store the Apple signing values in the ignored root .envrc file:

export APPLE_TEAM_ID=...
export APPLE_SIGNING_IDENTITY=...
export APPLE_PROVISIONING_PROFILE=...
export APPLE_API_ISSUER=...
export APPLE_API_KEY=...
export APPLE_API_KEY_PATH=...

Create the signed desktop installer from the repository root:

make desktop-release

The command builds the app and DMG, submits both to Apple, staples the tickets, checks the DMG with Gatekeeper, and prints its path and SHA-256 checksum.

Project structure

september/
├── apps/
│   ├── web/            Vite browser SPA and native IndexedDB repository
│   ├── desktop/        Vite UI, Tauri shell, Rust commands, and SQLite
│   └── keyboard/       Native macOS floating keyboard
├── packages/
│   ├── core/           Pure rules and autocomplete
│   ├── ui/             Shared tokens and generic UI primitives
│   └── app-ui/         Shared layouts, blocks, and application screens
└── docs/               concepts, plans, research, notes, and screenshots

Read the instruction file in an application directory before you change that application. JavaScript dependencies use the root lockfile. Commands can still run from an app directory.

Web data migration

The web app deploys to Vercel through .github/workflows/production.yaml. The former server module and its Makefile deployment commands have been removed. Removing local code does not decommission previously deployed infrastructure.

The public /privacy-policy and /terms-of-service pages cover the supplied applications. They describe September as a personal open-source project in India. The terms follow the MIT License, and the privacy notice explains the actual data flows. See apps/web/src/pages/legal.tsx and docs/research/2026-09-05-india-legal-review.md.

The browser app imports the old web databases one time. It validates the imported rows before it removes the old databases and local-storage keys.

If another tab blocks database removal, close the old tab and start September again. The next start retries removal without another import.

Tests

Run the checks from the application directory:

pnpm -C apps/web test
pnpm -C apps/web lint
pnpm -C apps/web build

pnpm -C apps/desktop test
pnpm -C apps/desktop build

make mac-test

Tests cover current behavior at module boundaries. They do not pin page copy, visual styling, or the absence of retired code.

License

September uses the MIT License. See LICENSE.

About

A communication assistant for people living with neurodegenerative conditions like ALS, MND, or other speech & motor difficulties.

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages