WellSaid helps you communicate with more empathy and clarity by offering iMessage conversation summaries and tone-based reply suggestions.
git clone https://github.com/splinesreticulating/WellSaid.git
cd WellSaid
yarn install
yarn prepare
cp .env.example .env
Update the values in the .env
file. The following variables are needed:
Logging
LOG_LEVEL
: Logging level (info, debug, warn, error)Remote Access
ALLOWED_HOST
: For remote access via Tailscale (see 'Accessing from Anywhere' below) -- leave blank or set to 'all' if you don't need access from outside your local networkSecurity
APP_USERNAME
: A name of your choosingAPP_PASSWORD
: A passowrd of your choiceJWT_SECRET
: A big, long, hard, random, and unpredictable string.
You can generate one using OpenSSL with the following command in your terminal:openssl rand -base64 64
JWT_SECRET
in your .env
file. Ensure it's on a single line.yarn dev
The server will run over HTTP by default. If you place cert.pem
and
key.pem
in a .certs
directory at the project root (see the HTTPS section
below), it will automatically use those files and start with HTTPS. Pretty cool.
WellSaid connects to your macOS Messages database to fetch your conversations with a specific contact (set via the PARTNER_PHONE
environment variable). It then uses an AI provider (any combination of OpenAI, Anthropic, Grok, and/or Khoj) to analyze the conversation and generate:
# Install dependencies first
yarn install
yarn prepare
# Run in development mode with hot-reloading
yarn dev
# Lint code
yarn lint
# Format code
yarn format
# Build optimized version
yarn build
# Run the optimized build locally
yarn preview
# Run tests
yarn test
# Run tests with watch mode
yarn test:watch
# Run tests with coverage report
yarn test:coverage
Note: Since this application only runs on macOS and accesses local system resources, there is no traditional "production deployment" - the built version is simply run locally on your Mac. The yarn build
and yarn preview
commands create and run an optimized version that may provide better performance than development mode.
If you'd like to securely access WellSaid remotely, use Tailscale to set up a secure private network that connects your devices.
Once your Tailscale network is set up, all that's required in the app is that you set the ALLOWED_HOST
variable in your .env
file to the address provided by Tailscale. For more details, visit Tailscale's documentation.
To make your WellSaid app look great when saved to your iPhone's Home Screen, iOS requires a valid HTTPS certificate. This step is optional—if you just want to run the app locally in a browser, you can skip it and use plain HTTP.
brew install mkcert
mkcert -install
mkcert <your-tailscale-hostname>.<tailscale-subdomain>.ts.net localhost
This will create a cert/key pair like rootCA.pem
and rootCA-key.pem
.
Move the generated certificate files into a .certs
directory at the project
root so the development server can automatically find them.
openssl x509 -inform PEM -in "$(mkcert -CAROOT)/rootCA.pem" -outform DER -out mkcert-rootCA.cer
mkcert-rootCA.cer
file to your iPhoneNow when you visit your app over HTTPS (via Safari), iOS will trust the cert, and your manifest and icon will load properly — giving your app a real custom icon when added to the Home Screen.
PARTNER_PHONE
in your .env
file.
Desktop![]() |
Mobile![]() |
Feel free to submit a pull request or open an issue if you find a bug or have a feature you'd like to add.
This project is licensed under the MIT License. See?