Skip to content

Latest commit

 

History

1,558 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CI Release Latest release License: AGPL-3.0-or-later with Apache-2.0 exceptions

Chatto

It's Chatto!

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.

Local Development Stack

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 dev

mise 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 trust

License

Chatto 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.

Contributing

See CONTRIBUTING.md for local development notes. This project is not accepting outside contributions at this time.

About

A fully-featured team and group chat application that you can easily selfhost.

Topics

Resources

Contributing

Security policy

Stars

2.7k stars

Watchers

11 watching

Forks

Releases

Packages

Contributors

Languages