Skip to main content

Using the app

Hyveon ships as a packaged Electron desktop app. It is the control surface for everything the stack does: it runs the Terraform that provisions your AWS account, it edits the game_servers map that declares your servers, it starts and stops those servers on demand, and it shows their logs and costs.

This section documents every screen. If you have not deployed anything yet, read the setup guide first for the AWS-account prerequisites, then come back here — the app's first-run wizard walks you through the rest.

The Hyveon dashboard showing the four KPI tiles across the top and a grid of game server cards below, each with a status badge, hostname, per-hour cost and Start/Stop controls

A guided tour

The path from a fresh install to a running game server is eight steps. Each one links to the page that covers it in full.

1. First launch

The app checks whether you have finished setup. If you have not, it replaces the entire window with the first-run wizard — there is no dashboard, no sidebar, and no way to skip ahead. This is deliberate: nothing else in the app works until Terraform has a state backend to talk to.

2. Complete the wizard

Five steps: install terraform and the aws CLI, choose your cloud (AWS is the only option today), point the app at an AWS profile or paste access keys, create the three bootstrap resources (an S3 state bucket, a DynamoDB lock table, an S3 tfvars bucket), and finally run terraform init against that new backend.

Progress is saved on every step change, so you can close the app and pick up where you left off. See First-run wizard.

3. Deploy the infrastructure

The wizard only creates the backend — the buckets and lock table Terraform stores its state in. Your actual infrastructure (the ECS cluster, EFS file systems, Lambdas, DynamoDB tables, Route 53 wiring) does not exist yet.

Go to Terraform, click Run plan, read the change summary, click Approve plan, then Apply. See Terraform.

4. Add a game

Open Games and click Add game. A five-step wizard collects the container image, the Fargate CPU/memory pair, the ports it listens on, and the EFS volumes it needs.

Submitting the wizard writes an entry into terraform.tfvars and nothing else. Your new game shows up in the games table tagged Pending deploy, and a banner appears telling you changes are waiting. Go back to Terraform and run another plan/approve/apply cycle to actually create the task definition, the EFS access point, and the log group in AWS. See Games.

5. Start it

Back on the Dashboard, your game now has a card. Click Start. The app calls ECS RunTask against the {game}-server task definition — there is no always-on service, so you only pay while a task is actually running.

The badge moves STOPPEDSTARTINGRUNNING, and once the task reaches RUNNING a Lambda publishes a Route 53 record for it. The card shows the hostname with a copy button. See Dashboard.

6. Check the logs

If the server does not come up, open Logs, pick the game from the combobox, and watch the CloudWatch tail. Filter by level, search to highlight, and pause when you want to read something without it scrolling away. See Logs.

7. Watch the costs

Costs shows trailing ECS + Fargate spend for the last 7 or 30 days, a delta against the previous window of the same length, and a per-game table of what each server costs per hour, per day and per month at the assumed usage. See Costs.

8. Stop it

Click Stop on the card. A confirmation dialog appears (with an option to suppress it for the rest of the session), then a toast with an Undo button in case you hit the wrong card. Stopping the task deletes its DNS record and stops the billing clock.

You can also leave it to the watchdog: after a configurable number of consecutive idle checks, the watchdog Lambda stops the task for you. See Settings.

The sidebar has two groups. Monitoring is where you watch what is happening; Configuration is where you change it.

ScreenRouteWhat it is forPage
Dashboard/Start and stop servers, see status at a glance, open a server's save filesDashboard
Logs/logsLive CloudWatch tail for one game at a timeLogs
Costs/costsTrailing spend, daily chart, per-game rate tableCosts
Games/gamesDeclare, edit and remove game servers in terraform.tfvarsGames
Discord/discordBot credentials, guild allowlist, admins, per-game permissionsDiscord
Terraform/terraformPlan, approve, apply, destroy; run history and rollbackTerraform
Audit/auditWho changed what, with before/after configAudit
Settings/settingsWatchdog tuning, re-run the cloud setup wizard, app diagnosticsSettings

Three routes have no sidebar entry and are reached from within another screen:

RouteReached from
/games/:nameClicking a game name in the games table
/terraform/historyThe View history link on the Terraform page
/terraform/history/:runIdClicking a run's kind in the history table

The one rule worth internalising

Editing a game never changes AWS. Creating, editing and removing games rewrites terraform.tfvars and stops there. Every one of those changes stays inert until you run a plan and apply it from the Terraform page.

This is why the app has a pending-changes banner, a Pending deploy chip, and an approval gate — the write and the deployment are deliberately two separate acts, so you can batch several edits and review the whole diff once.

The corresponding rule on the other side: starting and stopping a server is not a Terraform operation. Start/Stop calls ECS directly and takes effect immediately. Terraform declares what could run; the dashboard decides what is running.