Overview
Thelua chat command provides an interactive command-line interface for conversing with your Lua AI agent in both sandbox and production environments.
Want to test on real channels? You can also test your agent on WhatsApp, Facebook, Instagram, Email, and Slack without setting up your own channels. See Quick Testing Channels for instant testing on any platform.
Features
Sandbox Mode
Test with local skill overrides and persona customizations
Production Mode
Chat with your live production agent
Interactive Loop
Continuous conversation until exit
Multi-Skill Support
All skills automatically included in sandbox
Prerequisites
How It Works
Sandbox vs Production
- Sandbox Mode
- Production Mode
For Development & TestingFeatures:
- ✅ Local skill overrides
- ✅ Persona customization
- ✅ Environment variables from
.env - ✅ Test before deploying
- Developing new features
- Testing skill changes
- Iterating on persona
- Before pushing to production
Example Session
Sandbox Mode
Persona Override
Configuration
Inlua.skill.yaml:
- Persona is automatically loaded and sent with each request
- Test different persona variations
- Iterate quickly
- Uses production persona (from server)
- No local override
Skill Override
How It Works
Sandbox mode automatically:- Compiles all skills in your project
- Pushes to sandbox environment
- Gets sandbox IDs for each skill
- Includes all sandbox IDs in chat requests
Thread Isolation
By default,lua chat uses your agent’s shared conversation context. Use the --thread flag to scope a session to an isolated thread — useful for running consecutive tests without state leaking between runs.
Usage
Flags
| Flag | Description |
|---|---|
-t, --thread [id] | Scope to a thread. Omit the ID to auto-generate a UUID. The active thread ID is always printed at session start. |
--clear, --clear-thread | Clear the thread’s history when the session ends (interactive: on exit, non-interactive: after response). Requires --thread. |
Clearing a Thread Manually
Testing Workflow Example
Run 10 isolated test cases against your agent, each with a clean slate:File Attachments
You can attach files to any message using@<path> syntax — in both interactive and non-interactive mode.
@ must appear at the start of your message or after a space. Email addresses ([email protected]) are never treated as attachments.
Supported File Types
- Images
- Documents & Spreadsheets
- Text & Markup
- Email
Sent natively to vision-capable models.
| Extension | Type |
|---|---|
.png | PNG image |
.jpg, .jpeg | JPEG image |
.gif | GIF image |
.webp | WebP image |
.bmp | Bitmap image |
.tiff, .tif | TIFF image |
.heic | HEIC image |
Model support required. Attachment support depends on the model configured for your agent. If the model doesn’t support vision or file inputs, attachments won’t be processed — even if the CLI sends them successfully. Check your agent’s model configuration if attachments aren’t being picked up.
Limits
- Maximum file size: 10 MB per attachment
- Multiple attachments per message are supported
Non-Interactive Mode
The same@<path> syntax works in -m / --message flags:
Batch Mode
Test how your agent handles concurrent or rapid-fire messages with the-b/--batch flag. Useful for stress-testing skills that share state or for reproducing race conditions reported in production.
| Option | Description |
|---|---|
-b, --batch <messages...> | Dispatch multiple messages and print every reply. Each message is treated as an independent turn. |
-d, --delay <ms> | Delay between batch messages in milliseconds (default: 100). |
Batch mode is not a way to scriptably hold a multi-turn conversation — each batched message is a separate turn. For ordered scripted conversations, use repeated
lua chat -m "..." calls with -t <thread-id> instead.Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Enter | Send message |
Ctrl+C | Exit chat |
Ctrl+D | Exit chat (alternative) |
Best Practices
Development Workflow
Development Workflow
- Make changes to your skills
- Run
lua chatin sandbox mode - Test changes interactively
- Iterate until satisfied
- Run
lua pushto deploy - Test again in production mode
- Deploy with
lua deploy
Testing Strategy
Testing Strategy
Start with sandbox:
- Test happy paths
- Test error cases
- Test edge cases
- Test multi-step flows
- Verify deployed changes work
- Test with production data
- Confirm no regressions
Persona Iteration
Persona Iteration
- Update
personain yourLuaAgentcode (src/index.ts) - Run
lua chatin sandbox - Test conversation style
- Refine persona
- Repeat until satisfied
- Deploy to production with
lua push persona
Active log probe (agent_error after every turn)
After every lua chat turn — interactive or -m non-interactive — the CLI runs a quiet lua logs --type agent_error probe scoped to the current session. The probe checks for server-side pipeline errors that don’t always surface in the chat response itself (billing failures, schema validation failures, LLM provider errors, post-processor errors).
When the probe is silent, no agent errors fired during your turn — you’re clean.
When new errors fire, the CLI prints a one-line warning at the end of the turn:
⚠️ The agent returned an empty response and points you at agent_error and runtime logs so you can see what failed on the server.
Run the suggested command verbatim to inspect the errors.
To opt out (for example in CI that captures only command output), set LUA_NO_HINTS=1:
Debugging recipe
Troubleshooting
Debugging after a failed chat: If a chat turn returns a wrong, empty, or error response, the CLI now automatically surfaces a count of
agent_error logs that fired during that turn. To inspect them, run the suggested lua logs --type agent_error --limit N command. See Debugging your agent — the post-deploy loop for the canonical loop.No API key found
No API key found
Error:Solution:
Configuration file missing
Configuration file missing
Error:Solution:
Compilation failed
Compilation failed
Error:Solution:
- Fix TypeScript errors in your code
- Check
src/index.tsfor syntax errors - Verify all imports are correct
Skills not in sandbox
Skills not in sandbox
Error:Solution:
Slow responses
Slow responses
Issue: Long wait times in sandboxCauses:
- First request after compilation
- Large skill bundles
- Network latency
Persona not working
Persona not working
Issue: Persona override not being appliedCheck:
- Using sandbox mode (not production)
agent.personaexists inlua.skill.yaml- Persona is properly formatted YAML
Related Commands
Debugging Loop
Canonical push → test → check flow + the active log probe
lua logs
Inspect agent_error and tool execution logs
lua test
Test individual tools with specific inputs
lua push
Deploy skills to server
Next Steps
Test Individual Tools
Test tools one at a time
Deploy to Production
Push your skills live

