Libraries
CLI

CLI

@truetick/cli is the truetick command — a thin, scriptable wrapper over the API. It does double duty: a plugin/mod dev-loop (initdeploydevdown) and full server management (servers, files, backups, mods, console, logs, wallet).

Install

npm install -g @truetick/cli      # then: truetick <command>
# or, no install:
npx @truetick/cli servers list

Log in

truetick login                       # device flow (opens a browser)
truetick login --key ttk_your_key    # paste a key from the dashboard
truetick login --email you@x.com --password   # mint a key (prompts if value omitted)

Credentials save to ~/.truetick/config.json (mode 0600). truetick logout removes them. See Authentication for the flows in detail.

Global flags & env. Add --json to any command for raw JSON output. TRUETICK_API_KEY overrides the saved key; TRUETICK_API_URL overrides the base URL (default https://api.truetick.gg).

Onboarding & account

CommandWhat it does
truetick signup --email <e> [--password <p>] [--url <baseUrl>]Create an account and save a key
truetick login [--key <ttk>] [--email <e>] [--password <p>] [--url <baseUrl>]Log in (key paste / password / device flow)
truetick logoutRemove saved credentials
truetick whoamiShow the account the key is bound to
truetick walletShow wallet balance
truetick topup --amount <usd>Open a Paddle checkout and wait for the balance to update

Servers

truetick servers list
truetick servers get <id>
truetick servers start <id>
truetick servers stop <id>
truetick servers restart <id>
truetick servers delete <id> --yes        # destructive — requires --yes

Create a server:

truetick servers create --name "My SMP" --ram 4096 --type PAPER --version 1.21.1 [--region na] [--plan metered]
FlagNotes
--name <name>Required. Slugified into the server id/hostname
--ram <mb>Required unless --template is used
--type <type>Core: PAPER, PURPUR, VANILLA, FABRIC, FORGE, …
--version <v>Minecraft version, e.g. 1.21.1
--region <r>na or eu
--plan <plan>metered (default) or flat
--template <id>Create from a template; --ram/--region/--version/--plan become overrides

Create from a template instead of bare inputs:

truetick templates list
truetick servers create --template paper-survival --name "my-server"

Console (RCON)

truetick console <id> "say Hello from the CLI!"

Logs

truetick logs <id> --tail 100      # snapshot of recent lines
truetick logs <id> --follow        # live stream (Ctrl-C to stop)

See Stream logs.

Files

truetick files ls  <id> /data
truetick files cat <id> /data/server.properties
truetick files put <id> /data/ ./local.txt     # SFTP upload, binary-safe (jars OK)
truetick files rm  <id> /data/old.txt --yes    # destructive — requires --yes

files put uploads over per-server SFTP, so it's safe for binary artifacts. If the remote path ends in / (or is empty), the local filename is appended.

Backups

truetick backups create  <id>
truetick backups list    <id>
truetick backups restore <id> <backupId> --yes   # server must be stopped; requires --yes

Mods

truetick mods list   <id>
truetick mods add    <id> --source modrinth   --project sodium [--version 0.5.11]
truetick mods add    <id> --source curseforge --project 394468 [--version mc1.20.4-0.11.2]
truetick mods remove <id> --source modrinth   --project sodium

The dev-loop

For plugin/mod authors. init writes truetick.toml, deploy builds-uploads-restarts-confirms, dev does that on every rebuild, down deletes an ephemeral dev server.

cd my-plugin
 
# Bind to an existing server…
truetick init --server my-smp
# …or create a fresh metered, scale-to-zero dev server (requires --yes for the metered charge):
truetick init --create --name "Dev" --ram 4096 --type PAPER --yes
 
truetick deploy          # build → upload jar (SFTP) → restart → confirm it loaded
truetick deploy --no-build   # skip the build step
truetick dev             # redeploy on every artifact change + tail logs (Ctrl-C to stop)
truetick down --yes      # delete the bound (ephemeral) dev server

init flags: --server <id> | --create with --name, --ram (default 4096), --type, --version, --region, --yes. A --create server is metered + scale-to-zero — you're billed only while it's awake. Full recipe: Deploy a plugin.

truetick.toml

init auto-detects your build and writes the project file:

FieldMeaning
serverServer id this project deploys to
targetUpload dir: plugins (Bukkit cores) or mods (loaders)
buildBuild command (Gradle → gradle build, Maven → mvn -q package); omitted if undetected
artifactGlob for the built jar (e.g. build/libs/*.jar, target/*.jar, *.jar)
on_deployrestart
ephemeraltrue when created by init --create (lets down delete it safely)
server = "dev"
target = "plugins"
build = "gradle build"
artifact = "build/libs/*.jar"
on_deploy = "restart"
ephemeral = true

Destructive commands

Anything that deletes or overwrites data requires an explicit --yes; without it the command refuses:

Refusing destructive action without --yes: Delete server my-smp?

This covers servers delete, files rm, backups restore, and down.