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
| Name | Scope | Required | Notes |
|---|---|---|---|
flyApiToken | user | Yes | Machines REST + GraphQL / logs / Prometheus |
Hosts: api.machines.dev, api.fly.io. Placeholder: {{secret:flyApiToken}}.
Import paths
| Export | Import |
|---|---|
overview (docs) | kody:@kentcdodds/fly |
| graphql | kody:@kentcdodds/fly/graphql |
| organizations | kody:@kentcdodds/fly/organizations |
| apps | kody:@kentcdodds/fly/apps |
| machines | kody:@kentcdodds/fly/machines |
| machine-count | kody:@kentcdodds/fly/machine-count |
| app-machines | kody:@kentcdodds/fly/app-machines |
| logs | kody:@kentcdodds/fly/logs |
| metrics | kody:@kentcdodds/fly/metrics |
| smoke-test | kody:@kentcdodds/fly/smoke-test |
| docs | kody:@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
personalfor apps / machines / machine-count. - Machines REST is OpenAPI-scaffolded (
apps_list,apps_show,machines_list,machines_show,machines_org_list,currenttoken_show); client returns rawResponseinsrc/lib/openapi-client.ts. app-machinesacceptsappNameorappId.machines+machineId+appNamefetches one machine.logs: passformat: 'jsonl'to include raw JSONL lines.metrics: passappNamefor bundled CPU/memory/HTTP queries, orqueryfor custom PromQL; optionalstart/endfor range queries.- Never paste
flyApiTokenvalues into chat or logs.