{
  "manifest_version": "1.0.0",
  "template": {
    "id": "00a982c3-492a-4db3-ba32-85044002cbc4",
    "slug": "anubis",
    "name": "Anubis",
    "description": "Protect your sites from AI scrapers.",
    "url": "https://railway.com/deploy/anubis",
    "upstream": {
      "image": "ghcr.io/techarohq/anubis:latest"
    }
  },
  "status": "unvalidated",
  "validated_at": null,
  "success_rate_30d": null,
  "services": [
    {
      "name": "Anubis",
      "source": {
        "image": "ghcr.io/techarohq/anubis:latest"
      },
      "needs_volume": false,
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "TARGET",
      "service": "Anubis",
      "description": "The URL of the service that Anubis should forward valid requests to. You should set this within your private network; e.g. if you have an App service, you could set this to app.railway.internal:(your server port).",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "COOKIE_DOMAIN",
      "service": "Anubis",
      "description": "The domain the Anubis challenge pass cookie should be set to. This should be set to the domain you bought from your registrar (EG: techaro.lol if your webapp is running on anubis.techaro.lol). ",
      "secret": false,
      "strategy": "ask_user"
    },
    {
      "key": "REDIRECT_DOMAINS",
      "service": "Anubis",
      "description": "If set, restrict the domains that Anubis can redirect to when passing a challenge.  If this is unset, Anubis may redirect to any domain which could cause security issues in the unlikely case that an attacker passes a challenge for your browser and then tricks you into clicking a link to your domain.  Note that if you are hosting Anubis on a non-standard port (https://example:com:8443, http://www.example.net:8080, etc.), you must also include the port number here.",
      "secret": false,
      "strategy": "ask_user"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "anubis"
      }
    },
    "cli": "railway deploy --template anubis",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "00a982c3-492a-4db3-ba32-85044002cbc4",
            "serializedConfig": {
              "services": {
                "954f2b91-46c5-4a7c-84b6-c01e80b7deec": {
                  "name": "Anubis",
                  "source": {
                    "image": "ghcr.io/techarohq/anubis:latest"
                  },
                  "variables": {
                    "TARGET": {
                      "isOptional": false,
                      "description": "The URL of the service that Anubis should forward valid requests to. You should set this within your private network; e.g. if you have an App service, you could set this to app.railway.internal:(your server port).",
                      "defaultValue": "{{TARGET}}"
                    },
                    "COOKIE_DOMAIN": {
                      "isOptional": false,
                      "description": "The domain the Anubis challenge pass cookie should be set to. This should be set to the domain you bought from your registrar (EG: techaro.lol if your webapp is running on anubis.techaro.lol). ",
                      "defaultValue": "{{COOKIE_DOMAIN}}"
                    },
                    "REDIRECT_DOMAINS": {
                      "isOptional": false,
                      "description": "If set, restrict the domains that Anubis can redirect to when passing a challenge.  If this is unset, Anubis may redirect to any domain which could cause security issues in the unlikely case that an attacker passes a challenge for your browser and then tricks you into clicking a link to your domain.  Note that if you are hosting Anubis on a non-standard port (https://example:com:8443, http://www.example.net:8080, etc.), you must also include the port number here.",
                      "defaultValue": "{{REDIRECT_DOMAINS}}"
                    },
                    "SERVE_ROBOTS_TXT": {
                      "isOptional": true,
                      "description": "If set true, Anubis will serve a default robots.txt file that disallows all known AI scrapers by name and then additionally disallows every scraper. This is useful if facts and circumstances make it difficult to change the underlying service to serve such a robots.txt file.",
                      "defaultValue": ""
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {},
  "resources": {
    "expected_services": 1,
    "needs_volume": false
  },
  "generated_at": "2026-09-20T16:14:49.616Z",
  "generator_version": "0.1.0"
}
