@xano/developer-mcp 1.0.60 → 1.0.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -500,12 +500,19 @@ Use this tool to understand CLI commands for local development, code synchroniza
500
500
  | Topic | Description |
501
501
  |-------|-------------|
502
502
  | `start` | Getting started with the CLI - installation and setup |
503
+ | `auth` | Browser-based OAuth authentication |
503
504
  | `profile` | Profile management - credentials and multi-environment setup |
504
- | `workspace` | Workspace operations - pull/push code sync |
505
+ | `workspace` | Workspace operations - pull/push code sync, git integration |
505
506
  | `branch` | Branch management - list, switch, create, and delete branches |
506
507
  | `function` | Function management - list, get, create, edit |
508
+ | `release` | Release management - create, export, import, pull, push |
509
+ | `tenant` | Tenant management - CRUD, deployments, env vars, backups, clusters |
510
+ | `unit_test` | Unit test management - list and run unit tests |
511
+ | `workflow_test` | Workflow test management - list, run, and manage workflow tests |
507
512
  | `run` | Run API commands - execute code, manage projects/sessions |
513
+ | `platform` | Platform management - list and view platform versions |
508
514
  | `static_host` | Static hosting - deploy frontend builds |
515
+ | `update` | Update the CLI to the latest version |
509
516
  | `integration` | CLI + Meta API integration guide - when to use each |
510
517
 
511
518
  **Examples:**
@@ -6,25 +6,39 @@
6
6
  */
7
7
  import { formatDocumentation } from "./format.js";
8
8
  // Import all topic documentation
9
+ import { authDoc } from "./topics/auth.js";
9
10
  import { startDoc } from "./topics/start.js";
10
11
  import { profileDoc } from "./topics/profile.js";
11
12
  import { workspaceDoc } from "./topics/workspace.js";
12
13
  import { branchDoc } from "./topics/branch.js";
13
14
  import { functionDoc } from "./topics/function.js";
15
+ import { releaseDoc } from "./topics/release.js";
16
+ import { tenantDoc } from "./topics/tenant.js";
17
+ import { unitTestDoc } from "./topics/unit_test.js";
18
+ import { workflowTestDoc } from "./topics/workflow_test.js";
14
19
  import { runDoc } from "./topics/run.js";
20
+ import { platformDoc } from "./topics/platform.js";
15
21
  import { staticHostDoc } from "./topics/static_host.js";
22
+ import { updateDoc } from "./topics/update.js";
16
23
  import { integrationDoc } from "./topics/integration.js";
17
24
  /**
18
25
  * All available documentation topics
19
26
  */
20
27
  export const topics = {
28
+ auth: authDoc,
21
29
  start: startDoc,
22
30
  profile: profileDoc,
23
31
  workspace: workspaceDoc,
24
32
  branch: branchDoc,
25
33
  function: functionDoc,
34
+ release: releaseDoc,
35
+ tenant: tenantDoc,
36
+ unit_test: unitTestDoc,
37
+ workflow_test: workflowTestDoc,
26
38
  run: runDoc,
39
+ platform: platformDoc,
27
40
  static_host: staticHostDoc,
41
+ update: updateDoc,
28
42
  integration: integrationDoc,
29
43
  };
30
44
  /**
@@ -72,8 +86,9 @@ ${getTopicDescriptions()}
72
86
 
73
87
  ## Usage
74
88
  - Start with "start" topic for installation and setup
89
+ - Use "auth" or "profile" to understand authentication options
75
90
  - Use "integration" to understand when to use CLI vs Meta API
76
- - Use specific topics (profile, workspace, function, run) for command reference`,
91
+ - Use specific topics for command reference (workspace, branch, release, tenant, function, run, etc.)`,
77
92
  inputSchema: {
78
93
  type: "object",
79
94
  properties: {
@@ -0,0 +1,2 @@
1
+ import type { TopicDoc } from "../types.js";
2
+ export declare const authDoc: TopicDoc;
@@ -0,0 +1,62 @@
1
+ export const authDoc = {
2
+ topic: "auth",
3
+ title: "Xano CLI - Authentication",
4
+ description: `The \`auth\` command provides browser-based OAuth authentication for the Xano CLI. It opens your browser, lets you log in to your Xano account, and automatically creates a profile with your credentials.
5
+
6
+ ## How It Works
7
+
8
+ 1. CLI starts a local HTTP server on a random port
9
+ 2. Opens your browser to the Xano login page
10
+ 3. After login, Xano redirects back to the local server with your token
11
+ 4. CLI validates the token, lets you select instance/workspace/branch
12
+ 5. Saves the profile to \`~/.xano/credentials.yaml\`
13
+
14
+ The authentication flow has a 5-minute timeout.`,
15
+ ai_hints: `**auth vs profile:wizard:**
16
+ - \`xano auth\` - Browser-based OAuth login (recommended for interactive use)
17
+ - \`xano profile:wizard\` - Token-based interactive setup (requires manually copying token)
18
+ - \`xano profile:create\` - Non-interactive, requires all flags
19
+
20
+ **When to suggest auth:**
21
+ - User is setting up CLI for the first time
22
+ - User doesn't have an access token handy
23
+ - User prefers browser-based login
24
+
25
+ **When to suggest profile:wizard instead:**
26
+ - User already has an access token
27
+ - User is in a headless/SSH environment without browser access
28
+ - User needs non-interactive setup (CI/CD)`,
29
+ related_topics: ["profile", "start"],
30
+ commands: [
31
+ {
32
+ name: "auth",
33
+ description: "Authenticate with Xano via browser login. Opens your browser to log in and automatically creates a CLI profile.",
34
+ usage: "xano auth [options]",
35
+ flags: [
36
+ { name: "origin", type: "string", required: false, description: "Xano account origin URL (e.g., https://app.xano.com)" },
37
+ { name: "insecure", short: "k", type: "boolean", required: false, description: "Skip TLS certificate verification (for self-signed certs)" }
38
+ ],
39
+ examples: [
40
+ "xano auth",
41
+ "xano auth --origin https://app.xano.com",
42
+ "xano auth -k # for self-signed certificates"
43
+ ]
44
+ }
45
+ ],
46
+ workflows: [
47
+ {
48
+ name: "First-Time Setup with Browser Login",
49
+ description: "Set up the CLI using browser-based authentication",
50
+ steps: [
51
+ "Install CLI: `npm install -g @xano/cli`",
52
+ "Run: `xano auth`",
53
+ "Log in via your browser when it opens",
54
+ "Select your instance, workspace, and branch",
55
+ "Verify: `xano profile:me`"
56
+ ],
57
+ example: `npm install -g @xano/cli
58
+ xano auth
59
+ xano profile:me`
60
+ }
61
+ ]
62
+ };
@@ -29,7 +29,7 @@ Branches are identified by their **label** (e.g., "v1", "dev", "staging"), not n
29
29
  - Most commands need a workspace ID
30
30
  - Pass via \`--workspace\` flag or configure in profile
31
31
  - Use \`xano workspace:list\` to find workspace IDs`,
32
- related_topics: ["workspace", "profile", "integration"],
32
+ related_topics: ["workspace", "release", "profile", "integration"],
33
33
  commands: [
34
34
  {
35
35
  name: "branch:list",
@@ -29,7 +29,8 @@ export const functionDoc = {
29
29
  { name: "search", type: "string", required: false, description: "Search by name" },
30
30
  { name: "sort", type: "string", required: false, description: "Sort field" },
31
31
  { name: "order", type: "string", required: false, description: "Sort order: asc, desc" },
32
- { name: "include_draft", type: "boolean", required: false, description: "Include draft versions" }
32
+ { name: "include_draft", type: "boolean", required: false, description: "Include draft versions" },
33
+ { name: "include_xanoscript", type: "boolean", required: false, description: "Include XanoScript source in output" }
33
34
  ],
34
35
  examples: [
35
36
  "xano function:list",
@@ -81,11 +82,16 @@ export const functionDoc = {
81
82
  ],
82
83
  flags: [
83
84
  { name: "workspace", short: "w", type: "string", required: false, description: "Workspace ID" },
84
- { name: "file", short: "f", type: "string", required: false, description: "Path to .xs file with updated code" }
85
+ { name: "file", short: "f", type: "string", required: false, description: "Path to .xs file with updated code" },
86
+ { name: "stdin", type: "boolean", required: false, description: "Read updated code from stdin" },
87
+ { name: "edit", type: "boolean", required: false, description: "Open current code in $EDITOR before updating" },
88
+ { name: "no-publish", type: "boolean", required: false, description: "Save as draft without publishing" }
85
89
  ],
86
90
  examples: [
87
91
  "xano function:edit 145",
88
- "xano function:edit 145 -f ./updated_function.xs"
92
+ "xano function:edit 145 -f ./updated_function.xs",
93
+ "xano function:edit 145 --edit",
94
+ "xano function:edit 145 --no-publish"
89
95
  ]
90
96
  }
91
97
  ],
@@ -21,8 +21,13 @@ npm install -g @xano/cli
21
21
  | Local development | Yes | - |
22
22
  | Code sync (pull/push) | Yes | - |
23
23
  | Quick function edits | Yes | - |
24
+ | Branch management | Yes | Yes |
25
+ | Release management | Yes | Yes |
26
+ | Tenant management | Yes | Yes |
27
+ | Run unit/workflow tests | Yes | - |
24
28
  | Execute XanoScript | Yes | Yes (Run API) |
25
29
  | CI/CD automation | Both | Both |
30
+ | Deploy static sites | Yes | - |
26
31
  | Programmatic management | - | Yes |
27
32
  | Create tables/schemas | - | Yes |
28
33
  | Manage API groups | - | Yes |
@@ -82,7 +87,7 @@ TOKEN=$(xano profile:token)
82
87
  # Use with Meta API
83
88
  curl -H "Authorization: Bearer $TOKEN" https://instance.xano.io/api:meta/workspace
84
89
  \`\`\``,
85
- related_topics: ["start", "profile", "workspace"],
90
+ related_topics: ["start", "auth", "profile", "workspace", "release", "tenant"],
86
91
  workflows: [
87
92
  {
88
93
  name: "Local Development with Version Control",
@@ -0,0 +1,2 @@
1
+ import type { TopicDoc } from "../types.js";
2
+ export declare const platformDoc: TopicDoc;
@@ -0,0 +1,41 @@
1
+ export const platformDoc = {
2
+ topic: "platform",
3
+ title: "Xano CLI - Platform Management",
4
+ description: `Platform commands let you view available Xano platform versions. Platforms define the runtime environment for tenants and can be deployed to tenants using \`tenant:deploy_platform\`.`,
5
+ ai_hints: `**Platforms are read-only in the CLI** - you can list and view them but not create/modify.
6
+
7
+ **Use cases:**
8
+ - Check available platform versions before deploying to a tenant
9
+ - Get platform details (version, features, etc.)
10
+ - Used with \`tenant:deploy_platform\` to update a tenant's runtime`,
11
+ related_topics: ["tenant"],
12
+ commands: [
13
+ {
14
+ name: "platform:list",
15
+ description: "List all available platform versions",
16
+ usage: "xano platform:list [options]",
17
+ flags: [
18
+ { name: "output", short: "o", type: "string", required: false, default: "summary", description: "Output format: summary or json" }
19
+ ],
20
+ examples: [
21
+ "xano platform:list",
22
+ "xano platform:list -o json"
23
+ ]
24
+ },
25
+ {
26
+ name: "platform:get",
27
+ description: "Get details of a specific platform version",
28
+ usage: "xano platform:get <platform_id> [options]",
29
+ args: [
30
+ { name: "platform_id", required: true, description: "Platform ID" }
31
+ ],
32
+ flags: [
33
+ { name: "output", short: "o", type: "string", required: false, default: "summary", description: "Output format: summary or json" }
34
+ ],
35
+ examples: [
36
+ "xano platform:get 5",
37
+ "xano platform:get 5 -o json"
38
+ ]
39
+ }
40
+ ]
41
+ };
@@ -38,18 +38,28 @@ default: production
38
38
  **Switching contexts:**
39
39
  - Use \`-p <profile>\` flag on any command
40
40
  - Or set \`XANO_PROFILE\` environment variable
41
- - Or use \`profile:set-default\` to change default`,
42
- related_topics: ["start", "integration"],
41
+ - Or use \`profile:set\` to change default
42
+
43
+ **Alternative auth methods:**
44
+ - \`xano auth\` - Browser-based OAuth login (no token needed)
45
+ - \`xano profile:wizard\` - Interactive token-based setup
46
+ - \`xano profile:create\` - Non-interactive (for CI/CD)`,
47
+ related_topics: ["auth", "start", "integration"],
43
48
  commands: [
44
49
  {
45
50
  name: "profile:wizard",
46
- description: "Interactive setup wizard for creating a profile",
47
- usage: "xano profile:wizard",
48
- examples: ["xano profile:wizard"]
51
+ description: "Interactive setup wizard for creating a profile. Prompts for token, instance, workspace, and branch.",
52
+ usage: "xano profile:wizard [options]",
53
+ flags: [
54
+ { name: "name", short: "n", type: "string", required: false, description: "Profile name (prompted if not provided)" },
55
+ { name: "origin", short: "o", type: "string", required: false, description: "Xano account origin URL" },
56
+ { name: "insecure", short: "k", type: "boolean", required: false, description: "Skip TLS certificate verification" }
57
+ ],
58
+ examples: ["xano profile:wizard", "xano profile:wizard -n myprofile"]
49
59
  },
50
60
  {
51
61
  name: "profile:create",
52
- description: "Create a new profile with explicit flags",
62
+ description: "Create a new profile with explicit flags (non-interactive)",
53
63
  usage: "xano profile:create <name> -i <instance_origin> -t <token> [options]",
54
64
  args: [
55
65
  { name: "name", required: true, description: "Profile name" }
@@ -57,13 +67,15 @@ default: production
57
67
  flags: [
58
68
  { name: "instance_origin", short: "i", type: "string", required: true, description: "Xano instance URL" },
59
69
  { name: "access_token", short: "t", type: "string", required: true, description: "Access token" },
70
+ { name: "account_origin", short: "a", type: "string", required: false, description: "Xano account origin URL" },
60
71
  { name: "workspace", short: "w", type: "string", required: false, description: "Default workspace ID" },
61
- { name: "branch", short: "b", type: "string", required: false, description: "Default branch ID" },
62
- { name: "project", short: "j", type: "string", required: false, description: "Default Run project ID" }
72
+ { name: "branch", short: "b", type: "string", required: false, description: "Default branch label" },
73
+ { name: "default", type: "boolean", required: false, description: "Set as the default profile" },
74
+ { name: "insecure", short: "k", type: "boolean", required: false, description: "Skip TLS certificate verification" }
63
75
  ],
64
76
  examples: [
65
77
  "xano profile:create production -i https://x8ki.xano.io -t mytoken123",
66
- "xano profile:create staging -i https://x8ki.xano.io -t mytoken -w 1 -b 2"
78
+ "xano profile:create staging -i https://x8ki.xano.io -t mytoken -w 1 -b dev --default"
67
79
  ]
68
80
  },
69
81
  {
@@ -71,71 +83,94 @@ default: production
71
83
  description: "List all configured profiles",
72
84
  usage: "xano profile:list [--details]",
73
85
  flags: [
74
- { name: "details", type: "boolean", required: false, description: "Show masked tokens and full config" }
86
+ { name: "details", short: "d", type: "boolean", required: false, description: "Show masked tokens, origins, workspace, branch, and insecure status" }
75
87
  ],
76
88
  examples: ["xano profile:list", "xano profile:list --details"]
77
89
  },
78
90
  {
79
91
  name: "profile:edit",
80
92
  description: "Edit an existing profile",
81
- usage: "xano profile:edit <name> [options]",
93
+ usage: "xano profile:edit [name] [options]",
82
94
  args: [
83
- { name: "name", required: true, description: "Profile name to edit" }
95
+ { name: "name", required: false, description: "Profile name to edit (uses default if not provided)" }
84
96
  ],
85
97
  flags: [
98
+ { name: "access_token", short: "t", type: "string", required: false, description: "Update access token" },
99
+ { name: "instance_origin", short: "i", type: "string", required: false, description: "Update instance URL" },
100
+ { name: "account_origin", short: "a", type: "string", required: false, description: "Update account origin URL" },
86
101
  { name: "workspace", short: "w", type: "string", required: false, description: "Set workspace ID" },
87
- { name: "branch", short: "b", type: "string", required: false, description: "Set branch ID" },
88
- { name: "project", short: "j", type: "string", required: false, description: "Set Run project ID" },
102
+ { name: "branch", short: "b", type: "string", required: false, description: "Set branch label" },
103
+ { name: "insecure", type: "boolean", required: false, description: "Enable insecure mode for self-signed certs" },
89
104
  { name: "remove-workspace", type: "boolean", required: false, description: "Remove workspace setting" },
90
- { name: "remove-branch", type: "boolean", required: false, description: "Remove branch setting" }
105
+ { name: "remove-branch", type: "boolean", required: false, description: "Remove branch setting" },
106
+ { name: "remove-insecure", type: "boolean", required: false, description: "Remove insecure setting" }
91
107
  ],
92
108
  examples: [
93
109
  "xano profile:edit production -w 2",
94
- "xano profile:edit staging --remove-branch"
110
+ "xano profile:edit staging --remove-branch",
111
+ "xano profile:edit production -t new-token-here"
95
112
  ]
96
113
  },
97
114
  {
98
115
  name: "profile:delete",
99
- description: "Delete a profile",
116
+ description: "Delete a profile. Auto-updates default if deleting the current default.",
100
117
  usage: "xano profile:delete <name> [--force]",
101
118
  args: [
102
119
  { name: "name", required: true, description: "Profile name to delete" }
103
120
  ],
104
121
  flags: [
105
- { name: "force", type: "boolean", required: false, description: "Skip confirmation prompt" }
122
+ { name: "force", short: "f", type: "boolean", required: false, description: "Skip confirmation prompt" }
106
123
  ],
107
124
  examples: ["xano profile:delete old-profile", "xano profile:delete test --force"]
108
125
  },
109
126
  {
110
- name: "profile:set-default",
127
+ name: "profile:set",
111
128
  description: "Set the default profile",
112
- usage: "xano profile:set-default <name>",
129
+ usage: "xano profile:set <name>",
113
130
  args: [
114
131
  { name: "name", required: true, description: "Profile to set as default" }
115
132
  ],
116
- examples: ["xano profile:set-default production"]
133
+ examples: ["xano profile:set production"]
117
134
  },
118
135
  {
119
- name: "profile:get-default",
120
- description: "Show the current default profile name",
121
- usage: "xano profile:get-default",
122
- examples: ["xano profile:get-default"]
136
+ name: "profile:get",
137
+ description: "Print the current default profile name",
138
+ usage: "xano profile:get",
139
+ examples: ["xano profile:get"]
123
140
  },
124
141
  {
125
142
  name: "profile:me",
126
- description: "Display current authenticated user info",
127
- usage: "xano profile:me [-p <profile>]",
128
- examples: ["xano profile:me", "xano profile:me -p staging"]
143
+ description: "Display current authenticated user info (ID, name, email, instance)",
144
+ usage: "xano profile:me [options]",
145
+ flags: [
146
+ { name: "output", short: "o", type: "string", required: false, default: "summary", description: "Output format: summary or json" }
147
+ ],
148
+ examples: ["xano profile:me", "xano profile:me -p staging", "xano profile:me -o json"]
129
149
  },
130
150
  {
131
151
  name: "profile:token",
132
- description: "Print the access token (for piping to clipboard)",
133
- usage: "xano profile:token [-p <profile>]",
152
+ description: "Print the access token for the default profile (useful for piping)",
153
+ usage: "xano profile:token",
134
154
  examples: [
135
155
  "xano profile:token",
136
156
  "xano profile:token | pbcopy # macOS",
137
157
  "xano profile:token | xclip # Linux"
138
158
  ]
159
+ },
160
+ {
161
+ name: "profile:workspace",
162
+ description: "Print the workspace ID for the default profile",
163
+ usage: "xano profile:workspace",
164
+ examples: ["xano profile:workspace"]
165
+ },
166
+ {
167
+ name: "profile:workspace:set",
168
+ description: "Interactively select and set the workspace for a profile",
169
+ usage: "xano profile:workspace:set [-p <profile>]",
170
+ examples: [
171
+ "xano profile:workspace:set",
172
+ "xano profile:workspace:set -p staging"
173
+ ]
139
174
  }
140
175
  ],
141
176
  workflows: [
@@ -145,7 +180,7 @@ default: production
145
180
  steps: [
146
181
  "Create production profile: `xano profile:create prod -i <url> -t <token> -b 1`",
147
182
  "Create staging profile: `xano profile:create staging -i <url> -t <token> -b 2`",
148
- "Set default: `xano profile:set-default prod`",
183
+ "Set default: `xano profile:set prod`",
149
184
  "Use staging when needed: `xano workspace:pull ./code -p staging`"
150
185
  ]
151
186
  }
@@ -0,0 +1,2 @@
1
+ import type { TopicDoc } from "../types.js";
2
+ export declare const releaseDoc: TopicDoc;
@@ -0,0 +1,215 @@
1
+ export const releaseDoc = {
2
+ topic: "release",
3
+ title: "Xano CLI - Release Management",
4
+ description: `Release commands let you manage named releases in a Xano workspace. Releases are versioned snapshots of a branch, used for deploying specific versions to tenants.
5
+
6
+ ## Key Concepts
7
+
8
+ - **Release**: A named snapshot of a branch at a point in time, used for versioned deployments.
9
+ - **Hotfix release**: A release that bypasses the normal release flow for urgent production fixes.
10
+ - **Export/Import**: Releases can be exported as portable files and imported into other workspaces.
11
+ - **Pull/Push**: Similar to \`workspace:pull\` and \`workspace:push\`, but scoped to a release in multidoc format.
12
+
13
+ ## Release Identification
14
+
15
+ Releases are identified by their **name** (e.g., "v1.0.0", "2024-03-hotfix").`,
16
+ ai_hints: `**Key concepts:**
17
+ - Releases are versioned snapshots of a branch, created for deployment to tenants
18
+ - Created from branches and deployed to tenants as part of the release lifecycle
19
+ - \`release:pull\` and \`release:push\` work like \`workspace:pull\` and \`workspace:push\` but scoped to releases
20
+ - \`release:export\` and \`release:import\` allow portable release files for moving between workspaces
21
+ - Hotfix releases bypass the normal release flow for urgent production fixes
22
+ - Use \`--table-ids\` on \`release:create\` to include only specific tables in the release
23
+
24
+ **Typical workflow:**
25
+ 1. \`xano release:list\` - see available releases
26
+ 2. \`xano release:create -n v1.0.0 -b dev\` - create release from branch
27
+ 3. Deploy release to tenant (see tenant topic)
28
+ 4. \`xano release:export v1.0.0 --output ./release.tar.gz\` - export for portability`,
29
+ related_topics: ["branch", "tenant", "workspace"],
30
+ commands: [
31
+ {
32
+ name: "release:list",
33
+ description: "List all releases in a workspace",
34
+ usage: "xano release:list [options]",
35
+ flags: [
36
+ { name: "workspace", short: "w", type: "string", required: false, description: "Workspace ID (uses profile workspace if not provided)" },
37
+ { name: "output", short: "o", type: "string", required: false, default: "summary", description: "Output format: summary or json" }
38
+ ],
39
+ examples: [
40
+ "xano release:list",
41
+ "xano release:list -w 123",
42
+ "xano release:list --output json"
43
+ ]
44
+ },
45
+ {
46
+ name: "release:get",
47
+ description: "Get details for a specific release",
48
+ usage: "xano release:get <release_name> [options]",
49
+ args: [
50
+ { name: "release_name", required: true, description: "Name of the release to retrieve" }
51
+ ],
52
+ flags: [
53
+ { name: "workspace", short: "w", type: "string", required: false, description: "Workspace ID (uses profile workspace if not provided)" },
54
+ { name: "output", short: "o", type: "string", required: false, default: "summary", description: "Output format: summary or json" }
55
+ ],
56
+ examples: [
57
+ "xano release:get v1.0.0",
58
+ "xano release:get v1.0.0 --output json"
59
+ ]
60
+ },
61
+ {
62
+ name: "release:create",
63
+ description: "Create a named release from a branch",
64
+ usage: "xano release:create --name <name> --branch <branch> [options]",
65
+ flags: [
66
+ { name: "name", short: "n", type: "string", required: true, description: "Name for the new release" },
67
+ { name: "branch", short: "b", type: "string", required: true, description: "Branch to create the release from" },
68
+ { name: "description", short: "d", type: "string", required: false, description: "Description for the release" },
69
+ { name: "hotfix", type: "boolean", required: false, description: "Mark this release as a hotfix" },
70
+ { name: "table-ids", type: "string", required: false, description: "Comma-separated table IDs to include in the release" },
71
+ { name: "workspace", short: "w", type: "string", required: false, description: "Workspace ID (uses profile workspace if not provided)" },
72
+ { name: "output", short: "o", type: "string", required: false, default: "summary", description: "Output format: summary or json" }
73
+ ],
74
+ examples: [
75
+ "xano release:create -n v1.0.0 -b dev",
76
+ 'xano release:create --name v1.1.0 --branch staging -d "Staging release"',
77
+ "xano release:create -n hotfix-auth -b v1 --hotfix"
78
+ ]
79
+ },
80
+ {
81
+ name: "release:edit",
82
+ description: "Edit release metadata",
83
+ usage: "xano release:edit <release_name> [options]",
84
+ args: [
85
+ { name: "release_name", required: true, description: "Name of the release to edit" }
86
+ ],
87
+ flags: [
88
+ { name: "name", short: "n", type: "string", required: false, description: "New name for the release" },
89
+ { name: "description", short: "d", type: "string", required: false, description: "New description for the release" },
90
+ { name: "workspace", short: "w", type: "string", required: false, description: "Workspace ID (uses profile workspace if not provided)" }
91
+ ],
92
+ examples: [
93
+ "xano release:edit v1.0.0 --name v1.0.1",
94
+ 'xano release:edit v1.0.0 -d "Updated description"'
95
+ ]
96
+ },
97
+ {
98
+ name: "release:delete",
99
+ description: "Delete a release",
100
+ usage: "xano release:delete <release_name> [options]",
101
+ args: [
102
+ { name: "release_name", required: true, description: "Name of the release to delete" }
103
+ ],
104
+ flags: [
105
+ { name: "force", type: "boolean", required: false, description: "Skip confirmation prompt" },
106
+ { name: "workspace", short: "w", type: "string", required: false, description: "Workspace ID (uses profile workspace if not provided)" }
107
+ ],
108
+ examples: [
109
+ "xano release:delete v1.0.0",
110
+ "xano release:delete v1.0.0 --force"
111
+ ]
112
+ },
113
+ {
114
+ name: "release:export",
115
+ description: "Download a release as a portable file",
116
+ usage: "xano release:export <release_name> [options]",
117
+ args: [
118
+ { name: "release_name", required: true, description: "Name of the release to export" }
119
+ ],
120
+ flags: [
121
+ { name: "output", type: "string", required: false, description: "File path for the downloaded release file" },
122
+ { name: "workspace", short: "w", type: "string", required: false, description: "Workspace ID (uses profile workspace if not provided)" }
123
+ ],
124
+ examples: [
125
+ "xano release:export v1.0.0",
126
+ "xano release:export v1.0.0 --output ./releases/v1.0.0.tar.gz"
127
+ ]
128
+ },
129
+ {
130
+ name: "release:import",
131
+ description: "Import a release from a file",
132
+ usage: "xano release:import --file <path> [options]",
133
+ flags: [
134
+ { name: "file", type: "string", required: true, description: "Path to the release file to import" },
135
+ { name: "workspace", short: "w", type: "string", required: false, description: "Workspace ID (uses profile workspace if not provided)" }
136
+ ],
137
+ examples: [
138
+ "xano release:import --file ./releases/v1.0.0.tar.gz",
139
+ "xano release:import --file ./release.tar.gz -w 123"
140
+ ]
141
+ },
142
+ {
143
+ name: "release:pull",
144
+ description: "Pull release contents to local files in multidoc format",
145
+ usage: "xano release:pull <directory> --release <name> [options]",
146
+ args: [
147
+ { name: "directory", required: true, description: "Local directory to pull release contents into" }
148
+ ],
149
+ flags: [
150
+ { name: "release", short: "r", type: "string", required: true, description: "Name of the release to pull" },
151
+ { name: "env", type: "boolean", required: false, description: "Include environment variables" },
152
+ { name: "records", type: "boolean", required: false, description: "Include table records" },
153
+ { name: "workspace", short: "w", type: "string", required: false, description: "Workspace ID (uses profile workspace if not provided)" }
154
+ ],
155
+ examples: [
156
+ "xano release:pull ./release-v1 -r v1.0.0",
157
+ "xano release:pull ./release-v1 --release v1.0.0 --env --records"
158
+ ]
159
+ },
160
+ {
161
+ name: "release:push",
162
+ description: "Push local files as a new release",
163
+ usage: "xano release:push <directory> --name <name> [options]",
164
+ args: [
165
+ { name: "directory", required: true, description: "Local directory containing files to push as a release" }
166
+ ],
167
+ flags: [
168
+ { name: "name", short: "n", type: "string", required: true, description: "Name for the new release" },
169
+ { name: "branch", short: "b", type: "string", required: false, description: "Branch to associate the release with" },
170
+ { name: "hotfix", type: "boolean", required: false, description: "Mark this release as a hotfix" },
171
+ { name: "description", short: "d", type: "string", required: false, description: "Description for the release" },
172
+ { name: "records", type: "boolean", required: false, description: "Include records (--no-records to exclude)" },
173
+ { name: "env", type: "boolean", required: false, description: "Include environment variables (--no-env to exclude)" },
174
+ { name: "workspace", short: "w", type: "string", required: false, description: "Workspace ID (uses profile workspace if not provided)" }
175
+ ],
176
+ examples: [
177
+ "xano release:push ./release-v1 -n v1.0.0",
178
+ "xano release:push ./release-v1 --name v1.1.0 -b dev --records --env",
179
+ "xano release:push ./release-v1 -n hotfix-1 --hotfix --no-records"
180
+ ]
181
+ }
182
+ ],
183
+ workflows: [
184
+ {
185
+ name: "Create and Deploy Release",
186
+ description: "Create a release from a branch and deploy it to a tenant",
187
+ steps: [
188
+ "List branches to find the source: `xano branch:list`",
189
+ "Create a release: `xano release:create -n v1.0.0 -b dev`",
190
+ "Verify the release: `xano release:get v1.0.0`",
191
+ "Deploy to tenant: `xano tenant:deploy_release my-tenant -r v1.0.0`"
192
+ ],
193
+ example: `xano branch:list
194
+ xano release:create -n v1.0.0 -b dev -d "Initial release"
195
+ xano release:get v1.0.0
196
+ xano tenant:deploy_release my-tenant -r v1.0.0`
197
+ },
198
+ {
199
+ name: "Export and Import Release",
200
+ description: "Export a release from one workspace and import it into another",
201
+ steps: [
202
+ "Export the release: `xano release:export v1.0.0 --output ./v1.0.0.tar.gz`",
203
+ "Transfer the file to the target environment",
204
+ "Import into another workspace: `xano release:import --file ./v1.0.0.tar.gz -w 456`",
205
+ "Verify: `xano release:list -w 456`"
206
+ ],
207
+ example: `# Export from source workspace
208
+ xano release:export v1.0.0 --output ./v1.0.0.tar.gz
209
+
210
+ # Import into target workspace
211
+ xano release:import --file ./v1.0.0.tar.gz -w 456
212
+ xano release:list -w 456`
213
+ }
214
+ ]
215
+ };