{"id":20217940,"url":"https://github.com/matrix-org/eigen-server","last_synced_at":"2025-04-10T15:45:33.247Z","repository":{"id":152508252,"uuid":"620481812","full_name":"matrix-org/eigen-server","owner":"matrix-org","description":"Example server and development test client for Linearized Matrix","archived":false,"fork":false,"pushed_at":"2023-08-08T19:48:06.000Z","size":195,"stargazers_count":9,"open_issues_count":21,"forks_count":1,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-04-04T23:05:02.054Z","etag":null,"topics":["dag","federation","ietf","linearized","matrix","mimi"],"latest_commit_sha":null,"homepage":"","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/matrix-org.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":"2023-03-28T19:12:16.000Z","updated_at":"2023-08-23T16:53:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"12c6c223-99cc-4096-a245-0f79dc813be8","html_url":"https://github.com/matrix-org/eigen-server","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Feigen-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Feigen-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Feigen-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-org%2Feigen-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matrix-org","download_url":"https://codeload.github.com/matrix-org/eigen-server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248243509,"owners_count":21071055,"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":["dag","federation","ietf","linearized","matrix","mimi"],"created_at":"2024-11-14T06:36:31.197Z","updated_at":"2025-04-10T15:45:33.223Z","avatar_url":"https://github.com/matrix-org.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# eigen-server\n\nExample server for a Linearized Matrix hub \u0026 participant. Note that the included client is awful and only for\ndemonstrative purposes: a proper implementation of Linearized Matrix would be bringing an existing, more useful,\nclient.\n\nSpecifications:\n* [MSC3995: Linearized Matrix](https://github.com/matrix-org/matrix-spec-proposals/pull/3995) - Covers *everything* in\n  the Linearized Matrix stack, including DAG interoperability.\n* [I-D.ralston-mimi-linearized-matrix](https://datatracker.ietf.org/doc/draft-ralston-mimi-linearized-matrix/) - Covers\n  just the bits which pertain to non-DAG consumers. Note that the I-D lags behind the MSC in terms of accuracy and latest\n  thinking at the moment.\n\n**Do not use this in production.** It's just not meant to scale, and likely never will.\n\n## Development\n\nRequires NodeJS 18.x and yarn.\n\n1. Clone repo\n2. `yarn install`\n\nTo start the awful demo client: `yarn dev:client`\n\nTo start the demo server: `yarn dev:server`\n\nClient environment variables:\n* `ES_CREATE_ROOM`: When `true`, the client will create a new room on startup.\n* `ES_SEND_INVITE`: When set to a string, the client will auto-invite that user ID to the first room it joins/creates.\n* `ES_LOCALPART`: The desired localpart for the client. If already picked then the server will return a random localpart.\n\n### Setting up a demo\n\n1. `ES_PORT=3000 ES_SIGNING_KEY_PATH=./p3000.signing.key yarn dev:server` to start the server. This will block until killed.\n2. `ES_PORT=3001 ES_SIGNING_KEY_PATH=./p3001.signing.key yarn dev:server` to start the second server in a new terminal window.\n3. In a new terminal window, `ES_PORT=3000 yarn dev:client:nobuild`. This will also block until killed.\n4. In a fourth terminal window, `ES_PORT=3001 yarn dev:client:nobuild` to start the second client.\n5. Grab the auto-assigned user ID from the fourth terminal and put it on your clipboard.\n6. In the third terminal window (first client), type `/createRoom` and press \u003ckbd\u003eEnter\u003c/kbd\u003e.\n7. You should now have a room that you're chatting in.\n8. Type `/invite \u003cthe other user ID\u003e` and press \u003ckbd\u003eEnter\u003c/kbd\u003e.\n9. In the fourth terminal (second client), follow the instructions to accept the invite.\n10. Send whatever text you like in either client and it should be received on the other end. This will be going over local federation.\n\nSome additional notes:\n* All rooms and users are held in memory for now.\n\n### Synapse demo\n\nYou will need a Synapse running the [`clokep/lm` branch](https://github.com/matrix-org/synapse/compare/develop...clokep/lm).\n\n1. Create the room on the eigen-server hub.\n2. Invite your Synapse user.\n3. Success! (probably)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatrix-org%2Feigen-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatrix-org%2Feigen-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatrix-org%2Feigen-server/lists"}