Theriodex – Privacy Policy

Last updated: 28 August 2025

1. Controller

2. What we collect

Only basic server logs are collected automatically. These may include:

Examples of collected logs

Below you will find some (partially redacted for privacy) examples of log files.

Sinatra server logs

This web application runs on Sinatra, a Ruby-based domain-specific language and web application library. Sinatra itself is unable to see the IP from which the request was made. Note below that all requests appear to be originating from 10.5.0.1. The operator is unable to infer the actual origin of the request – only the reverse proxy running on OpenBSD (described below) saves such information. The Sinatra logs are kept for 30 days.

Aug 28 09:15:24 theriodex ruby[1043]: I, [2025-08-28T09:15:24.417548 #1043] INFO -- : cache: [HEAD /] miss


Aug 28 09:15:24 theriodex ruby[1043]: 10.5.0.1 - - [28/Aug/2025:09:15:24 +0000] "GET / HTTP/1.0" 200 5755 0.0048


Aug 28 09:15:24 theriodex ruby[1043]: (28.08-2025 09:15) - The following Pokémon was selected: 548.


Aug 28 09:15:24 theriodex ruby[1043]: The following data was returned: {types: [[12]], flavour_text: "The leaves on its head are very bitter. Eating one of these leaves is known to refresh a tired body.", species_name: "Bulb Pokémon", evolutions: ["petilil", "lilligant"], evolutions_formatted: {"petilil" => "Petilil", "lilligant" => "Lilligant"}, name: "Petilil", abilities: [["Chlorophyll", 0, 1, 34, "chlorophyll"], ["Own Tempo", 0, 2, 20, "own-tempo"], ["Leaf Guard", 1, 3, 102, "leaf-guard"]], weight: 66.0, height: 5.0, stats: {hp: 45, atk: 35, def: 50, spatk: 70, spdef: 50, speed: 30}, sprite: "/sprites/pokemon/548.png", sprite_back: "/sprites/pokemon/back/548.png", front_shiny: "/sprites/pokemon/shiny/548.png", back_shiny: "/sprites/pokemon/back/shiny/548.png", front_female: nil, back_female: nil, front_shiny_female: nil, back_shiny_female: nil, animated_front: "/sprites/pokemon/versions/generation-v/black-white/animated/548.gif", animated_back: "/sprites/pokemon/versions/generation-v/black-white/animated/back/548.gif", animated_front_shiny: "/sprites/pokemon/versions/generation-v/black-white/animated/shiny/548.gif", animated_back_shiny: nil}


Aug 28 09:15:24 theriodex ruby[1043]: I, [2025-08-28T09:15:24.421210 #1043] INFO -- : cache: [HEAD /] miss


Aug 28 09:15:24 theriodex ruby[1043]: 10.5.0.1 - - [28/Aug/2025:09:15:24 +0000] "GET / HTTP/1.0" 200 5425 0.0032

Reverse proxy (relayd on OpenBSD) logs

Below an example of a log from relayd, the reverse proxy employed in this web application. These logs are kept for 24 hours. They show the IP address from which the request was made – i.e. the IP address of the user – as well as time, user agent, operating system and requested resources.

Aug 28 11:09:57 osprey relayd[56008]: relay https_relay_v6, session 420 (1 active), 0, 2a02:908:[redacted] -> :5678, done, [btlr.sh/] [Host: btlr.sh] [User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:142.0) Gecko/20100101 Firefox/142.0] GET -> 10.5.0.16:5678 {content-type: text/html;charset=utf-8} {Content-Length: 5583}; [btlr.sh/sprites/pokemon/439.png]

3. Why we collect it (purposes) and legal basis

Purposes:

Legal basis:

Legitimate interest (Art. 6(1)(f) GDPR) in operating a secure, reliable service. Server logs are useful for debugging purposes and mitigating potential attacks. To ensure maximum user privacy, the logs which store the user’s IP address are stored for only 24 hours (the logs of the reverse proxy) whereas the logs of the Sinatra server itself are stored for 30 days. These logs, however, cannot be used to identify the actual origin of the request, as Sinatra sees all requests as originating from 10.5.0.1, the IP of the relayd load balancer.

4. Where data is stored

5. Retention

6. Recipients and disclosures

7. Security

Reasonable technical and organisational measures are in place to ensure this site’s safety. Despite this, no internet service is 100% secure. If you believe to have found a security issue with this application, we kindly ask you to contact us swiftly with details so that it can be handled promptly. The source code of this application is freely available either on Codeberg or the operator’s own Forgejo instance.

8. Your rights

You have the right to:

To exercise these rights, contact the operator at privacy@btlr.sh. For deletion requests related to specific log entries, provide the date/time and other identifying details to help locate the records.

9. Changes to this policy

This policy may be updated. The “Last updated” date above will indicate the current version.