Files
mesh-catalog/modules/matrix/module.json
T
mesh-tools 652b00b25b
mesh/merge-gate checking again: the gate refused `unknown` because the controller judged with a node-engine validator pinned before mesh-host #117; mesh-co…
mesh/repo-check checking again: the gate refused `unknown` because the controller judged with a node-engine validator pinned before mesh-host #117; mesh-co…
mesh/delivery-group group feat/owned-paths checking: 0 of 2 member(s) ready
mesh/delivery superseded: a newer head of the same pull request
Say on every directory how it treats files it does not know, and check it (issue 1024, ADR 0422)
Every directory and archive resource carries `unknown`: move-out for a home folder whose program writes nothing there (the node-engine, delivered in mesh-host #117, moves the rest to ~/.local/state/mesh-moved/<module>/ with a list), module for ~/.ssh and ~/.claude, program elsewhere; `knows` keeps what a program or the operator relies on (powerlevel10k's compiled files, i3's scripts and the asus/g14 drop-ins, dunst's slack rule, betterbird's records, node-env's forge credential, issue 1033). Two shared folders are no longer declared. Each module's README says it. checks/owned holds every manifest to it; checks/sshdir stays while main's merge check runs it (issue 1035). Tests that pin a manifest follow the new key only. Reviewed in three rounds.
2026-10-17 16:23:03 +00:00

258 lines
8.7 KiB
JSON

{
"module": "matrix",
"version": "1",
"capabilities": [
"container-runtime"
],
"listens": [
{
"name": "client",
"port": 6167,
"protocol": "tcp",
"from": "mesh",
"why": "Conduit's client-server and federation APIs over plain HTTP. Both arrive through the route on 443: Conduit answers /.well-known/matrix/server with <its name>:443, so other homeservers federate through the proxy and nothing needs the traditional 8448"
},
{
"name": "web",
"port": 80,
"protocol": "tcp",
"from": "mesh",
"why": "Element Web, the static browser client, served by the image's nginx; reached through its route"
}
],
"requires": [
"route"
],
"contributes": {
"route": {
"homeserver": {
"label": "matrix",
"endpoint": "client"
},
"element": {
"label": "element",
"endpoint": "web"
}
}
},
"binds": {
"route": "${dir:state}/route.json"
},
"data": {
"own": [
{
"id": "db",
"path": "${dir:db}",
"class": "valuable",
"why": "every room, message and account"
}
]
},
"config": {
"default_server_name": {
"type": "string",
"description": "Element's default_server_name setting of config.json: the homeserver Element signs in to by default, by name; the file's default is the module's own route.",
"trusted": true,
"default": "${bound:route:name-homeserver}"
},
"default_server_config": {
"type": "object",
"description": "Element's default_server_config setting of config.json: the homeserver and identity server Element uses by default, by URL.",
"trusted": true,
"default": {
"m.homeserver": {
"base_url": "https://${bound:route:name-homeserver}"
},
"m.identity_server": {
"base_url": "https://vector.im"
}
}
},
"brand": {
"type": "string",
"description": "Element's brand setting of config.json: the name Element shows itself as.",
"trusted": true,
"default": "Element"
},
"integrations_ui_url": {
"type": "string",
"description": "Element's integrations_ui_url setting of config.json: the integration manager's page, a URL.",
"trusted": true,
"default": "https://scalar.vector.im/"
},
"integrations_rest_url": {
"type": "string",
"description": "Element's integrations_rest_url setting of config.json: the integration manager's API, a URL.",
"trusted": true,
"default": "https://scalar.vector.im/api"
},
"integrations_widgets_urls": {
"type": "list",
"description": "Element's integrations_widgets_urls setting of config.json: the URLs whose widgets Element trusts as the integration manager's.",
"trusted": true,
"default": [
"https://scalar.vector.im/_matrix/integrations/v1",
"https://scalar.vector.im/api",
"https://scalar-staging.vector.im/_matrix/integrations/v1",
"https://scalar-staging.vector.im/api",
"https://scalar-staging.riot.im/scalar/api"
]
},
"bug_report_endpoint_url": {
"type": "string",
"description": "Element's bug_report_endpoint_url setting of config.json: where Element sends a bug report, a URL; its default here is empty, and the file's own value (Element's, naming outside servers) stays in the file and is never replaced unless this is set.",
"trusted": true,
"default": ""
},
"uisi_autorageshake_app": {
"type": "string",
"description": "Element's uisi_autorageshake_app setting of config.json: the app name Element files an automatic report of an undecryptable message under.",
"trusted": true,
"default": "element-auto-uisi"
},
"show_labs_settings": {
"type": "boolean",
"description": "Element's show_labs_settings setting of config.json: whether Element shows its Labs settings.",
"trusted": true,
"default": true
},
"room_directory": {
"type": "object",
"description": "Element's room_directory setting of config.json: the servers whose room directories Element offers; its default here is empty, and the file's own value (Element's, naming outside servers) stays in the file and is never replaced unless this is set.",
"trusted": true,
"default": {}
},
"enable_presence_by_hs_url": {
"type": "object",
"description": "Element's enable_presence_by_hs_url setting of config.json: whether Element shows presence, per homeserver URL.",
"trusted": true,
"default": {
"https://matrix.org": false,
"https://matrix-client.matrix.org": false
}
},
"terms_and_conditions_links": {
"type": "list",
"description": "Element's terms_and_conditions_links setting of config.json: the links Element shows as its terms, each a URL and its text; its default here is empty, and the file's own value (Element's, naming outside servers) stays in the file and is never replaced unless this is set.",
"trusted": true,
"default": []
},
"features": {
"type": "object",
"description": "Element's features setting of config.json: Element's feature switches, each on or off.",
"trusted": true,
"default": {
"feature_video_rooms": true,
"feature_rust_crypto": true
}
},
"element_call": {
"type": "object",
"description": "Element's element_call setting of config.json: where Element starts a call with Element Call, a URL.",
"trusted": true,
"default": {
"url": "https://call.element.dev"
}
}
},
"resources": [
{
"id": "state",
"type": "directory",
"mode": "0700",
"place": ".",
"unknown": "program"
},
{
"id": "db",
"type": "directory",
"mode": "0700",
"unknown": "program"
},
{
"id": "conduit-conf",
"type": "file",
"path": "${dir:state}/conduit.toml",
"mode": "0644",
"template": "files/conduit.toml",
"names-on-purpose": {
"matrix.org": "the federation's public key server, trusted by default; the world's, not this mesh's"
}
},
{
"id": "element-conf",
"type": "file",
"path": "${dir:state}/element.json",
"mode": "0644",
"merge": "json",
"takes-config": ["default_server_name", "default_server_config", "brand", "integrations_ui_url", "integrations_rest_url", "integrations_widgets_urls", "bug_report_endpoint_url", "uisi_autorageshake_app", "show_labs_settings", "room_directory", "enable_presence_by_hs_url", "terms_and_conditions_links", "features", "element_call"],
"template": "files/element.json",
"names-on-purpose": {
"matrix.org": "the public room directory and the federation's largest homeserver; the world's",
"matrix-client.matrix.org": "the same homeserver's client endpoint; the world's",
"vector.im": "Element's public identity server; the world's",
"scalar.vector.im": "Element's public integration manager; the world's",
"scalar-staging.vector.im": "Element's staging integration manager, named by the upstream default config; the world's",
"scalar-staging.riot.im": "the same, under its former name; the world's",
"element.io": "Element's bug reports, privacy and cookie pages; the world's",
"gitter.im": "a public room directory; the world's",
"libera.chat": "a public room directory; the world's",
"call.element.dev": "Element Call's public instance; the world's"
}
},
{
"id": "net",
"type": "network",
"name": "matrix"
},
{
"id": "homeserver",
"type": "container",
"name": "matrix",
"image": "matrixconduit/matrix-conduit@sha256:b0d24248e94f944ca49f90f10c429e3d65f4472bdde25661ecea9840134fb133",
"network": "matrix",
"env": {
"CONDUIT_CONFIG": "/etc/conduit/conduit.toml"
},
"ports": [
"6167"
],
"volumes": [
"${dir:db}:/var/lib/matrix-conduit",
"${dir:state}/conduit.toml:/etc/conduit/conduit.toml:ro"
],
"restart-on": [
"conduit-conf"
]
},
{
"id": "element",
"type": "container",
"name": "element-web",
"image": "vectorim/element-web@sha256:a8f415462ab8d2600a592ba1b92bea51efe5a4d10eb738aab9bed769f7099613",
"health": {
"kind": "runtime"
},
"network": "matrix",
"ports": [
"80"
],
"volumes": [
"${dir:state}/element.json:/app/config.json:ro"
],
"restart-on": [
"element-conf"
]
}
],
"build": {
"artifacts": [
{
"name": "files",
"kind": "archive",
"from": "files"
}
]
}
}