tangle


git clone https://radroots.dev/git/tangle.git
Log | Files | Refs | README | LICENSE

tangle.example.json (3959B)


      1 {
      2   "server": {
      3     "listen_addr": "0.0.0.0:7000",
      4     "relay_url": "wss://relay.radroots.test"
      5   },
      6   "pocket": {
      7     "data_directory": "runtime/pocket",
      8     "sync_policy": "flush_on_shutdown",
      9     "query": {
     10       "allow_scraping": false,
     11       "allow_scrape_if_limited_to": 100,
     12       "allow_scrape_if_max_seconds": 3600
     13     }
     14   },
     15   "groups": {
     16     "enabled": true,
     17     "canonical_relay_url": "wss://relay.radroots.test",
     18     "relay_secret": "7777777777777777777777777777777777777777777777777777777777777777",
     19     "owner_pubkeys": [
     20       "0000000000000000000000000000000000000000000000000000000000000001"
     21     ],
     22     "admin_pubkeys": [
     23       "0000000000000000000000000000000000000000000000000000000000000002"
     24     ],
     25     "policy": {
     26       "public_join": false,
     27       "invites_enabled": false
     28     },
     29     "limits": {
     30       "max_group_id_bytes": 128,
     31       "max_group_tags_per_event": 8,
     32       "max_supported_kinds": 512,
     33       "max_member_list_pubkeys": 100000,
     34       "max_outbox_replay_batch": 1000
     35     }
     36   },
     37   "auth": {
     38     "challenge_ttl_seconds": 300,
     39     "created_at_skew_seconds": 600
     40   },
     41   "limits": {
     42     "max_message_length": 1048576,
     43     "max_subid_length": 64,
     44     "max_subscriptions_per_connection": 64,
     45     "max_filters_per_request": 10,
     46     "max_tag_values_per_filter": 100,
     47     "max_query_complexity": 2048,
     48     "max_limit": 500,
     49     "default_limit": 100,
     50     "max_event_tags": 200,
     51     "max_content_length": 65536,
     52     "broadcast_channel_capacity": 4096,
     53     "per_connection_outbound_queue": 256
     54   },
     55   "rate_limits": {
     56     "auth": {
     57       "per_ip": {
     58         "window_seconds": 60,
     59         "max_hits": 120
     60       },
     61       "per_pubkey": {
     62         "window_seconds": 60,
     63         "max_hits": 30
     64       },
     65       "failures": {
     66         "window_seconds": 300,
     67         "max_hits": 5
     68       },
     69       "failures_per_ip": {
     70         "window_seconds": 300,
     71         "max_hits": 20
     72       }
     73     },
     74     "event": {
     75       "per_ip": {
     76         "window_seconds": 60,
     77         "max_hits": 600
     78       },
     79       "per_pubkey": {
     80         "window_seconds": 60,
     81         "max_hits": 120
     82       },
     83       "per_kind": {
     84         "window_seconds": 60,
     85         "max_hits": 1000
     86       }
     87     },
     88     "group": {
     89       "write_per_ip": {
     90         "window_seconds": 60,
     91         "max_hits": 300
     92       },
     93       "write_per_pubkey": {
     94         "window_seconds": 60,
     95         "max_hits": 60
     96       },
     97       "write_per_group": {
     98         "window_seconds": 60,
     99         "max_hits": 90
    100       },
    101       "write_per_kind": {
    102         "window_seconds": 60,
    103         "max_hits": 300
    104       },
    105       "join_flow": {
    106         "window_seconds": 300,
    107         "max_hits": 10
    108       },
    109       "join_flow_per_ip": {
    110         "window_seconds": 300,
    111         "max_hits": 30
    112       }
    113     },
    114     "req": {
    115       "per_ip": {
    116         "window_seconds": 60,
    117         "max_hits": 600
    118       },
    119       "per_connection": {
    120         "window_seconds": 60,
    121         "max_hits": 120
    122       },
    123       "per_pubkey": {
    124         "window_seconds": 60,
    125         "max_hits": 240
    126       },
    127       "per_group": {
    128         "window_seconds": 60,
    129         "max_hits": 240
    130       },
    131       "per_kind": {
    132         "window_seconds": 60,
    133         "max_hits": 500
    134       },
    135       "broad": {
    136         "window_seconds": 60,
    137         "max_hits": 30
    138       }
    139     },
    140     "count": {
    141       "per_ip": {
    142         "window_seconds": 60,
    143         "max_hits": 300
    144       },
    145       "per_connection": {
    146         "window_seconds": 60,
    147         "max_hits": 60
    148       },
    149       "per_pubkey": {
    150         "window_seconds": 60,
    151         "max_hits": 120
    152       },
    153       "per_group": {
    154         "window_seconds": 60,
    155         "max_hits": 120
    156       },
    157       "per_kind": {
    158         "window_seconds": 60,
    159         "max_hits": 240
    160       },
    161       "broad": {
    162         "window_seconds": 60,
    163         "max_hits": 20
    164       }
    165     }
    166   },
    167   "observability": {
    168     "tracing": {
    169       "enabled": true,
    170       "filter": "info,tangle=info,tangle_runtime=info,tangle_groups=info,tangle_store_pocket=info",
    171       "format": "json"
    172     }
    173   }
    174 }