|
| 1 | +--- |
| 2 | +title: Taurus Installation Guide |
| 3 | +--- |
| 4 | + |
| 5 | +import {Step, Steps} from 'fumadocs-ui/components/steps'; |
| 6 | + |
| 7 | +Use this guide to install and configure Taurus. |
| 8 | + |
| 9 | +## Setup Options |
| 10 | + |
| 11 | +### Using Docker Compose |
| 12 | + |
| 13 | +Use Docker Compose to run Taurus and related services. |
| 14 | +If you are developing Taurus locally, make sure the Taurus container is stopped to avoid port conflicts. |
| 15 | +If your compose setup supports profiles, you can set `COMPOSE_PROFILES=ide` to run only |
| 16 | +IDE-related services and start Taurus manually. |
| 17 | + |
| 18 | +### Virtual Development Environment (Preferred) |
| 19 | + |
| 20 | +Use the shared environment setup from the main platform docs: |
| 21 | + |
| 22 | +- [Visit Setup Guide](https://docs.code0.tech/general/install/) |
| 23 | + |
| 24 | +### Manual Installation |
| 25 | + |
| 26 | +<Steps> |
| 27 | + |
| 28 | +<Step> |
| 29 | + |
| 30 | +#### **Clone Taurus** |
| 31 | + |
| 32 | +Clone this repository to your local machine. |
| 33 | + |
| 34 | +</Step> |
| 35 | + |
| 36 | +<Step> |
| 37 | + |
| 38 | +#### **Set up environment variables** |
| 39 | + |
| 40 | +Configure `.env` in the project root with the required settings. |
| 41 | +You can use `.env-example` as a starting point. |
| 42 | + |
| 43 | +</Step> |
| 44 | + |
| 45 | +<Step> |
| 46 | + |
| 47 | +#### **Ensure required services are running** |
| 48 | + |
| 49 | +**NATS**: |
| 50 | + |
| 51 | +- Ensure a NATS instance is reachable |
| 52 | +- Enable JetStream |
| 53 | +- See [NATS installation docs](https://docs.nats.io/running-a-nats-service/introduction/installation) |
| 54 | + |
| 55 | +**Aquila**: |
| 56 | + |
| 57 | +- Required for dynamic mode (`MODE=dynamic`) |
| 58 | +- Ensure the configured endpoint is reachable |
| 59 | + |
| 60 | +</Step> |
| 61 | + |
| 62 | +<Step> |
| 63 | + |
| 64 | +#### **Start Taurus** |
| 65 | + |
| 66 | +Run: |
| 67 | + |
| 68 | +```bash |
| 69 | +cargo run -p taurus |
| 70 | +``` |
| 71 | + |
| 72 | +</Step> |
| 73 | + |
| 74 | +</Steps> |
| 75 | +--- |
| 76 | + |
| 77 | +## Environment Variables |
| 78 | + |
| 79 | +Taurus configuration is split into shared variables and mode-specific variables. |
| 80 | + |
| 81 | +### Common (Static + Dynamic) |
| 82 | + |
| 83 | +| Name | Description | Default | |
| 84 | +|-----------------------|--------------------------------------------------------------------------------------------------------------|---------------------------------| |
| 85 | +| `MODE` | Runtime mode. `static` loads local flows. `dynamic` enables dynamic synchronization with Sagittarius. | `static` | |
| 86 | +| `ENVIRONMENT` | Runtime environment (`development`, `staging`, `production`). | `development` | |
| 87 | +| `NATS_URL` | URL of the NATS instance Aquila connects to. | `nats://localhost:4222` | |
| 88 | +| `AQUILA_URL` | URL of the NATS instance Aquila connects to. | `nats://localhost:4222` | |
| 89 | +| `AQUILA_TOKEN` | URL of the NATS instance Aquila connects to. | `nats://localhost:4222` | |
| 90 | + |
| 91 | +| `GRPC_HOST` | Hostname for the Aquila gRPC server. | `127.0.0.1` | |
| 92 | +| `GRPC_PORT` | Port for the Aquila gRPC server. | `8081` | |
| 93 | +| `WITH_HEALTH_SERVICE` | Enables the gRPC health service when set to `true`. | `false` | |
| 94 | +| `DEFINITIONS` | Path to the JSON service-configuration file used for runtime/action authorization and default action configs. | `./service.configuration.json` | |
| 95 | +| `ADAPTER_STATUS_UPDATE_INTERVAL_SECONDS` | Seconds a runtime serivce will be marked as `not_responding` when no hearbeat was recieved. | `15s` | |
| 96 | +| `RUNTIME_STATUS_STOPPED_AFTER_NOT_RESPONDING_SECS` | Seconds a runtime serivce will be marked as `stopped` when no hearbeat was recieved. | `30s` | |
| 97 | +| `RUNTIME_STATUS_MONITOR_INTERVAL_SECS` | Interval in which the heartbeat of the services will be flagged/checked. | `3s` | |
| 98 | + |
| 99 | +### Static Mode |
| 100 | + |
| 101 | +Set `MODE=static` to load flows from a local JSON file and insert them into the NATS KV store on startup. |
| 102 | + |
| 103 | +| Name | Description | Default | |
| 104 | +|----------------------|-----------------------------------------------|---------------------| |
| 105 | +| `FLOW_FALLBACK_PATH` | Path to the flow JSON file loaded at startup. | `./flowExport.json` | |
| 106 | + |
| 107 | +### Dynamic Mode |
| 108 | + |
| 109 | +Set `MODE=hybrid` to keep flows synchronized from Sagittarius. |
| 110 | + |
| 111 | +| Name | Description | Default | |
| 112 | +|-------------------|-----------------------------------------------------------------------------------|--------------------------| |
| 113 | +| `SAGITTARIUS_URL` | URL of the Sagittarius instance Aquila connects to for flow and action updates. | `http://localhost:50051` | |
| 114 | +| `RUNTIME_TOKEN` | Token used by Aquila to authenticate with Sagittarius. | `default_session_token` | |
| 115 | + |
| 116 | +--- |
| 117 | + |
| 118 | +## Service Configuration File |
| 119 | + |
| 120 | +To authorize services like `Taurus`, `Draco`, or an `Action`, they must be declared in Aquila's service configuration file. |
| 121 | + |
| 122 | +`SERVICE_CONFIG_PATH` points to a JSON file that defines: |
| 123 | + |
| 124 | +- Allowed runtime tokens |
| 125 | +- Allowed action tokens |
| 126 | +- Optional default action configurations |
| 127 | + |
| 128 | +This file is loaded on startup. If the file is missing or invalid, Aquila starts with an empty service configuration. |
| 129 | + |
| 130 | +Default: |
| 131 | + |
| 132 | +```json |
| 133 | +{ |
| 134 | + "actions": [], |
| 135 | + "runtimes": [ |
| 136 | + { |
| 137 | + "identifier": "taurus", |
| 138 | + "token": "HsCEzbCuaUtUGSCrvwsSbJSlS2HH6TrW0ZeEKUZGTiOH8vPEZxyAEOx974Ku72l4" |
| 139 | + }, |
| 140 | + { |
| 141 | + "identifier": "draco-rest", |
| 142 | + "token": "SBO3dRKmhszmGH6KxpgKoYGp0gBfgWqV6WEiKtMxldyeWiYLqJx6vwLuVLKRhu8H" |
| 143 | + }, |
| 144 | + { |
| 145 | + "identifier": "draco-cron", |
| 146 | + "token": "VuTFgCj1PO6yr8smk43XLmeTUtlyKa2wjA0zvmz7WZDtgfXC62Ypd1b8fjJl8HvI" |
| 147 | + } |
| 148 | + ] |
| 149 | +} |
| 150 | +``` |
| 151 | + |
| 152 | +You can add as many runtimes as needed. |
| 153 | +To add an `Action`, add an entry under `actions`. |
| 154 | +To provide default Action-level config, add `configs` entries for that action. |
| 155 | + |
| 156 | +```json |
| 157 | +{ |
| 158 | + "actions": [ |
| 159 | + { |
| 160 | + "token": "action_token", |
| 161 | + "identifier": "discord", |
| 162 | + "configs": [ |
| 163 | + { |
| 164 | + "project_id": 1, |
| 165 | + "configs": [ |
| 166 | + { |
| 167 | + "identifier": "send_message", |
| 168 | + "value": { |
| 169 | + "channel_id": "123456789012345678", |
| 170 | + "content": "Hello from bot" |
| 171 | + } |
| 172 | + } |
| 173 | + ] |
| 174 | + } |
| 175 | + ] |
| 176 | + } |
| 177 | + ], |
| 178 | + "runtimes": [] |
| 179 | +} |
| 180 | +``` |
0 commit comments