🐳 Matrix (An open network for secure, decentralized communication) server setup using Ansible and Docker
This report summarizes scanner evidence for spantaleev/matrix-docker-ansible-deploy, a Jinja project with 6,510 GitHub stars. SynthScan examined 96,011 lines of code across 869 source files, recording 469 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 5.8 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 448 finding(s).
Are imports declared and package/API names verified? 4 finding(s).
Are wrappers, guards, and repeated structures necessary? 43 finding(s).
Which changes need focused human review? 469 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 469 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | conf.py | 1 | # SPDX-FileCopyrightText: 2024 Slavi Pantaleev <slavi@devture.com> | COMMENT |
| LOW | bin/add-inventory-host.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | bin/check-group-vars-jinja.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | bin/install-roles.py | 1 | #!/usr/bin/env python3 | COMMENT |
| LOW | bin/molecule-clean.sh | 1 | #!/bin/bash | COMMENT |
| LOW | bin/molecule.sh | 1 | #!/bin/bash | COMMENT |
| LOW | bin/ansible-python.sh | 1 | #!/bin/sh | COMMENT |
| LOW | bin/ansible-all-hosts.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | roles/custom/matrix-client-element/defaults/main.yml | 1 | # SPDX-FileCopyrightText: 2020 - 2022 Aaron Raimist | COMMENT |
| LOW | roles/custom/matrix-client-element/defaults/main.yml | 41 | matrix_client_element_container_src_dockerfile_path: "{{ matrix_client_element_container_src_files_path }}/apps/web/Dock | COMMENT |
| LOW | roles/custom/matrix-client-element/defaults/main.yml | 141 | # | COMMENT |
| LOW | roles/custom/matrix-client-element/defaults/main.yml | 161 | # Specifies the value of the `Permission-Policy` header. | COMMENT |
| LOW | roles/custom/matrix-client-element/defaults/main.yml | 181 | # | COMMENT |
| LOW | roles/custom/matrix-client-element/defaults/main.yml | 321 | matrix_client_element_default_theme: 'light' | COMMENT |
| LOW | roles/custom/matrix-client-element/defaults/main.yml | 341 | COMMENT | |
| LOW | roles/custom/matrix-client-element/defaults/main.yml | 361 | # Holds the final Element Web configuration (a combination of the default and its extension). | COMMENT |
| LOW | roles/custom/matrix-client-element/defaults/main.yml | 381 | # This is unlike what it does when looking up YAML template files (no automatic parsing there). | COMMENT |
| LOW | roles/custom/matrix-client-element/defaults/main.yml | 401 | # } | COMMENT |
| LOW | roles/custom/matrix-client-element/defaults/main.yml | 421 | # You most likely don't need to touch this variable. Instead, see `matrix_client_element_location_sharing_map_style_defa | COMMENT |
| LOW | roles/custom/matrix-client-element/defaults/main.yml | 441 | matrix_client_element_environment_variable_element_web_port: "{{ matrix_client_element_container_port }}" | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 81 | COMMENT | |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 101 | # is local and playbook-managed. | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 121 | # | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 141 | # | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 161 | COMMENT | |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 181 | matrix_bot_baibot_config_persistence_data_dir_path: /data | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 261 | # | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 281 | matrix_bot_baibot_config_agents_static_definitions_anthropic_config_text_generation_prompt: "{{ matrix_bot_baibot_config | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 361 | matrix_bot_baibot_config_agents_static_definitions_mistral_config: "{{ matrix_bot_baibot_config_agents_static_definition | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 421 | # Your custom YAML configuration for this provider's configuration goes here. | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 501 | # You can override individual variables from the default configuration, or introduce new ones. | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 541 | matrix_bot_baibot_config_agents_static_definitions_venice_config_text_generation_reasoning_effort: ~ | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 581 | # a cloned-voice handle (vv_<id>). An incompatible voice returns an error. | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 621 | # Resolution tier (used by certain models): "1K", "2K", "4K". | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 641 | matrix_bot_baibot_config_agents_static_definitions_venice_config_image_generation_edit_safe_mode: ~ | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 661 | COMMENT | |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 681 | # | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 721 | # | COMMENT |
| LOW | roles/custom/matrix-bot-baibot/defaults/main.yml | 741 | COMMENT | |
| LOW | roles/custom/matrix-conduit/defaults/main.yml | 41 | # Controls how long to sleep for after starting the matrix-synapse container. | COMMENT |
| LOW | roles/custom/matrix-conduit/defaults/main.yml | 181 | matrix_conduit_turn_secret: '' | COMMENT |
| LOW | roles/custom/matrix-bot-buscarron/defaults/main.yml | 221 | # Additional environment variables to pass to the Buscarron container | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 1 | # SPDX-FileCopyrightText: 2023 - 2024 Michael Hollister | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 261 | COMMENT | |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 301 | # If false, the media repo will not use the X-Forwarded-Host header commonly added by reverse proxies. | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 341 | # The database pooling options | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 361 | matrix_media_repo_generate_signing_key: false | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 381 | # * IT IS HIGHLY RECOMMENDED TO USE PER-DOMAIN CONFIGS WITH THIS FEATURE. * | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 401 | # the media repo. | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 421 | # See docs/admin.md for information on what these people can do. They must belong to one of the | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 441 | # thumbnails and other misc data is also stored in these places. The media repo, when looking | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 461 | # To disable this datastore, making it readonly, specify `forKinds: []`. | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 481 | # ID for the S3 datastore. Any unique alphanumeric string (e.g. generated via `pwgen -s 64 1`). | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 501 | # before being uploaded to s3 (then the file is deleted). If you aren't concerned about | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 521 | # It is therefore important to include any trailing slashes or path information. For | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 541 | # Whether archiving is enabled or not. Default enabled. | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 561 | # ensure that the "cost" of running the media repo is worthwhile - small file uploads tend | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 581 | # this project recommends 30 minutes (1800 seconds). | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 601 | # The maximum number of TOTAL bytes a user can upload. Defaults to zero (no limit). | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 621 | # The number of workers to use when downloading remote media. Raise this number if remote | COMMENT |
| 337 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | roles/custom/matrix-client-commet/defaults/main.yml | 54 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | roles/custom/matrix-client-commet/defaults/main.yml | 56 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | roles/custom/matrix-client-commet/defaults/main.yml | 118 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | roles/custom/matrix-client-commet/defaults/main.yml | 120 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | roles/custom/matrix-client-commet/defaults/main.yml | 126 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | roles/custom/matrix-client-commet/defaults/main.yml | 128 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tom/matrix-bridge-hookshot/molecule/default/verify.yml | 57 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …tom/matrix-bridge-hookshot/molecule/default/verify.yml | 59 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …tom/matrix-bridge-hookshot/molecule/default/verify.yml | 124 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …tom/matrix-bridge-hookshot/molecule/default/verify.yml | 126 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …tom/matrix-bridge-hookshot/molecule/default/verify.yml | 167 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …tom/matrix-bridge-hookshot/molecule/default/verify.yml | 169 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …tom/matrix-bridge-hookshot/molecule/default/verify.yml | 325 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …tom/matrix-bridge-hookshot/molecule/default/verify.yml | 327 | # ------------------------------------------------------------------ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | bin/test-molecule-select-roles.py | 86 | def test_livekit_bump_only_runs_its_consumer(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 90 | def test_postgres_bump_follows_shared_task(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 94 | def test_curl_bump_runs_every_consumer(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 98 | def test_multiple_image_bumps_union_with_direct_role_changes(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 104 | def test_direct_changes_ignore_roles_without_scenarios(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 109 | def test_documentation_change_runs_nothing(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 113 | def test_image_pin_comments_and_quoting_do_not_run_scenarios(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 118 | def test_shared_task_change_only_runs_consumers(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 122 | def test_shared_fixture_change_follows_nested_references(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 126 | def test_deleted_helper_uses_previous_consumers(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 131 | def test_renamed_helper_unions_previous_and_current_consumers(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 137 | def test_deleted_role_is_not_selected(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 141 | def test_new_scenario_is_selected(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 145 | def test_global_changes_run_all(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 152 | def test_unknown_shared_file_runs_all(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 156 | def test_unconsumed_image_bump_runs_all(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 162 | def test_unsupported_pins_run_all(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 192 | def test_shared_reference_cycles_terminate(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 196 | def test_comments_do_not_introduce_unresolved_references(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 202 | def test_symlinked_shared_helper_is_followed(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 209 | def test_invalid_comparison_runs_all(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 212 | def test_manual_dispatch_all_or_one_role(self): | CODE |
| LOW⚡ | bin/test-molecule-select-roles.py | 219 | def test_event_comparison_bases(self): | CODE |
| LOW | bin/test-molecule-select-roles.py | 176 | def test_missing_pins_run_all(self): | CODE |
| LOW | bin/test-molecule-select-roles.py | 180 | def test_unresolved_references_run_all(self): | CODE |
| LOW | bin/test-molecule-select-roles.py | 232 | def test_cli_writes_github_output(self): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | docs/configuring-playbook-user-verification-service.md | 70 | It is possible to set an API Auth Token to restrict access to the UVS. If this is enabled, anyone making a request to UV | CODE |
| HIGH⚡ | docs/configuring-playbook-user-verification-service.md | 72 | By default, the token (`YOUR_TOKEN_HERE`) will be derived from `matrix_homeserver_generic_secret_key` in `group_vars/mat | CODE |
| HIGH⚡ | docs/configuring-playbook-user-verification-service.md | 74 | To set your own token, add the following configuration to your `vars.yml` file. Make sure to replace `YOUR_TOKEN_HERE` w | CODE |
| HIGH⚡ | docs/configuring-playbook-user-verification-service.md | 77 | matrix_user_verification_service_uvs_auth_token: "YOUR_TOKEN_HERE" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 434 | # Set this to true to enable shared secret auth. | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 570 | # Set this to -1 to indicate that there is no limit. Zero will force the use of maxBytes. | COMMENT |
| LOW | roles/custom/matrix-media-repo/defaults/main.yml | 804 | # Set this to false if rate limiting is handled at a higher level or you don't want it enabled. | COMMENT |
| LOW | roles/custom/matrix-bot-draupnir/defaults/main.yml | 177 | # Set this to the Pantalaimon URL if you're using that. | COMMENT |
| LOW | roles/custom/matrix-bot-mjolnir/defaults/main.yml | 102 | # Set this to the pantalaimon URL if you're using that. | COMMENT |
| LOW | …es/custom/matrix-bridge-heisenbridge/defaults/main.yml | 28 | # Set this to your Matrix ID if you want to enforce the owner, otherwise first _local_ user becomes one | COMMENT |
| LOW | roles/custom/matrix-bot-meowlnir/defaults/main.yml | 207 | # Set these to strong, unique values. | COMMENT |
| LOW | …tom/matrix-user-verification-service/defaults/main.yml | 13 | # Set this to the display name for ansible used in Output e.g. fail_msg | COMMENT |
| LOW | molecule-shared/tasks/homeserver-stub.yml | 59 | # Set molecule_shared_stub_verbose to "1" to log every request the stub is asked for. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | roles/custom/matrix-bridge-sms/defaults/main.yml | 120 | # (optional) if you use a self signed certificate, you can add the public key here | COMMENT |
| LOW | roles/custom/matrix-synapse/vars/main.yml | 160 | # don't forget to actually configure it where appropriate (see worker.yaml.j2`, the nginx proxy configuration, etc). | COMMENT |
| LOW | roles/custom/matrix-synapse/vars/main.yml | 160 | # don't forget to actually configure it where appropriate (see worker.yaml.j2`, the nginx proxy configuration, etc). | COMMENT |
| MEDIUM | roles/custom/matrix-synapse/defaults/main.yml | 807 | # By default, all of the server's memory is taken into account, but you can adjust this. | COMMENT |
| MEDIUM | examples/reverse-proxies/haproxy/haproxy.cfg | 44 | # HAproxy wants the full chain and the private key in one file. For Letsencrypt manually generated certs (e.g., wild | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | bin/molecule-select-roles.py | 94 | except (KeyError, subprocess.CalledProcessError): | CODE |
| HIGH | bin/molecule-select-roles.py | 89 | except subprocess.CalledProcessError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/configuring-playbook-bot-baibot.md | 415 | # In this example, there's no need to define any of these below. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | roles/custom/matrix-synapse/vars/main.yml | 204 | # The following section contains content that had previously been generated by a script (`workers-doc-to-yaml.awk`) proc | COMMENT |
| MEDIUM | collections/requirements.yml | 2 | # This file is not used by the playbook's standard CLI installation flow. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | roles/custom/matrix-base/defaults/main.yml | 281 | # They are meant for orchestration concerns like container networking and systemd ordering, | COMMENT |
| MEDIUM | roles/custom/matrix-base/defaults/main.yml | 290 | # It is meant for orchestration concerns like container networking, systemd ordering, and database creation, | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/molecule-clean.sh | 11 | # Usage: | COMMENT |
| LOW | bin/molecule.sh | 15 | # Usage: | COMMENT |
| LOW | roles/custom/matrix-synapse/defaults/main.yml | 51 | # Example usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | bin/molecule-select-roles.py | 79 | CODE | |
| LOW | bin/molecule-select-roles.py | 154 | CODE | |
| LOW | bin/install-roles.py | 116 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/tasks/validate_config_sqlite_legacy_migration_bug.yml | 54 | except Exception: | CODE |