alis specialist¶
Find, read and reply to Alis Build conversations. Every builder has a build specialist, a human engineer, reachable from here.
Synopsis¶
alis specialist approve-request <ticket> [flags]
alis specialist assign <ticket> --to <email|users/ID> [flags]
alis specialist decline-request <ticket> [flags]
alis specialist file <ticket> --in linear [--team KEY] [flags]
alis specialist get <ticket> [flags]
alis specialist invite <ticket> --to <email|users/ID> [--to <email|users/ID> ...] [flags]
alis specialist list [<org>.<product>] [flags]
alis specialist resolve <email|users/ID> [flags]
alis specialist send-message [flags]
alis specialist send-session [flags]
alis specialist tickets [flags]
alis specialist wait <ticket> [flags]
Aliases: specialist, support.
Description¶
Human engineers review conversations first, including conversations written by AI agents. Keep messages concise and factual: the problem, its impact, the key evidence and the help needed. list lists people; tickets lists conversations. Conversations are addressable as tickets/<id> or the bare id.
| Target | Command shape | Audience |
|---|---|---|
| The Alis Build platform team | send-message --message … |
A new platform-team conversation |
| A named teammate | send-message --to <email\|users/ID> --product <org>.<product> |
A private peer conversation: sender, recipient, invitees. Support staff have no implicit access. |
| An existing conversation | send-message --ticket <id> |
Its current participants |
Subcommands¶
alis specialist tickets¶
List the specialist conversations you can see (started by you or added to), newest first, with state and console link.
Aliases: tickets, conversations.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--inbox |
bool | false | List the open staff inbox instead of your own conversations (specialists only). |
--state <state> |
string | open |
Filter by state: open, resolved or all. |
--json returns tickets[] with ticket, url, display_name, state, source, creator, assignee, participants[], create_time, update_time, answered and waiting_on.
alis specialist get¶
Read a specialist conversation: state, participants, the console link to hand to a person, and the messages with authors and timestamps.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--last <n> |
int | 0 (all) |
Only include the newest N messages. |
Under --json: waiting_on says whose move it is (builder, specialist or nobody), pending_action names what you are being asked for (approval_request, diagnostics_requested, session_requested, question, reply) with the exact command that answers it, answered is true when someone else has posted since your most recent message, and last_reply is that reply.
alis specialist send-message¶
Start or continue a build specialist conversation. Without --ticket or --to, starts a new conversation with the Alis Build platform team. Provide the message with --message, --message-file <path> or stdin. The first non-empty line becomes the subject; Markdown renders in the console; the 2 MiB body limit is a transport cap.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--draft |
bool | false | Save a server-side draft instead of delivering; its author reviews and sends it from the conversation composer. Requires --ticket. |
--dry-run |
bool | false | Print the prepared envelope (sender, resolved recipient, audience, subject, body digest) and send nothing. |
--expect-sha256 <digest> |
string | Refuse to send unless the body's sha256 matches (from --dry-run). |
|
--idempotency-key <key> |
string | Unique key for this send; a retry with the same key returns the original receipt instead of sending again. | |
--message <text> |
string | The message; omit or use - to read from stdin. |
|
--message-file <path> |
string | Read the message from this file (UTF-8 text or Markdown). | |
--product <org.product> |
string | the current directory context | Product for --to. |
--ticket <id> |
string | Existing conversation to post on. | |
--to <email\|users/ID> |
string | Current product member to start a private conversation with (exact email match). | |
--yes |
bool | false | Skip the send confirmation prompt (same as --approve). |
The receipt carries ticket, url, message, state: persisted, recipient, sender, audience, body.sha256, sent_at, verified and read_back; a replayed send adds replayed: true. persisted means stored, not that the person has read it.
alis specialist send-session¶
Locate a local coding-agent session transcript (an Alis agent, Claude Code, Codex or Gemini CLI), gzip it and upload it to a specialist conversation. Credentials are masked as [REDACTED:<kind>] before upload; transcripts over the 10 MiB cap are tail-truncated.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--harness <name> |
string | Narrow the transcript search: alis-agent, claude-code, codex or gemini. |
|
--session <id> |
string | the session this command runs in (ALIS_SESSION_ID) |
Session whose transcript to share. |
--ticket <id> |
string | Conversation to upload the transcript to. | |
--yes |
bool | false | Skip the upload confirmation prompt (same as --approve). |
alis specialist wait¶
Block until someone other than you posts after your most recent message, or the conversation is resolved. Exits 0 with the reply on stdout; exits 5 with a reply_timeout envelope when --timeout passes first.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--after <time> |
string | your most recent message | Only count replies created after this RFC 3339 time. |
--timeout <duration> |
duration | 0 (indefinitely) |
Give up waiting after this duration. |
alis specialist list¶
List the product's current members (administrators, builders and viewers) who can be selected for a private builder-to-builder conversation. The product is detected from the current directory when omitted.
No flags beyond the global flags.
alis specialist resolve¶
Resolve an email address or users/ID to exactly one current member of the product, and say whether you may start a private conversation with them and who will see it. Nothing is sent.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--product <org.product> |
string | the current directory context | Product to resolve within. |
--json returns recipient, member, can_send (with reason), visibility and the exact send command.
alis specialist invite¶
Add teammates to an existing conversation, including a private peer conversation. Invited people gain access to the conversation's history and future messages. All recipients are resolved before anyone is added, using the same exact email or users/ID lookup as resolve.
alis specialist invite tickets/ID --to alex@example.com --to sam@example.com --dry-run --json
# Review the people and audience, then approve:
alis specialist invite tickets/ID --to alex@example.com --to sam@example.com --approve --json
| Flag | Type | Default | Meaning |
|---|---|---|---|
--to <email\|users/ID> |
string array | Person to invite. Required; repeat for multiple people. | |
--product <org.product> |
string | conversation's product, then current directory | Product member directory to resolve people within. |
--dry-run |
bool | false | Show resolved people, current participants, visibility and the approval command without changing access. |
--yes |
bool | false | Skip the confirmation prompt (same as --approve). |
Existing invitation permissions apply. Builders can only invite people from their own email domain. Reopen a resolved conversation before inviting people. Private peer conversations remain private; support staff have no implicit access.
People already on the conversation are skipped. --json returns ticket, url, product, sender, audience, visibility, recipients, participants and read_back. Each unique recipient has a state of added or already_participant; a dry run also returns dry_run: true, the exact invite command and not_attempted recipients.
If a request fails, error.details.recipients reports confirmed additions, an unconfirmed result and people not_attempted. Use read_back to check access. Retrying the same command skips existing participants without creating duplicates.
alis specialist approve-request¶
Approve a build environment access request or a product request from a terminal. Access approval makes the requester a builder on every product in the build environment; product approval creates the product with a development deployment environment and makes the requester its administrator. The server verifies that you are an administrator who may decide it.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--yes |
bool | false | Skip the decision confirmation prompt (same as --approve). |
alis specialist decline-request¶
Decline a request. A reason is required and is shown to the requester.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--reason <text> |
string | Why the request is declined (required). | |
--yes |
bool | false | Skip the decision confirmation prompt (same as --approve). |
alis specialist assign¶
Hand a specialist conversation to another specialist, or release it back to the general inbox. Only the conversation's build specialists may hand it over; a builder may only hand to someone on their own email domain. Not available on private peer conversations.
| Flag | Type | Default | Meaning |
|---|---|---|---|
--leave |
bool | false | Step out of the conversation after handing it over. |
--note <text> |
string | A short hand-over note posted in the conversation. | |
--release |
bool | false | Release the conversation to the general inbox instead (staff only). |
--to <email\|users/ID> |
string | The new specialist. | |
--yes |
bool | false | Skip the confirmation prompt (same as --approve). |
alis specialist file¶
File an issue in an external tracker from a specialist conversation. Only the conversation's build specialists may file; filing again where an issue exists returns the existing one. Anyone on the responding side files in their own Linear workspace through the Linear connection on their account (Connected Apps on the console's account page).
| Flag | Type | Default | Meaning |
|---|---|---|---|
--in <tracker> |
string | Tracker to file in (required; linear is the only accepted value). |
|
--team <key\|id> |
string | Team in your own Linear workspace (needed when it has several teams). | |
--yes |
bool | false | Skip the confirmation prompt (same as --approve). |
Examples¶
alis specialist tickets --state all --json
alis specialist get tickets/<id> --json
alis specialist send-message --message-file ./ticket.md --json
alis specialist send-message --to ana@example.com --product acme.shop --message "Could you review the orders proto?" --json
alis specialist send-message --ticket <id> --message "Thanks, shipping a fix."
alis specialist send-message --message-file ./ticket.md --dry-run --json
alis specialist wait tickets/<id> --timeout 2h --json
alis specialist send-session --ticket <id> --harness claude-code --json
alis doctor --ticket <id>
Error codes¶
network_unreachable (nothing sent), signed_out (exit 4), recipient_not_found, recipient_ambiguous (candidates in error.details), recipient_not_member, recipient_is_self, recipient_invalid, product_required, product_not_found, send_denied, ticket_resolved (start a new conversation), message_too_large, message_not_utf8, message_file_unreadable, message_changed, unsupported_backend. Every envelope says whether the message was sent.