Skip to main content
After this quickstart, an agent you wrote answers “What’s the weather in London?” in production by calling a public weather API. You need Node.js 16 or later. Every command on this page has a non-interactive form, so a coding agent can run it too; signing in takes two commands because the code arrives by email. Verified against lua-cli 3.33.0.
1

Install the CLI and sign in

Install lua-cli globally.
Sign in with your email: the first command sends you a six-digit code, the second saves a renewable user session on this machine.
2

Create a project

lua init creates an agent on the platform and a TypeScript project bound to it. Pass the agent name and an organization ID (lua agents lists yours); without flags, lua init asks for both.
Output
You get src/index.ts with a LuaAgent and a persona template, lua.skill.yaml holding the agent ID (the CLI owns this file), and package.json with dependencies installed. The project structure page lists the rest.
3

Add a weather tool

A tool is a class with a name, a description, a zod input schema, and an execute function. This one geocodes the city, then reads Open-Meteo’s current weather; no API key is needed.
src/skills/tools/GetWeatherTool.ts
A skill groups tools and carries the context the model reads to decide when to call them.
src/skills/weather.skill.ts
Register the skill on the agent and replace the persona template with one sentence; only what the agent references is compiled.
src/index.ts
4

Test the tool

lua test runs the tool’s execute function with the input you pass; no model is involved, so the output is exactly what the tool returns. --name is the tool name.
Output
5

Chat in the sandbox

lua chat -e sandbox compiles your code and uploads it as sandbox versions the platform runs, so the model can call your tool without a release. The first run after you add a skill registers it on the server and may answer without it (Skipping skill weather - no skillId found in lua.skill.yaml); run the command again. -t starts a fresh thread so earlier test conversations don’t leak into this one.
Output
6

Release it

lua push all uploads a version of the skill, which changes nothing for end users, and of the persona, which is served at once; lua version create snapshots the agent; lua version promote makes that snapshot live. promote accepts 1 or v1.
Output
Output
Promoting takes effect for every end user at once. To go back, promote the previous version number; see Release an agent to production.
Ask the production agent the same question. It should answer with the current temperature, which shows the promoted version is live and calling your tool.
Output

Next steps

Build a support agent

Continue this project: two data-backed tools, a persona, knowledge, a webhook, a job, and the web widget.

Connect a channel

Put the agent on the web widget, WhatsApp, Slack, email, or a phone number.

Add knowledge

Upload documents and turn on Knowledge Search, with no release needed.

About agents

What an agent contains and how the compiler turns your project into one.

CLI reference

Every command, flag, exit code, and where credentials come from.