Skip to main content

Overview

The truffile CLI is your interface to Truffle. Use it to discover and connect to devices, use Convo with the on-device agent, run raw model inference, and deploy apps.
Running truffile with no arguments opens the Convo REPL in an unsent side-thread draft.

Scriptable commands

Most workflows can be driven with explicit arguments, which makes them easy to test in CI or from another agent:
Interactive commands still exist for normal human use. Prefer the explicit forms above when you are writing tests, scripts, or agent tools.

Connecting to Your Truffle

You need to connect to a device before you can use Convo, run inference, or manage apps.

Scan for devices

Select a device by number to start the connection flow.

Connect directly

If you already know your device name:
If you omit --user-id, you’ll be prompted for your User ID (found in Symphony > Settings), then asked to approve the connection on your device. Credentials are saved locally — subsequent connections are automatic.
Before truffile connect, onboard the device in the Symphony desktop client. Download Symphony from the client overview, finish device onboarding there, copy your User ID from Symphony > Settings, then approve the session on your Truffle when the CLI asks.

Loading agent resources

truffile ships with agent-readable skills and example apps. Copy them into your current workspace when you want a coding agent to inspect them directly:
This creates:
Use narrower forms when needed:
The copied skills cover CLI usage, one-shot Convo, raw inference, and app creation. The examples are real bundled apps that show foreground tools, background workers, text auth, OAuth, no-auth apps, and local bridge patterns.

Disconnect

disconnect all clears all saved credentials. You’ll need to go through the full approval flow again next time.

Convo Mode

Convo connects to the authenticated user’s stateful on-device agent. Main is thread 0; user conversations otherwise live in side threads. Legacy Task histories are not migrated or listed after the one-way cutover.
This is also the default. A bare launch starts in an unsent side-thread draft, and the first send creates that thread. Use /new for another draft or /main to opt into Main explicitly.

Sending messages

Type your message and press Enter to send. Use Alt+Enter for multi-line input.
Responses stream in real-time with a thinking orb animation while the model reasons. Tool calls appear inline above the response.

Threads and history

Use /threads to list and switch among user-visible threads. System and Bulletin threads are omitted. Messages and replies remain in the selected thread, and /history shows its durable history. Type /help inside Convo to see all commands. /tasks, /resume, and /switch are temporary compatibility spellings for the Convo thread picker. They do not access the retired Task backend.

Installed apps

Inspect installed apps with either discovery-only command:
Convo has no per-chat app allowlist: no app is attached to or restricted for a thread. Interactive /apps, --app, and dynamic /<app> sends are unavailable. The agent can still discover installed tools and decide whether to use them through normal routing. For all targeting, listing, action, JSON, and exit-code details, see Convo automation. For the complete interactive model, see Convo.

Exiting


Infer Mode

Infer mode gives you direct access to model inference with full control over generation parameters, MCP tool integration, and image input.

CLI flags

Generation controls

All settings can be viewed and changed live inside the REPL. Run the command without an argument to see the current value.

Built-in tools

When tools are enabled (/tools on, the default), the model can use:
  • web_search — search the web and return top results
  • web_fetch — fetch a URL and extract readable text
Tool calls are displayed inline:
Token usage stats are printed after each response.

Image attachments

Attach an image to your next message with /attach:
You can also attach from a URL:
The attachment is sent with the next message, then cleared automatically. Supported formats: JPEG, PNG, BMP natively. Other formats (WebP, TIFF, etc.) are transcoded via Pillow if installed.

MCP integration

Connect external MCP servers to give the model additional tools. Only streamable HTTP transport is supported.
MCP tools and built-in tools work together — the model picks the right tool for each request.
This is a great way to test your app’s MCP server locally before deploying to the device. Start your MCP server, connect it via /mcp connect, and test with real prompts.

Conversation management


Keyboard Shortcuts

These work in both Convo and Infer modes.

App Management

Create a new app

Creates a scaffold with truffile.yaml, foreground/background entry points, and a default icon.

Validate an app

Checks your truffile.yaml configuration and Python file syntax.

Deploy an app

The deploy process:
  1. Validates truffile.yaml and Python syntax
  2. Resolves app shape (foreground, background, or both)
  3. Uploads files and runs installation steps
  4. Registers the app with the device
oauth steps print an authorization URL and ask for the pasted callback URL or code. welcome steps print their content and wait for Enter. vnc / browser setup steps are rejected by validation and should be installed through Symphony Settings.
Use truffile deploy --interactive to open a shell inside your app’s container. Useful for debugging, installing extra dependencies, or testing your app manually before finalizing.

List apps and devices

Delete apps

If you pass indices that are out of range or invalid, the CLI falls back to the interactive picker (when running in a terminal).

List models

Shows all inference models available on the connected device.

Convo vs Infer

Both modes let you talk to models on your Truffle, but they serve different purposes:

Command Reference