{"id":23832066,"url":"https://github.com/linagora/tom-server","last_synced_at":"2026-04-21T10:05:52.133Z","repository":{"id":215414208,"uuid":"738873460","full_name":"linagora/ToM-server","owner":"linagora","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-10T16:01:38.000Z","size":5071,"stargazers_count":14,"open_issues_count":22,"forks_count":5,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-12-10T17:24:32.071Z","etag":null,"topics":["matrix","twake"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","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/linagora.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-01-04T08:42:00.000Z","updated_at":"2024-12-10T16:01:44.000Z","dependencies_parsed_at":"2024-04-22T14:31:04.727Z","dependency_job_id":"37a2183e-7f12-45cf-bbff-63b69b693ff5","html_url":"https://github.com/linagora/ToM-server","commit_stats":null,"previous_names":["linagora/tom-server"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linagora%2FToM-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linagora%2FToM-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linagora%2FToM-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linagora%2FToM-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linagora","download_url":"https://codeload.github.com/linagora/ToM-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232206387,"owners_count":18488512,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["matrix","twake"],"created_at":"2025-01-02T14:17:54.745Z","updated_at":"2026-04-02T00:55:09.013Z","avatar_url":"https://github.com/linagora.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Twake-Chat Matrix extension server\n\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/linagora/twake-on-matrix\"\u003e\n    \u003cimg src=\"https://github.com/artembru/ToM-server/assets/146178981/4a5da817-466f-4d4a-8804-3881b672bc42\"\u003e\n  \u003c/a\u003e\n\n  \u003cp align=\"center\"\u003e\n    \u003ca href=\"https://twake-chat.com\"\u003eWebsite\u003c/a\u003e\n    •\n    \u003ca href=\"https://beta.twake.app/web/#/rooms\"\u003eView Demo\u003c/a\u003e\n    •\n    \u003ca href=\"https://github.com/linagora/twake-on-matrix/issues\"\u003eReport Bug\u003c/a\u003e\n    •\n    \u003ca href=\"https://hosted.weblate.org/projects/linagora/twake-matrix/#repository\"\u003eTranslate Twake\u003e\u003c/a\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\n---\n\nThis repository is a multi-packages repository. See [Modules](#modules) for details.\n\n**ToM server** enhances a [Matrix Synapse server](https://github.com/element-hq/synapse) with several features:\n * first, **Tom** is a [Matrix Identity Server](https://spec.matrix.org/latest/identity-service-api/) but with additional features:\n   * inside an organization, it adds some search APIs that allows to find internal users like do the mail clients, for autocompletion for example\n   * it extends also [Matrix Identity Service](https://spec.matrix.org/latest/identity-service-api/) search responses by adding inactive users\n * it provide also an \"application service\" that allows administrator to create channels with automatic join\n * it implements also the [federated identity mechanism](https://github.com/matrix-org/matrix-spec-proposals/pull/4004) that extend the\n   [Matrix Identity Service](https://spec.matrix.org/latest/identity-service-api/) to join Matrix identity services to provide a better search\n\nHere is the architecture principle:\n\n![architecture principle](./docs/arch.png)\n\nREST API Endpoints documentation is available on https://linagora.github.io/ToM-server/\n\n## Try it yourself\n\n- [Running our Dockers](./docker.md)\n- [Deploy locally with compose](./docker.md#docker-compose)\n\n## Modules\n\n* [@twake/matrix-identity-server](./packages/matrix-identity-server):\n  [Matrix Identity Service](https://spec.matrix.org/v1.6/identity-service-api/) implementation for Node.js\n* [@twake/matrix-client-server](./packages/matrix-client-server/):\n  [Matrix Client-Server](https://spec.matrix.org/v1.11/client-server-api/) implementation for Node.js\n* [@twake/matrix-invite](./packages/matrix-invite): matrix invitation web application\n* [@twake/server](./packages/tom-server): the main Twake Chat Server, extends [@twake/matrix-identity-server](./packages/matrix-identity-server)\n* [@twake/federated-identity-service](./packages/federated-identity-service): Twake Federated Identity Service\n* [@twake/config-parser](./packages/config-parser): simple file parser that uses also environment variables\n* [@twake/crypto](./packages/crypto): cryptographic methods for Twake Chat\n* [@twake/logger](./packages/logger): logger for Twake\n* [@twake/utils](.packages/utils): utilitary methods for Twake Chat\n* [@twake/matrix-application-server](./packages/matrix-application-server): implements\n  [Matrix Application Service API](https://spec.matrix.org/v1.6/application-service-api/)\n* [matrix-resolve](./packages/matrix-resolve): resolve a Matrix \"server name\" into base URL following\n  [Matrix specification](https://spec.matrix.org/latest/server-server-api/#server-discovery)\n* [@twake/retry-promise](packages/retry-promise): simple module extending javascript Promise with retry strategy\n\n## Requirements\n\n- [ ] Node \u003e=18\n\n## Commands\n\n* `npm run build`: build all packages\n* `npm run test`: test all packages\n* `node ./server.mjs`: run the server\n\n## Copyright and license\n\nCopyright (c) 2023-present Linagora \u003chttps://linagora.com\u003e\n\nLicense: [GNU AFFERO GENERAL PUBLIC LICENSE](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinagora%2Ftom-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinagora%2Ftom-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinagora%2Ftom-server/lists"}