{
  "manifest_version": "1.0.0",
  "template": {
    "id": "6aab5a74-3035-4dc5-accc-1a51d8837bc4",
    "slug": "openfang",
    "name": "OpenFang",
    "description": "A template for OpenFang: The Agent Operating System.",
    "url": "https://railway.com/deploy/openfang",
    "upstream": {
      "repo_url": "https://github.com/nazihkalo/openfang-railway-template"
    }
  },
  "services": [
    {
      "name": "openfang-railway-template",
      "source": {
        "repo": "https://github.com/nazihkalo/openfang-railway-template"
      },
      "needs_volume": false,
      "http": false
    }
  ],
  "required_inputs": [
    {
      "key": "SETUP_PASSWORD",
      "service": "openfang-railway-template",
      "description": "Password to access the /setup UI for initial configuration",
      "secret": true,
      "strategy": "generate",
      "generate": "strong_password"
    },
    {
      "key": "OPENFANG_API_KEY",
      "service": "openfang-railway-template",
      "description": "A secret YOU create to secure your OpenFang API endpoints (e.g., openssl rand -hex 32)",
      "secret": true,
      "strategy": "generate",
      "generate": "random_base64_32"
    },
    {
      "key": "OPENFANG_LOG_LEVEL",
      "service": "openfang-railway-template",
      "description": "Verbosity of logs (debug, info, warn, error)",
      "secret": false,
      "strategy": "default",
      "default": "info"
    },
    {
      "key": "OPENFANG_ENABLE_NETWORK",
      "service": "openfang-railway-template",
      "description": "Set to \"true\" to allow the agent to perform web searches/fetches",
      "secret": false,
      "strategy": "default",
      "default": "false"
    },
    {
      "key": "OPENFANG_MEMORY_DECAY_RATE",
      "service": "openfang-railway-template",
      "description": "How fast the agent \"forgets\" older context (0.0 to 1.0)",
      "secret": false,
      "strategy": "default",
      "default": "0.05"
    }
  ],
  "deploy": {
    "mcp": {
      "server": "railway",
      "tool": "deploy_template",
      "args": {
        "template_code": "openfang"
      }
    },
    "cli": "railway deploy --template openfang",
    "api": {
      "method": "POST",
      "path": "/graphql/v2",
      "body": {
        "query": "mutation templateDeploy($input: TemplateDeployV2Input!) { templateDeployV2(input: $input) { projectId workflowId } }",
        "variables": {
          "input": {
            "templateId": "6aab5a74-3035-4dc5-accc-1a51d8837bc4",
            "serializedConfig": {
              "services": {
                "a4ad9a64-0a16-4e42-8c42-e4ef763a4fac": {
                  "name": "openfang-railway-template",
                  "source": {
                    "repo": "nazihkalo/openfang-railway-template",
                    "branch": null,
                    "rootDirectory": null
                  },
                  "variables": {
                    "GROQ_API_KEY": {
                      "isOptional": true,
                      "description": "Required for Groq's fast Llama/Mixtral inference",
                      "defaultValue": ""
                    },
                    "GEMINI_API_KEY": {
                      "isOptional": true,
                      "description": "Required for Google's Gemini models",
                      "defaultValue": ""
                    },
                    "OPENAI_API_KEY": {
                      "isOptional": true,
                      "description": "Required if using GPT models",
                      "defaultValue": ""
                    },
                    "SETUP_PASSWORD": {
                      "isOptional": false,
                      "description": "Password to access the /setup UI for initial configuration",
                      "defaultValue": "{{SETUP_PASSWORD}}"
                    },
                    "SLACK_APP_TOKEN": {
                      "isOptional": true,
                      "description": "xapp- token; required for Slack Socket Mode (events)",
                      "defaultValue": ""
                    },
                    "SLACK_BOT_TOKEN": {
                      "isOptional": true,
                      "description": "xoxb- token; for Slack bot messaging",
                      "defaultValue": ""
                    },
                    "OPENFANG_API_KEY": {
                      "isOptional": false,
                      "description": "A secret YOU create to secure your OpenFang API endpoints (e.g., openssl rand -hex 32)",
                      "defaultValue": "{{OPENFANG_API_KEY}}"
                    },
                    "ANTHROPIC_API_KEY": {
                      "isOptional": true,
                      "description": "Required if using Claude models",
                      "defaultValue": ""
                    },
                    "DISCORD_BOT_TOKEN": {
                      "isOptional": true,
                      "description": "From Discord Developer Portal; enables Discord integration",
                      "defaultValue": ""
                    },
                    "OPENFANG_LOG_LEVEL": {
                      "isOptional": true,
                      "description": "Verbosity of logs (debug, info, warn, error)",
                      "defaultValue": "info"
                    },
                    "TELEGRAM_BOT_TOKEN": {
                      "isOptional": true,
                      "description": "From @BotFather; enables Telegram integration",
                      "defaultValue": ""
                    },
                    "OPENFANG_DEFAULT_MODEL": {
                      "isOptional": true,
                      "description": "The specific model ID to use by default",
                      "defaultValue": ""
                    },
                    "OPENFANG_ENABLE_NETWORK": {
                      "isOptional": true,
                      "description": "Set to \"true\" to allow the agent to perform web searches/fetches",
                      "defaultValue": "false"
                    },
                    "OPENFANG_DEFAULT_PROVIDER": {
                      "isOptional": true,
                      "description": "The fallback LLM provider (anthropic, openai, groq, gemini)",
                      "defaultValue": ""
                    },
                    "OPENFANG_MEMORY_DECAY_RATE": {
                      "isOptional": true,
                      "description": "How fast the agent \"forgets\" older context (0.0 to 1.0)",
                      "defaultValue": "0.05"
                    },
                    "OPENFANG_DEFAULT_API_KEY_ENV": {
                      "isOptional": true,
                      "description": "Points to the env var name containing the default key",
                      "defaultValue": ""
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "post_deploy": {},
  "resources": {
    "expected_services": 1,
    "needs_volume": false
  },
  "generated_at": "2026-09-20T10:14:37.339Z",
  "generator_version": "0.1.0",
  "status": "degraded",
  "validated_at": "2026-09-18T09:57:30.425Z",
  "success_rate_30d": 0,
  "validation": {
    "last_run_id": "run_fed2765becd44e93844c",
    "checks": [
      {
        "name": "workflow_completed",
        "passed": true
      },
      {
        "name": "all_services_deployed",
        "passed": false,
        "detail": "FAILED"
      }
    ]
  }
}
