| name | inline-cli |
| description | Explain and use the Inline CLI (`inline`) for authentication, chats, users, spaces, messages, search, attachments, downloads, JSON output, and configuration. Use when asked how to use the Inline CLI or its commands, flags, outputs, or workflows. |
Inline CLI
Global flags
--json: Output JSON instead of human tables/details (available on all commands). This greatly increases the verbosity and information you can get. Most of the data is either not included or truncated/redacted in the default human readable mode. Use JSON mode when you need exact details of a chat, message, etc. You can start with default mode and switch to json mode for more details and form your response.--pretty: Pretty-print JSON output (default).--compact: Compact JSON output (no whitespace).
Subcommands
auth
inline auth login [--email you@x.com | --phone +15551234567]- Run an interactive login flow.
- If code is wrong, prompt to try again or edit email/phone (no hard exit).
inline auth me- Fetch and print the current user (verifies your token is still valid).
inline auth logout- Clear the stored token and current user.
chats
inline chats list- List chats with human-readable names, unread count, and last message preview (sender + text in one column).
inline chats participants --chat-id 123- List participants for a chat, including join date.
inline chats add-participant --chat-id 123 --user-id 42- Add a user to a chat.
inline chats remove-participant --chat-id 123 --user-id 42- Remove a user from a chat.
inline chats create --title "Project" [--space-id 31] [--description "Spec"] [--emoji ":rocket:"] [--public] [--participant 42]- Create a new chat or thread. If
--publicis set, participants must be empty.
- Create a new chat or thread. If
inline chats mark-unread [--chat-id 123 | --user-id 42]- Mark a chat or DM as unread.
users
inline users list- List users that appear in your chats (derived from getChats).
inline users get --id 42- Fetch one user by id (from the same getChats payload).
spaces
inline spaces list- List spaces referenced by your chats (derived from getChats).
inline spaces members --space-id 31- List members in a space.
inline spaces invite --space-id 31 [--user-id 42 | --email you@x.com | --phone +15551234567] [--admin] [--public-chats]- Invite a user to a space (role is optional; defaults to server behavior).
inline spaces delete-member --space-id 31 --user-id 42- Remove a member from a space (prompts for confirmation; use
--yesto skip).
- Remove a member from a space (prompts for confirmation; use
inline spaces update-member-access --space-id 31 --user-id 42 [--admin | --member] [--public-chats]- Update a member's access/role. Provide
--adminor--member(and optional--public-chats).
- Update a member's access/role. Provide
update
inline update- Download and install the latest release for this machine.
doctor
inline doctor- Print diagnostic info (system, config, paths, auth state).
messages
inline messages list [--chat-id 123 | --user-id 42] [--limit 50] [--offset-id 456] [--translate en]- List chat history for a chat or DM.
--translate <lang>fetches translations and includes them in output.
inline messages export [--chat-id 123 | --user-id 42] [--limit 50] [--offset-id 456] --output PATH- Export chat history to a JSON file.
inline messages search [--chat-id 123 | --user-id 42] --query "onboarding" [--query "alpha beta"] [--limit 50]- Search messages in a chat or DM.
--queryis repeatable; each query can contain space-separated terms (ANDed within a query, ORed across queries). Extra whitespace is collapsed.
inline messages get --chat-id 123 --message-id 456 [--translate en]- Fetch one full message by id (includes media + attachments).
inline messages send [--chat-id 123 | --user-id 42] [--text "hi"] [--stdin] [--reply-to 456] [--mention USER_ID:OFFSET:LENGTH ...] [--attach PATH ...] [--force-file]- Send a message (markdown parsing enabled). Mentions are provided via
--mentionwith UTF-16 offsets. --stdinreads message text from stdin.--attachis repeatable. Each attachment is sent as its own message;--textis reused as the caption.- Folders are zipped before upload. Attachments over 200MB are rejected.
--force-fileuploads photos/videos as files (documents).--mentionis repeatable and must match the message text (user_id:offset:lengthwith UTF-16 units).
- Send a message (markdown parsing enabled). Mentions are provided via
inline messages edit [--chat-id 123 | --user-id 42] --message-id 456 [--text "updated" | --stdin]- Edit a message by id.
inline messages delete [--chat-id 123 | --user-id 42] --message-id 456 [--message-id 789]- Delete one or more messages (prompts for confirmation; use
--yesto skip).
- Delete one or more messages (prompts for confirmation; use
inline messages add-reaction [--chat-id 123 | --user-id 42] --message-id 456 --emoji "👍"- Add an emoji reaction to a message (emoji characters only, no
:shortcode:).
- Add an emoji reaction to a message (emoji characters only, no
inline messages delete-reaction [--chat-id 123 | --user-id 42] --message-id 456 --emoji "👍"- Remove an emoji reaction from a message (emoji characters only, no
:shortcode:).
- Remove an emoji reaction from a message (emoji characters only, no
inline messages download [--chat-id 123 | --user-id 42] --message-id 456 [--output PATH | --dir PATH]- Download the attachment from a message.
Examples
- Login and greet user:
inline auth login(prompts for email/phone + code, then prints welcome name)
- Verify who you are:
inline auth me
- Check diagnostics:
inline doctor
- Search messages in a chat:
inline messages search --chat-id 123 --query "design review"- JSON:
inline messages search --chat-id 123 --query "design review" --json
- Translate and list messages:
inline messages list --chat-id 123 --translate en
- Export messages to a file:
inline messages export --chat-id 123 --output ./messages.json
- Send message with multiple attachments:
inline messages send --chat-id 123 --text "FYI" --attach ./photo.jpg --attach ./spec.pdf
- Reply to a message:
inline messages send --chat-id 123 --reply-to 456 --text "on it"
- Send a message with a mention entity:
inline messages send --chat-id 123 --text "@Sam hello" --mention 42:0:4
- Download an attachment:
inline messages download --chat-id 123 --message-id 456 --dir ./downloads
- Edit and delete a message:
inline messages edit --chat-id 123 --message-id 456 --text "updated"inline messages delete --chat-id 123 --message-id 456
- Invite and manage members:
inline spaces invite --space-id 31 --email you@example.cominline spaces update-member-access --space-id 31 --user-id 42 --admin
Agent Tips
Finding users quickly
inline users list | grep -i "partial_name"
Faster than parsing JSON when you just need user ID.
Filtering messages with jq
# Get last N outgoing messages (your messages)
inline messages list --user-id ID --json | jq '[.messages[] | select(.out == true)] | .[0:3]'
# Get last N incoming messages (their messages)
inline messages list --user-id ID --json | jq '[.messages[] | select(.out == false)] | .[0:3]'
Multi-term search for feedback/bugs
inline messages search --user-id ID --query "bug" --query "issue" --query "loom" --query "broken" --limit 30 --json
Each --query is ORed together - useful for finding feedback items.
Common patterns
- Use --user-id for DMs instead of looking up chat IDs
- Use --json + jq for programmatic filtering
- Use default (non-JSON) mode for quick human-readable output
More quick tips
# Page back with offset-id
inline messages list --chat-id ID --limit 50 --offset-id 1234
# Get the latest message id
inline messages list --chat-id ID --limit 1 --json | jq '.messages[0].id'
# Export a batch for offline review
inline messages export --chat-id ID --limit 500 --output ./chat.json
# Compact JSON for pipelines
inline messages list --chat-id ID --json --compact | jq '.messages | length'
JSON samples
Chat list (GetChatsResult, truncated to essential fields):
{
"dialogs": [
{
"peer": { "type": { "Chat": { "chat_id": 340 } } },
"space_id": 31,
"archived": false,
"pinned": false,
"read_max_id": 1,
"unread_count": 0,
"chat_id": 340,
"unread_mark": false
}
],
"chats": [
{
"id": 340,
"title": "Main",
"space_id": 31,
"description": "Main chat for everyone in the space",
"emoji": null,
"is_public": true,
"last_msg_id": 1,
"peer_id": { "type": { "Chat": { "chat_id": 340 } } },
"date": 1754585453
}
],
"spaces": [
{ "id": 31, "name": "Design", "creator": false, "date": 1750000000 }
],
"users": [
{
"id": 1000,
"first_name": "Ava",
"last_name": "Chen",
"username": "ava",
"email": "ava@example.com",
"min": false,
"bot": false
}
],
"messages": [
{
"id": 1,
"from_id": 1000,
"peer_id": { "type": { "Chat": { "chat_id": 340 } } },
"chat_id": 340,
"message": null,
"out": true,
"date": 1754585453,
"media": {
"media": {
"Document": {
"document": {
"id": 32,
"file_name": "recording.mp4",
"mime_type": "video/mp4",
"size": 6932635,
"cdn_url": "https://..."
}
}
}
}
}
]
}
Message list (GetChatHistoryResult, truncated to essential fields):
{
"messages": [
{
"id": 456,
"from_id": 42,
"peer_id": { "type": { "Chat": { "chat_id": 123 } } },
"chat_id": 123,
"message": "Ship it",
"out": true,
"date": 1733184000,
"attachments": {
"attachments": [
{
"id": 9001,
"attachment": {
"UrlPreview": {
"id": 88,
"url": "https://...",
"site_name": "Docs",
"title": "Spec",
"description": "API rollout spec"
}
}
}
]
}
}
]
}