{"id":51671529,"url":"https://github.com/chattocorp/chatto","last_synced_at":"2026-08-03T05:00:56.145Z","repository":{"id":365455987,"uuid":"1205013299","full_name":"chattocorp/chatto","owner":"chattocorp","description":"A fully-featured team and group chat application that you can easily selfhost.","archived":false,"fork":false,"pushed_at":"2026-07-29T20:10:14.000Z","size":25359,"stargazers_count":2414,"open_issues_count":231,"forks_count":107,"subscribers_count":7,"default_branch":"main","last_synced_at":"2026-07-29T20:10:23.324Z","etag":null,"topics":["chat","communication","gdpr-compliant","privacy-first","screensharing","video-calls","voice-calls"],"latest_commit_sha":null,"homepage":"https://chatto.run","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chattocorp.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null,"disclosure":null}},"created_at":"2026-04-08T14:50:12.000Z","updated_at":"2026-07-29T20:07:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"9bb40982-4561-42b9-9993-9b4a60f9d8f6","html_url":"https://github.com/chattocorp/chatto","commit_stats":null,"previous_names":["chattocorp/chatto"],"tags_count":115,"template":false,"template_full_name":null,"purl":"pkg:github/chattocorp/chatto","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chattocorp%2Fchatto","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chattocorp%2Fchatto/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chattocorp%2Fchatto/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chattocorp%2Fchatto/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chattocorp","download_url":"https://codeload.github.com/chattocorp/chatto/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chattocorp%2Fchatto/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36218648,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-03T02:00:06.975Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chat","communication","gdpr-compliant","privacy-first","screensharing","video-calls","voice-calls"],"created_at":"2026-07-15T01:00:33.678Z","updated_at":"2026-08-03T05:00:56.140Z","avatar_url":"https://github.com/chattocorp.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"[![CI](https://github.com/chattocorp/chatto/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/chattocorp/chatto/actions/workflows/ci.yml?query=branch%3Amain)\n[![Release](https://github.com/chattocorp/chatto/actions/workflows/release.yml/badge.svg)](https://github.com/chattocorp/chatto/actions/workflows/release.yml)\n[![Latest release](https://img.shields.io/github/v/release/chattocorp/chatto?include_prereleases\u0026sort=semver)](https://github.com/chattocorp/chatto/releases)\n[![License: AGPL-3.0-or-later with Apache-2.0 exceptions](https://img.shields.io/badge/license-AGPL--3.0--or--later%20with%20Apache--2.0%20exceptions-blue.svg)](LICENSE)\n\n# Chatto\n\n\u003cp\u003e\u003cimg width=\"1920\" height=\"1196\" alt=\"It's Chatto!\" src=\"https://github.com/user-attachments/assets/a6a8ef8c-9f56-48ed-8740-53115273c22e\" /\u003e\u003c/p\u003e\n\nA really good chat application for teams and communities, free and easy to self-host, with [cloud hosting available soon](https://chatto.run/cloud).\n\n- [Website](https://chatto.run)\n- [Documentation](https://docs.chatto.run)\n- [Official Chatto Community](https://chat.chatto.run/)\n- [Releases](https://github.com/chattocorp/chatto/releases)\n- [Security Policy](SECURITY.md)\n- [Contributing](CONTRIBUTING.md)\n\nThis repository temporarily incubates the early\n[Authling](authling/README.md) identity-provider module. Authling is developed\nand released independently from Chatto and is intended to move to its own\nrepository once it no longer needs frequent atomic changes with the shared\n[event-sourcing framework](pkg/events/README.md),\n[embedded NATS runtime](pkg/natsruntime/README.md),\n[data-cryptography primitives](pkg/datacrypto/README.md), and\n[application-configuration loader](pkg/appconfig/README.md).\n\n## Complete Local Stack\n\nThe root [`compose.yml`](compose.yml) runs Chatto, Authling, Mailpit, LiveKit,\nStorybook, and the Chatto docs website together on\n[OrbStack](https://docs.orbstack.dev/docker/domains). It builds every\nrepository-owned service from the current checkout, gives Chatto and Authling\nseparate persistent embedded-NATS storage, and configures Chatto to use\nAuthling as an OpenID Connect provider through Chatto's public Client ID\nMetadata Document, without preregistering Chatto in Authling. Compose derives\nthe project name from the checkout directory, keeping containers and OrbStack\ndomains isolated between worktrees.\n\n```sh\ndocker compose up --build\n```\n\nFor a checkout in a directory named `\u003cproject\u003e`, open these OrbStack-managed\nHTTPS origins:\n\n- Chatto: `https://chatto.\u003cproject\u003e.orb.local`\n- Authling: `https://authling.\u003cproject\u003e.orb.local`\n- Mailpit: `https://mailpit.\u003cproject\u003e.orb.local`\n- LiveKit signaling: `https://livekit.\u003cproject\u003e.orb.local`\n- Storybook: `https://storybook.\u003cproject\u003e.orb.local`\n- Docs website: `https://docs-website.\u003cproject\u003e.orb.local`\n\nCreate an Authling account, read its verification code in Mailpit, then choose\n**Authling** on Chatto's login screen. Chatto asks for a username on the first\nlogin because Authling's initial OIDC profile intentionally shares only its\nstable account ID. The stack also bootstraps a Chatto owner named\n`compose-admin` with the development-only password `compose-admin`.\n\nAfter login, select the cloud button below the server list. Authling asks for\nseparate permission to read and write account data. The cloud turns green when\nthe TinyBase connection is active. Chatto then stores the public server list in\nAuthling. Server URLs, names, icons, and registration times synchronize; Chatto\nlogin tokens and user details stay only in that browser. The frontend shows a\ntrusted Authling sign-in action and can use the resulting browser session to\nstart login on Chatto servers that advertise the same issuer. The frontend and\neach Chatto server still receive separate tokens and scopes.\n\nThe frontend reads its Authling issuer from `/client-config.json`. The Compose\nstack sets `CHATTO_FRONTEND_AUTHLING_ISSUER`, so the bundled Chatto server\npublishes that document and a separate frontend CIMD identity automatically.\nA standalone web, desktop, or mobile client can publish or inject the same\nversioned JSON contract from its own trusted application origin.\n\nThe checked-in credentials and bootstrap account are for local development\nonly. Stop the stack with `docker compose down`; add `--volumes` to delete both\nproducts' data and establish a fresh Authling issuer on the next start. The\nstack relies on OrbStack's default Compose domains, automatic HTTPS proxy, and\ncontainer CA installation; it is not a production deployment example.\n\n## License\n\nChatto is licensed under `AGPL-3.0-or-later` by default. The independently\nversioned shared framework modules, standalone frontend, integration surfaces,\ndocumentation, and examples use Apache-2.0. See\n[LICENSING.md](LICENSING.md) and [REUSE.toml](REUSE.toml) for the exact\nboundary.\n\nThe project licenses do not grant permission to use Chatto names or logos as\nofficial branding for a fork or modified version; see [NOTICE](NOTICE).\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for local development notes. This project is **not accepting outside contributions** at this time.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchattocorp%2Fchatto","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchattocorp%2Fchatto","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchattocorp%2Fchatto/lists"}