CLI reference (jc)

One binary for everything outside the inference path: workloads, object storage, receipts, balances, compliance evidence. Drop-in for both Mac and Linux, x86_64 and arm64.

Install

# one-liner
curl -fsSL https://invisible.openie.sh/install.sh | sh

# Homebrew
brew install openie/tap/jc

# Manual
curl -L https://invisible.openie.sh/jc-darwin-arm64 -o /usr/local/bin/jc
chmod +x /usr/local/bin/jc

Authenticate

jc login            # opens portal in browser, captures device code
jc whoami           # prints the bound account + scope

Tokens live in the macOS Keychain / freedesktop Secret Service / ~/.config/jc/credentials on bare Linux.

Workloads

jc deploy                       # deploys current invisible.hcl
jc deploy --plan                # show what would change, no apply
jc list                         # list workloads in the account
jc logs <workload> [--tail] [--since 1h]
jc energy <workload> [--since 1h] [--by hour|day|month]
jc scale <workload> --min 2 --max 20
jc suspend <workload>
jc resume <workload>
jc delete <workload>

Functions

jc fn deploy handler.js   --route /webhook   --runtime node-22   --memory 256MB   [--cron "0 * * * *"]   [--on bucket/uploads/object-created]   [--on queue/jobs]

jc fn list
jc fn logs <name> --tail
jc fn delete <name>

Object Store

# sync external → mesh (resumable, parallelized)
jc storage sync s3://bucket  jc://bucket --workers 32
jc storage sync gs://bucket  jc://bucket
jc storage sync ./localdir   jc://bucket/prefix

# inspect
jc storage ls jc://bucket [/prefix/]
jc storage cat jc://bucket/key
jc storage stat jc://bucket/key      # size, energy-to-serve, last access
jc storage cp jc://bucket/a jc://bucket/b
jc storage rm jc://bucket/key

# pre-signed URL (S3 sigv4 compatible)
jc storage sign jc://bucket/key --ttl 1h

Database (JouleDB)

jc db create main --region eu-fi --size 100GB
jc db list
jc db connect main          # opens psql against the database
jc db slowlog main --by energy --top 50
jc db snapshot main         # immediate point-in-time snapshot
jc db restore main --snapshot snap_…
jc db delete main

Receipts & compliance

jc receipt get rcpt_…                  # full JSON
jc receipt verify --key signer_pubkey.hex receipt.json
jc receipt export --since 30d > receipts.ndjson

# CSRD / ESRS E1 evidence pack — auditor-ready
jc compliance export --format esrs-e1 --period q2-2026
jc compliance export --format ai-act-annex-xi --period 2026

Balance & billing

jc balance                    # current balance + projected runway
jc topup --amount 100         # Stripe-defaulted flow; --rail usdc, --rail points
jc bill --month current       # itemised current-period bill
jc bill --month 2026-05       # past period
jc bill --export csv          # write to stdout

Mesh

jc mesh nodes                 # which mesh nodes are healthy now
jc mesh status                # the same data as status.greenjoules.cloud
jc mesh trace <workload>      # routing decisions for that workload's last N requests

Configuration

invisible.hcl (workloads, routes, databases)

workload "api" {
  image  = "ghcr.io/me/api:1.0"
  region = "auto"
  cpu    = "2 vCPU"
  memory = "4 GB"
  energy_budget = "10 kJ/day"
  scale { min = 1, max = 20 }
  env = {
    DATABASE_URL = database.main.url
  }
}

database "main" {
  region = "eu-fi"
  size_gb = 100
}

route "api.example.com" {
  to = workload.api
  https = true
}

bucket "uploads" {
  region = "eu-fi"
  class = "standard"
}

~/.config/jc/config.toml

default_account = "my-team"
default_region = "auto"
output = "human"  # or "json" for scripts
editor = "code"

Output formats

Every command supports --output json for machine-readable output. Pipe to jq for scripting. The human format prints to stdout with ANSI colour; the JSON format is stable across versions.

jc list --output json | jq '.[] | select(.energy_kj_24h > 5)'

Exit codes

CodeMeaning
0Success
1Generic error
2Bad input / argument
3Auth failure
4Resource not found
10Insufficient balance (top up needed)
20Energy budget exceeded

Source

The jc CLI is part of the invisible-cli binary in the substrate. Source-available at git.openie.sh/openie/invisible-infrastructure.