Build an app with an AI agent
Build and deploy a Keboola app from Claude Code, Claude Desktop, Cursor, VS Code or the ChatGPT app with the dataapp-developer plugin and kbagent: set up the agent, describe the app, then check its URL, password and logs.
An AI agent on your computer can build a Keboola app from one prompt. With the dataapp-developer plugin from Keboola’s AI Kit, it reads your data, writes the code, creates the app with a Git repository that Keboola manages, pushes the code there and deploys it. You end up with a running app at its own URL, and the code in a repository you can keep changing.
To build inside Keboola instead, Kai does the same from the Create App screen, with a live preview. To write the code yourself in your own repository, see Build an app locally.
Before you start
Section titled “Before you start”- A Keboola project with the data the app should show.
- kbagent, connected to that project. The agent runs it to create, deploy and inspect the app. Creating the push token for the app’s repository needs admin rights in the project.
- An AI client: Claude Code, Claude Desktop, Cursor, VS Code or the ChatGPT app. Using another agent? See Other agents.
The agent can’t set up single sign-on for the app. kbagent data-app create offers a shared password or a public app, and a new app gets the password. You can switch it to SSO later under Authentication.
Set up the agent
Section titled “Set up the agent”-
Install kbagent, connect your project and add the
kbagentplugin. kbagent with AI agents has the steps;/kbagent:setupwith your stack’s URL installs the CLI and signs you in. -
Add the app-building plugin from the same marketplace:
/plugin install dataapp-developer@keboola-claude-kit
The plugin gives the agent a skill with Keboola’s app layout, Storage access and deployment rules, plus app templates.
- Connect Keboola’s MCP server for your stack, as in Using with Claude Desktop.
- Open Customise → Plugins → Add → Add from marketplace, paste
keboola/ai-kit, and adddataapp-developer. The same route installs thekbagentplugin; see kbagent with AI agents.
- Install kbagent and connect your project in a terminal, as in First, in a terminal.
- Add the AI Kit marketplace as in Cursor, with the full URL
https://github.com/keboola/ai-kit. Under Keboola Ai Kit, add bothkbagentanddataapp-developer.
- Install kbagent and connect your project in a terminal, as in First, in a terminal.
- Install the plugins from source as in VS Code: run Chat: Install Plugin from Source, paste
https://github.com/keboola/ai-kit, confirm the Trust prompt, and pickkbagent. Do the same fordataapp-developer.
-
Install kbagent and connect your project in a terminal, as in First, in a terminal.
-
Turn on Developer mode and add the marketplace as in ChatGPT app, then install
kbagentanddataapp-developerfrom the Personal tab. From a shell, that’s:Terminal window codex plugin marketplace add https://github.com/keboola/ai-kitcodex plugin add kbagent@keboola-claude-kitcodex plugin add dataapp-developer@keboola-claude-kit
In Claude Code, Cursor, VS Code and the ChatGPT app, the skill picks its route from what it finds. With kbagent on the PATH it follows this page. If a Keboola MCP server is connected too, the agent asks which one to use; pick kbagent. The agent pushes the code with Git, so Git has to be installed.
The plugin also lists a keboola MCP server of its own that fails to connect. You can ignore it.
Describe the app
Section titled “Describe the app”Say what the app shows, which data it uses and where the code goes, and ask for a new, deployed app. Without the word new, the skill prefers changing an app that already exists. For example:
Build a Keboola app that shows the number of orders per day as a line chart,from the orders table in my project. Put the code in a new Keboola-managed Gitrepository, deploy the app, and give me its URL.The agent reads the skill, finds the table and queries a sample before it writes any code. Name a framework if it matters to you; for a dashboard, the skill defaults to Node.js with Chart.js. Claude Code asks you to approve each command it runs unless you’ve allowed them. To use your own GitHub repository instead, put its URL in the prompt; the repository then has to follow the layout in Build an app locally.
These are the commands the agent runs on the managed-repository route, and you can run them yourself. <alias> is your project’s name in kbagent; kbagent project list shows it in the Alias column. create prints the app ID and the config ID, and git-repo prints the HTTPS URL of the repository.
# Create the app with an empty Keboola-managed repositorykbagent data-app create --project <alias> --name "Orders per day" --slug orders-per-day --use-managed-git-repo
# Get the repository URL and a push token (the token is shown only once)kbagent data-app git-repo --project <alias> --app-id <id>kbagent data-app git-credentials-create --project <alias> --app-id <id> --type http_token --permissions readWrite --yes
# Push the code to main; when Git asks, use any username and the token as the passwordgit push <https-url> main
# Deploy and wait until the app runskbagent data-app deploy --project <alias> --app-id <id> --waitAn app created with a managed repository isn’t deployed yet, because its repository is still empty. By default it gets password sign-in, the tiny size, sleep after 15 minutes without visitors, and access to Storage.
Check the app
Section titled “Check the app”- The agent finishes with the app’s URL.
- The app asks for its password. The agent usually can’t show it, because
kbagent data-app passwordneeds a Manage API token. Open Apps from the left navigation and then your app: once it’s deployed, the password is next to Open App (see Authentication). - If the app opens without data, read its log with
kbagent data-app logs --project <alias> --app-id <id>. If it doesn’t start at all,kbagent data-app runs --project <alias> --app-id <id>shows why. Troubleshooting lists the common causes.
If the app can’t read Storage
Section titled “If the app can’t read Storage”Until keboola/cli#765 ships (kbagent 0.94.0 and earlier), an app created with --use-managed-git-repo gets no workspace, however often you redeploy it with kbagent. It runs, but its code finds no WORKSPACE_ID. An app built from the plugin’s Node.js template logs Missing env vars: WORKSPACE_ID (or KBC_WORKSPACE_MANIFEST_PATH).
The app’s configuration is missing its repository block. Add it, before the first deploy or after it, and deploy:
kbagent config update --project <alias> --component-id keboola.data-apps --config-id <config-id> --merge --configuration '{"parameters":{"dataApp":{"git":{"repository":"<https-url>","branch":"main","private":true}}}}'kbagent data-app deploy --project <alias> --app-id <id> --waitIf you no longer have the config ID from create, kbagent --json data-app detail --project <alias> --app-id <id> shows it as config_id. After the fix ships, deploy adds the block itself.
Change the app later
Section titled “Change the app later”Ask the agent for the change. It edits the code, pushes it to the same repository and runs kbagent data-app deploy --wait again; the app restarts on each deploy. In a new session, the agent gets the repository URL from kbagent data-app git-repo and a fresh push token from git-credentials-create. To edit the code yourself, clone the repository from that URL with a push token.
Stopping and waking the app, secrets, settings and deleting are in Operate and update an app. kbagent has no commands for drafts or copying an app, and kbagent data-app deploy --config-version runs an older configuration for one deploy without restoring it. Drafts, copying and a real rollback happen in the Keboola UI.
Other agents
Section titled “Other agents”Any agent that can run shell commands can drive kbagent with the commands on this page. For the push, it has to hand Git the token without a prompt, for example through a credential helper, because an agent’s shell can’t answer one. Have it load kbagent’s full command reference with kbagent context first (the context reference). If the agent can’t install plugins, give it the skill as files: the folder is on GitHub, with the app templates and reference guides the skill points to.
The flow on this page was run end to end in Claude Code.