Skip to main content
On this page

Kater CLI Make and compare new

kater new app

Makes a new HTML app over a workspace, from Kater's starter page.

It writes a kater.app.yaml manifest and a starter index.html, with no build. Give the workspace with --workspace, or make one with --new-workspace. See Build an app with your agent.

Examples

Terminal window
# Make an app named platform_spend_review over the ad_reporting workspace
kater new app platform_spend_review --workspace connections/snowflake_prod_connection/workspaces/ad_reporting
# Show what it would write, and write nothing
kater new app platform_spend_review --workspace connections/snowflake_prod_connection/workspaces/ad_reporting --dry-run
# Make an app and a new workspace for it, over the Ad Reporting model
kater new app platform_spend_review --new-workspace platform_spend --connection snowflake_prod_connection --from-model semantic.ad_reporting
# Make an app as a copy of the paid_media_performance app
kater new app platform_spend_review --workspace connections/snowflake_prod_connection/workspaces/ad_reporting --duplicate-from connections/snowflake_prod_connection/workspaces/ad_reporting/apps/paid_media_performance
# Make a deck that keeps the numbers of today, with its snapshot workflow
kater new app thursday_review --start deck --numbers static --source connections/snowflake_prod_connection/workspaces/ad_reporting
# Make a deck that gets new numbers every Monday at 8:00 AM
kater new app monday_review --start deck --numbers live --cron "0 8 * * 1" --timezone America/New_York

Arguments

ArgumentDescription
<name>Optional. The app’s name in lower snake case, such as platform_spend_review, of 100 characters or fewer. It is the name of the app’s folder. It is the same as --name, so give one of them.

Options

OptionDescription
--target-path <path>The workspace the app reads, as --workspace gives it. With --new-workspace, the folder that the new workspace goes in.
--name <name>The app’s name. It is the same as NAME.
--duplicate-from <path>An app to copy, by its folder from the content root, such as connections/snowflake_prod_connection/workspaces/ad_reporting/apps/paid_media_performance. It must be in the same connection.
--label <text>The app’s title, as people see it, such as "Platform spend review".
--description <text>What the app is for, in a sentence or two.
--metadata <json>The app’s label and description as a JSON object, such as {"label": "Platform spend review"}. Do not give it with --label or --description.
--dry-runShows what it would write, with its revisions, and writes nothing.
--from-model <model>The shared model that the new workspace reads, as its type and name, such as semantic.ad_reporting. Use it only with --new-workspace.
--reuse-existingWhen the same app is already there, Kater gives it back and writes nothing. Kater refuses an app with other content.
--duplicate-revision <revision>The revision of the app that --duplicate-from copies, as a dry run gives it. See Make it only when nothing changed.
--source-revision <revision>With --new-workspace, the revision of the shared model it reads, as the dry run gives it. See Make it only when nothing changed.
--workspace-revision <revision>The revision of the workspace in --workspace, as a dry run gives it. See Make it only when nothing changed.
--package-revision <revision>The revision of Kater’s starter page, as a dry run gives it. See Make it only when nothing changed.
--composition-revision <revision>The revision of the starter page’s appearance, as a dry run gives it. See Make it only when nothing changed.
--connection <name>The connection to make the new workspace in, such as snowflake_prod_connection, when no --target-path names one.
--kind <kind>Where a new workspace goes: personal puts it in your own folder, and connection puts it in the connection’s workspaces/ folder. The default is personal.
--workspace <path>The workspace the app reads, by its complete path, such as connections/snowflake_prod_connection/workspaces/ad_reporting. Without it or --new-workspace, Kater uses the workspace in your scope.
--new-workspace <name>Makes a workspace for the app, with this name. You cannot use it with --workspace or --duplicate-from.
--workspace-label <text>The label of the workspace that --new-workspace makes.
--appearance <mode>The starter page’s appearance: light or dark. Without it, the page is light. A copy keeps the page of the app it copies, so --duplicate-from ignores it.
--timezone <zone>The time zone of --cron, such as America/New_York. Without it, the workflow runs in your own time zone.
--start <type>The type to start from, as in New: page, deck, report, digest or chat. Its first page names its template. See Start from a type.
--numbers <mode>With --start deck or report: live gets new numbers on --cron, and static keeps the numbers of today.
--cron <cron>When a Live deck, report or digest gets new numbers, such as "0 8 * * 1" for every Monday at 8:00 AM.
--source <path>Source data: a dashboard, a query, a shared model or an app the app reads, by its path from the content root. Give it once for each. Without --workspace, the app goes over the workspace of the first dashboard or query. You can give it more than one time.
--paper <size>With --start report: letter or a4.
--filters <mode>With --start page: on gives the page a row for its filters.

It also takes the global options --json, --kater-root, --scope and --help.

Where the app goes

  • Over your personal workspace, the app goes in your own users/<you>/apps/<name>/ folder, beside your workspaces.
  • Over a connection workspace, the app goes in that workspace’s apps/<name>/ folder. For ad_reporting, that is connections/snowflake_prod_connection/workspaces/ad_reporting/apps/platform_spend_review/.
  • A name that is already there is refused.
  • There is no build. Kater serves the files as they are.

To see the new app, run kater brainstorm show on its folder.

Start from a type

--start makes the app from a type, with the same choices as New in the portal. A deck, a report or a digest is a document: Kater writes its manifest, its first page and its snapshot workflow in one commit. The workflow is in your own ai_tools/workflows/ folder, and writes names the app. With --numbers live it runs on --cron. With --numbers static it has no schedule, and its one run keeps the numbers of today. Run the workflow once when the page is written, so the document has its first snapshot. See Workflows.

Make it only when nothing changed

A dry run gives a revision for each thing the app starts from. These are the workspace, the starter page, its appearance and the app it copies. Give them back with the options of the same names, and Kater makes the app only while each one is the same. When one changed, Kater stops the create and says that it is stale. Make a dry run again, and try again.

Options an app does not take

For what the create commands have in common, see Create commands.

See also