Command-line tool for managing InsForge Backend-as-a-Service projects.
insforge whoami # verify authentication
insforge current # verify linked project
If not authenticated: insforge login
If no project linked: insforge create (new) or insforge link (existing)
| Flag | Description |
|---|---|
| ------ | ------------- |
--json | Structured JSON output (for scripts and agents) |
-y, --yes | Skip confirmation prompts |
| Code | Meaning |
|---|---|
| ------ | --------- |
| 0 | Success |
| 2 | Not authenticated |
| 3 | Project not linked |
| 4 | Resource not found |
| 5 | Permission denied |
| Variable | Description |
|---|---|
| ---------- | ------------- |
INSFORGE_ACCESS_TOKEN | Override stored access token |
INSFORGE_PROJECT_ID | Override linked project ID |
INSFORGE_EMAIL | Email for non-interactive login |
INSFORGE_PASSWORD | Password for non-interactive login |
insforge login — OAuth (browser) or --email for password login. See references/login.mdinsforge logout — clear stored credentialsinsforge whoami — show current userinsforge create — create new project. See references/create.mdinsforge link — link directory to existing projectinsforge current — show current user + linked projectinsforge list — list all orgs and projectsinsforge dbinsforge db query — execute raw SQL. See references/db-query.mdinsforge db tables / indexes / policies / triggers / functions — inspect schemainsforge db rpc [--data ] — call database function (GET if no data, POST if data)insforge db export — export schema/data. See references/db-export.mdinsforge db import — import from SQL file. See references/db-import.mdinsforge functionsinsforge functions list — list deployed functionsinsforge functions code — view function sourceinsforge functions deploy — deploy or update. See references/functions-deploy.mdinsforge functions invoke [--data ] [--method GET|POST] — invoke functioninsforge storageinsforge storage buckets — list bucketsinsforge storage create-bucket [--private] — create bucket (default: public)insforge storage delete-bucket — delete bucket and all its objects (destructive)insforge storage list-objects [--prefix] [--search] [--limit] [--sort] — list objectsinsforge storage upload --bucket [--key ] — upload fileinsforge storage download --bucket [--output ] — download fileinsforge deploymentsinsforge deployments deploy [dir] — deploy frontend app. See references/deployments-deploy.mdinsforge deployments list — list deploymentsinsforge deployments status [--sync] — get deployment status (--sync fetches from Vercel)insforge deployments cancel — cancel running deploymentinsforge secretsinsforge secrets list [--all] — list secrets (values hidden; --all includes deleted)insforge secrets get — get decrypted valueinsforge secrets add [--reserved] [--expires ] — create secretinsforge secrets update [--value] [--active] [--reserved] [--expires] — update secretinsforge secrets delete — soft delete (marks inactive; restore with --active true)insforge schedulesinsforge schedules list — list all scheduled tasks (shows ID, name, cron, URL, method, active, next run)insforge schedules get — get schedule detailsinsforge schedules create --name --cron --url --method [--headers ] [--body ] — create a cron job (5-field cron format only)insforge schedules update [--name] [--cron] [--url] [--method] [--headers] [--body] [--active] — update scheduleinsforge schedules delete — delete schedule (with confirmation)insforge schedules logs [--limit] [--offset] — view execution logsinsforge logsinsforge logs [--limit ] — fetch backend container logs (default: 20 entries)| Source | Description |
|---|---|
| -------- | ------------- |
insforge.logs | Main backend logs |
postgREST.logs | PostgREST API layer logs |
postgres.logs | PostgreSQL database logs |
function.logs | Edge function execution logs |
> Source names are case-insensitive: postgrest.logs works the same as postgREST.logs.
insforge docsinsforge docs — list all topicsinsforge docs instructions — setup guideinsforge docs — feature docs (db / storage / functions / auth / ai / realtime × typescript / swift / kotlin / rest-api)> For writing application code with the InsForge SDK, use the insforge (SDK) skill instead, and use the insforge docs to get specific SDK documentation.
Functions invoke URL: invoked at {oss_host}/functions/{slug} — NOT /api/functions/{slug}. Exits with code 1 on HTTP 400+.
Secrets delete is soft: marks the secret inactive, not destroyed. Restore with insforge secrets update KEY --active true. Use --all with secrets list to see inactive ones.
Storage delete-bucket is hard: deletes the bucket and every object inside it permanently.
db rpc uses GET or POST: no --data → GET; with --data → POST.
Schedules use 5-field cron only: minute hour day month day-of-week. 6-field (with seconds) is NOT supported. Headers can reference secrets with ${{secrets.KEY_NAME}}.
insforge db query "CREATE TABLE posts (
id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
title TEXT NOT NULL,
content TEXT,
author_id UUID REFERENCES auth.users(id),
created_at TIMESTAMPTZ DEFAULT now()
)"
insforge db query "ALTER TABLE posts ENABLE ROW LEVEL SECURITY"
insforge db query "CREATE POLICY \"public_read\" ON posts FOR SELECT USING (true)"
insforge db query "CREATE POLICY \"owner_write\" ON posts FOR INSERT WITH CHECK (auth.uid() = author_id)"
> FK to users: always auth.users(id). RLS current user: auth.uid().
# Default source path: insforge/functions/{slug}/index.ts
insforge functions deploy my-handler
insforge functions invoke my-handler --data '{"action": "test"}'
Always verify the local build succeeds before deploying. Local builds are faster to debug and don't waste server resources.
# 1. Build locally first
npm run build
# 2. Deploy
insforge deployments deploy ./dist --env '{"VITE_API_URL": "https://my-app.us-east.insforge.app"}'
Environment variable prefix by framework:
| Framework | Prefix | Example |
|---|---|---|
| ----------- | -------- | --------- |
| Vite | VITE_ | VITE_INSFORGE_URL |
| Next.js | NEXT_PUBLIC_ | NEXT_PUBLIC_INSFORGE_URL |
| Create React App | REACT_APP_ | REACT_APP_INSFORGE_URL |
| Astro | PUBLIC_ | PUBLIC_INSFORGE_URL |
| SvelteKit | PUBLIC_ | PUBLIC_INSFORGE_URL |
Pre-deploy checklist:
npm run build succeeds locallynode_modules, .git, .env, .insforge, or build output in the zipdist/, build/, .next/, etc.)insforge db export --output backup.sql
insforge db import backup.sql
# Create a schedule that calls a function every 5 minutes
insforge schedules create \
--name "Cleanup Expired" \
--cron "*/5 * * * *" \
--url "https://my-app.us-east.insforge.app/functions/cleanup" \
--method POST \
--headers '{"Authorization": "Bearer ${{secrets.API_TOKEN}}"}'
# Check execution history
insforge schedules logs <id>
InsForge uses 5-field cron expressions (pg_cron format). 6-field expressions with seconds are NOT supported.
┌─────────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌─────────── day of month (1-31)
│ │ │ ┌───────── month (1-12)
│ │ │ │ ┌─────── day of week (0-6, Sunday=0)
│ │ │ │ │
* * * * *
| Expression | Description |
|---|---|
| ------------ | ------------- |
* | Every minute |
/5 * | Every 5 minutes |
0 | Every hour (at minute 0) |
0 9 * | Daily at 9:00 AM |
0 9 1 | Every Monday at 9:00 AM |
0 0 1 | First day of every month at midnight |
30 14 1-5 | Weekdays at 2:30 PM |
Headers can reference secrets stored in InsForge using the syntax ${{secrets.KEY_NAME}}.
{
"headers": {
"Authorization": "Bearer ${{secrets.API_TOKEN}}",
"X-API-Key": "${{secrets.EXTERNAL_API_KEY}}"
}
}
Secrets are resolved at schedule creation/update time. If a referenced secret doesn't exist, the operation fails with a 404 error.
/5 * for every 5 minutes${{secrets.KEY_NAME}} in headers for API keys and tokenshttps://your-project.region.insforge.app/functions/{slug}status: "active"| Mistake | Solution |
|---|---|
| --------- | ---------- |
| Using 6-field cron (with seconds) | Use 5-field format only: minute hour day month day-of-week |
| Referencing non-existent secret | Create the secret first via secrets API |
| Targeting non-existent function | Verify function exists and is active before scheduling |
| Schedule not running | Check isActive is true and cron expression is valid |
1. Create secrets if needed -> `insforge secrets add KEY VALUE`
2. Create/verify target function -> `insforge functions list`
3. Create schedule -> `insforge schedules create`
4. Verify schedule is active -> `insforge schedules get <id>`
5. Monitor execution logs -> `insforge schedules logs <id>`
insforge logs function.logs # function execution issues
insforge logs postgres.logs # database query problems
insforge logs insforge.logs # API / auth errors
insforge logs postgrest.logs --limit 50
| Problem | Check |
|---|---|
| --------- | ------- |
| Function not working | function.logs |
| Database query failing | postgres.logs, postgREST.logs |
| Auth issues | insforge.logs |
| API returning 500 errors | insforge.logs, postgREST.logs |
INSFORGE_EMAIL=$EMAIL INSFORGE_PASSWORD=$PASSWORD insforge login --email -y
insforge link --project-id $PROJECT_ID --org-id $ORG_ID -y
insforge db query "SELECT count(*) FROM users" --json
After create or link, .insforge/project.json is created:
{
"project_id": "...",
"appkey": "...",
"region": "us-east",
"api_key": "ik_...",
"oss_host": "https://{appkey}.{region}.insforge.app"
}
oss_host is the base URL for all SDK and API operations. api_key is the admin key for backend API calls.
> Never commit this file to version control or share it publicly.
> Do not edit this file manually. Use insforge link to switch projects.
共 1 个版本