A really good chat application for teams and communities, free and easy to self-host, with cloud hosting available soon.
This repository temporarily incubates the early Authling identity-provider module. Authling is developed and released independently from Chatto and is intended to move to its own repository once it no longer needs frequent atomic changes with the shared event-sourcing framework, embedded NATS runtime, data-cryptography primitives, and application-configuration loader.
Run the local Chatto backend and Vite frontend, Authling, Mailpit, and LiveKit:
mise trust
mise install
mise setup
(cd authling && mise trust && mise install && mise deps)
mise devmise dev runs the services in one supervised process group. Vite reloads
frontend changes. Restart it after you change Chatto or Authling Go code.
mise setup builds the shared API types and Lingua packages.
Portless provides HTTPS routes for browser-facing
services. In Conductor, replace <workspace> with the workspace name:
- Chatto:
https://chatto.<workspace>.localhost:42444 - Authling:
https://authling.<workspace>.localhost:42444 - Mailpit:
https://mailpit.<workspace>.localhost:42444 - LiveKit:
https://livekit.<workspace>.localhost:42444
Outside Conductor, Portless uses the local route suffix. Services listen on
loopback ports from base port 4000 (or $CONDUCTOR_PORT in Conductor).
Create an Authling account, read its verification code in Mailpit, then choose
Authling on the Chatto login screen. Chatto asks for a username at first
login. The stack also creates Chatto owner alice and member bob; both use
the development-only password foobar123.
Chatto uses Authling as its development OIDC provider. Chatto stores embedded
NATS data in cli/data/nats/ and search data in cli/data/search/. Authling
identity data is in
.context/dev-portless/<workspace>/nested/authling/.
These credentials and accounts are for local development only. Stop mise dev
to stop the services and unregister the routes. With the stack stopped, remove
cli/data/ to reset Chatto, or remove the Authling identity directory to reset
Authling. A new Conductor workspace name also creates a new Authling issuer and
state directory.
If a worktree has NATS data in the former cli/data/jetstream/ location, use
the migration steps in CONTRIBUTING.md.
Portless creates and trusts a development CA on its first run. If macOS cannot show its authorization prompt, run this command once in an interactive terminal:
mise x node@24 npm:portless@0.15.5 -- portless trustChatto is licensed under AGPL-3.0-or-later by default. The independently
versioned shared framework modules, standalone frontend, integration surfaces,
documentation, and examples use Apache-2.0. See
LICENSING.md and REUSE.toml for the exact
boundary.
The project licenses do not grant permission to use Chatto names or logos as official branding for a fork or modified version; see NOTICE.
See CONTRIBUTING.md for local development notes. This project is not accepting outside contributions at this time.
