Skip to content
← Public packages

@kentcdodds/fly

Manage Fly.io apps, Machines, logs, and metrics.

AGENTS.md

102 lines · 2.9 KB · Markdown

@kentcdodds/fly — agent notes

Human setup and intent live in README.md. This file is for agents: imports, smoke checks, snippets, and edge cases. Secrets by name only — never paste token values. Do not disable live webhooks or jobs.

Secrets

NameScopeRequiredNotes
flyApiTokenuserYesMachines REST + GraphQL / logs / Prometheus

Hosts: api.machines.dev, api.fly.io. Placeholder: {{secret:flyApiToken}}.

Import paths

ExportImport
overview (docs)kody:@kentcdodds/fly
graphqlkody:@kentcdodds/fly/graphql
organizationskody:@kentcdodds/fly/organizations
appskody:@kentcdodds/fly/apps
machineskody:@kentcdodds/fly/machines
machine-countkody:@kentcdodds/fly/machine-count
app-machineskody:@kentcdodds/fly/app-machines
logskody:@kentcdodds/fly/logs
metricskody:@kentcdodds/fly/metrics
smoke-testkody:@kentcdodds/fly/smoke-test
docskody:@kentcdodds/fly/docs

Prefer static kody:@kentcdodds/fly/... imports from execute. Do not lead with packages.invoke.

Smoke test (read-only)

import smokeTest from 'kody:@kentcdodds/fly/smoke-test'

export default async function main() {
	return await smokeTest()
	// => { ok: true, organizationCount, appCount, machineCount, ... }
}

Skip the machine-count page when you only need org/app auth:

import smokeTest from 'kody:@kentcdodds/fly/smoke-test'

export default async function main() {
	return await smokeTest({ includeMachines: false })
}

Common snippets

List apps (Machines REST, default org personal):

import listApps from 'kody:@kentcdodds/fly/apps'

export default async function main() {
	return await listApps({ organizationSlug: 'personal' })
}

List machines for one app:

import machines from 'kody:@kentcdodds/fly/machines'

export default async function main() {
	return await machines({ appName: 'my-app' })
}

Logs for an outage window:

import logs from 'kody:@kentcdodds/fly/logs'

export default async function main() {
	return await logs({
		appName: 'my-app',
		start: '2026-06-24T14:00:00Z',
		end: '2026-06-24T15:00:00Z',
	})
}

Edge cases

  • Default org slug is personal for apps / machines / machine-count.
  • Machines REST is OpenAPI-scaffolded (apps_list, apps_show, machines_list, machines_show, machines_org_list, currenttoken_show); client returns raw Response in src/lib/openapi-client.ts.
  • app-machines accepts appName or appId.
  • machines + machineId + appName fetches one machine.
  • logs: pass format: 'jsonl' to include raw JSONL lines.
  • metrics: pass appName for bundled CPU/memory/HTTP queries, or query for custom PromQL; optional start/end for range queries.
  • Never paste flyApiToken values into chat or logs.