Commands
Every xema command, 331 of them, as xema <command> --help describes it. Most need sudo. A command that changes the console's records goes through Manager, as the console does, so the same rules about who may change what apply.
Install and upgrade · The cluster and its nodes · Running services · Backups and data · People · Calls · Integrations and AI · Reports and Live View
Install and upgrade
Put Xema on a server, join it to a cluster, and keep it current.
init
xema init
Set up this server as the first node of a new cluster.
--address <address>: This machine's IP address as the other nodes reach it. Found when it has one LAN address, asked for when it has several.--cluster <cluster>: The cluster's name. Defaults to this machine's name.--name <name>: This node's name in the roster. Defaults to this machine's name.--server <server>: The database server. Only used where no credentials are recorded yet; defaults to this machine.--user <user>: The database login to create where none is recorded yet.--dry-run: Say what would be set up, and change nothing.--yes: Do not ask before writing.
join
xema join
Join this server to an existing cluster and set it up there.
--token <token>: The tokenxema cluster tokenprinted on a node already in the cluster.--address <address>: This machine's IP address as the other nodes reach it. Left out, it is the one on the cluster's subnet.--name <name>: This node's name in the roster. Defaults to this machine's name.--roles <roles>: Roles to give this node, comma separated. A joined node holds none until it is given some.--yes: Do not ask before writing.
migrate
xema migrate
Bring this node up on this build: another version of Xema converted to it, or a new node joined. Within the installed version, the xema command itself is xema update and its components xema upgrade.
--address <address>: This machine's IP address as the other nodes reach it. Found when the first node has one LAN address, asked for when it has several; required on a node that joins.--join <join>: A pass fromxema cluster token, to join an existing cluster instead of creating one.--cluster <cluster>: The cluster's name. Defaults to this machine's name; ignored with --join.--name <name>: This node's name in the roster. Defaults to this machine's name.--roles <roles>: Roles to give this node, comma separated. A cluster of one already holds every role.--dry-run: Say what would happen, and change nothing.--yes: Do not ask before writing.
update
xema update
Replace the xema command itself with the channel's newest, within its own version; another version is xema migrate, and Xema's components are xema upgrade.
--channel <channel>:devorstable. Taken from this server's record when omitted.--dry-run: Say which version it would replace the command with, and change nothing.
upgrade
xema upgrade [<components>…]
Upgrade Xema's components and the release's schema changes, within the installed version; another version is xema migrate, and the xema command itself is xema update.
[<components>…]: Upgrade only these, leaving every other component on the version it runs. The schema must already be at the release:xema database upgradeapplies it.--channel <channel>:devorstable. Taken from this server's record when omitted.--yes: Don't ask. Restarting a component drops the calls it is carrying.--dry-run: List what would change, by version, and change nothing.
channel
xema channel
Show the release channel this server is recorded as taking releases from.
channel set
xema channel set <channel>
Record the release channel this server takes releases from.
<channel>:devfor the rolling channel,stableotherwise.
component list
xema component list
What is installed on this server, and what could be.
component install
xema component install <name>
Fetch a component's release and put it in place.
<name>: Which component.xema component listshows them.--channel <channel>:devorstable. Taken from this server's record when omitted.--force: Install again even if it is already here.--version <version>: Place this version,2.0.4558, instead of the channel's newest, replacing what is here. The channel keeps each component's ten newest.
component remove
xema component remove <name>
Take a component's code and unit off this server.
<name>: Which component.--yes: Don't ask. Required when there is nobody to answer.
tokens
xema tokens
Show this node's token certificates and client secrets, and say plainly what is missing.
tokens create
xema tokens create
Make the certificates tokens are signed and encrypted with.
--years <years>: How long they last.--force: Replace certificates already there. Every sign-in on the cluster ends.
tokens secrets
xema tokens secrets
Make the browser apps' client secrets, or replace them without a pause.
--rotate: Put a new secret first for every app, keeping the old ones, which Manager still accepts.--retire: Keep only each app's first secret, once every node sends it.
keyring
xema keyring
Show this node's key ring certificate, and say plainly when there is none.
keyring create
xema keyring create
Make the certificate this cluster's key ring is encrypted with.
--years <years>: How long it lasts. Replacing it later means copying the new file to every node.--force: Replace a certificate that is already there. Read what this costs first.
completion
xema completion [<shell>]
Print a shell completion script. xema completion install puts it where bash finds it.
[<shell>]: Shell to generate the script for: bash or zsh.
completion install
xema completion install
Tab completion for xema in bash, root's shells included: sudo xema completion install.
The cluster and its nodes
What each server runs, how the servers reach each other, and what they hold.
status
xema status
Show the status of the infra and Xema services (state, start time, CPU, memory).
--json: Emit machine-readable JSON instead of the tables — this is what the Manager serves to the dashboard.
discover
xema discover [<version>]
Run each version's discovery in order and stop at the last one found, which is this machine's current version; an older one found before it is still on the machine and is discovered too.
[<version>]:v1orv2to discover that version only; omitted, every version found here.
nodes
xema nodes
Ask every server in this cluster what it is running.
--seconds <seconds>: How long to wait for answers before calling the rest unreachable.
node roles
xema node roles
Show what this server is meant to run, beside what it actually is.
node role add
xema node role add <role>
Declare that this server should run something.
<role>: One of the roles listed byxema node roles.
node role remove
xema node role remove <role>
Declare that this server should not run something.
<role>: One of the roles listed byxema node roles.
node apply
xema node apply
Start what this server should run, and stop what it should not.
--dry-run: Print what would change and change nothing.--yes: Don't ask. Required when there is nobody to answer.
node address
xema node address <node> [<address>]
Change the address the other nodes reach a node at, for the whole cluster.
<node>: The node's name or its id. Its own name is the ordinary case.[<address>]: Where the other nodes should reach it: an IP address, optionally with a port. Left out only with --derive.--derive: Derive the address instead of typing it: this machine's address on the subnet every other node of the cluster is on. Only for the node the command is run on, since only it can see its own interfaces. Refused when no such subnet exists — what remains is routed or tunnelled, and that is a decision, not a guess.
node claim
xema node claim
Records this machine as the node its bootstrap file names.
--yes: Do not ask before writing.
node wire
xema node wire
Write this node's settings from the cluster's wiring.
--dry-run: Print what would be written and write nothing.--yes: Don't ask. Required when there is nobody to answer.--restart: Restart this node's Xema services afterwards. Drops any calls it is carrying.
node files
xema node files
Place the unit, nginx, logrotate and Prometheus files this build carries, and start the host agent.
--dry-run: Say what would change and change nothing.
node check
xema node check
Check this node's token files and nginx files, and say how to put right what is wrong.
--fix: Place this build's nginx files where they differ, tested before nginx is reloaded.
node reset
xema node reset
Remove what was set up on this server. Databases, credentials, the key ring and backups are kept.
--force: Go ahead on a node that holds the database role, and remove that role too.--dry-run: Say what would be removed, and change nothing.--yes: Do not ask before removing.
node enable
xema node enable <node>
Let a node take part in the cluster again: xema node enable mini4.
<node>: The node, by name.
node disable
xema node disable <node>
Set a node aside, so the cluster gives it nothing to carry: xema node disable mini4.
<node>: The node, by name.--yes: Answer yes to the confirmation up front.
node start
xema node start [<words>…]
Start services: xema node start bff, or --node mini4 for another node's.
[<words>…]: The services,--nodewith a node's name, and--yes. None named, here: every Xema service.
node stop
xema node stop [<words>…]
Stop services: xema node stop dialer --node mini4. Calls a stopped service carries drop.
[<words>…]: The services,--nodewith a node's name, and--yes. None named, here: every Xema service, asked first.
node restart
xema node restart [<words>…]
Restart services: xema node restart bff --node mini4. Calls a restarted service carries drop.
[<words>…]: The services,--nodewith a node's name, and--yes. None named, here: every Xema service, asked first.
node ssh
xema node ssh [<state>]
The SSH setting a node holds: xema node ssh. on or off changes it: xema node ssh off --node mini4.
[<state>]:onoroff; left out, it is shown.--node <node>: The node, by name; this one when not given.--yes: Answer yes, up front, to turning SSH off.
node reboot
xema node reboot
Stop the platform in order and restart the machine: xema node reboot --node mini4. Every call the node carries drops.
--node <node>: The node, by name; this one when not given.--yes: Answer yes to the confirmation up front.
node interfaces
xema node interfaces
A node's network interfaces, as SIP capture chooses from them: xema node interfaces.
--node <node>: The node, by name; this one when not given.
node capture
xema node capture
Whether a node is capturing SIP, and what: xema node capture.
--node <node>: The node, by name; this one when not given.
node capture start
xema node capture start
Start capturing SIP on a node: xema node capture start --port 5060 --record Failed --number 98480. What it keeps is listed by xema node captures.
--node <node>: The node, by name; this one when not given.--device <device>: Interfaces to capture on, comma-separated; every usable one when not given.--port <port>: Ports SIP is expected on, comma-separated.--record <record>: Which calls to keep: All, Answered or Failed.--number <number>: Phone numbers to narrow to, comma-separated; a call is kept when one is at either end.
node capture stop
xema node capture stop
Stop capturing SIP on a node: xema node capture stop.
--node <node>: The node, by name; this one when not given.
node captures
xema node captures
The captured calls, newest first, from every node's captures: xema node captures --search 98480 --outcome Failed.
--search <search>: Part of a number, a SIP call id or an address.--outcome <outcome>: All, Answered or Failed.--take <take>: How many to show, up to 500.
node capture show
xema node capture show <call>
One captured call, every SIP message in it: xema node capture show 01a1….
<call>: The call, asxema node captureslists it.
cluster status
xema cluster status
Show what this server belongs to, and who else is in it.
cluster token
xema cluster token
Mint a single-use pass for another server to join this cluster.
--cluster <cluster>: Which cluster the new server joins. Defaults to this node's.--minutes <minutes>: How long it stays valid.--label <label>: A note about who it was minted for.--server <server>: How the joining server reaches this cluster's database. Defaults to the address recorded for this node, because the local setting is usually a loopback and would send the new server to its own database.--address <address>: The joining server's IPv4 address, where it is outside this cluster's subnet — a DR node: the database is let in from it first. Run on the node holding the database.
cluster remove
xema cluster remove <node>
Take one server out of this cluster, and give what it held to another.
<node>: The node to remove, by name or by id.--to <to>: Which node takes its trunks and devices. Defaults to this one.--yes: Answer the confirmation.
cluster name
xema cluster name <name>
Name the cluster, as every screen shows it: xema cluster name "Ajmer site".
<name>: Its name.
cluster
xema cluster
The whole cluster: what it is made of, and what each server has made of it.
--seconds <seconds>: How long to wait for servers to say what they are running. Zero skips asking them, which is worth having when the broker is the thing that is broken.
cluster secret set
xema cluster secret set <purpose>
Record the password this cluster's nodes use for one of its shared parts.
<purpose>: redis or broker.--secret <secret>: The password. Prompted for, unhidden, if not given.--username <username>: The user, where the part has users. The broker does; Redis does not.--generate: Make one up instead of asking for it — 32 characters, safe to paste.
cluster secret clear
xema cluster secret clear <purpose>
Forget a recorded password. The nodes then connect without one.
<purpose>: redis or broker.
bff failover
xema bff failover
Move the active BFF to another node. Calls continue; agents' connections move with it.
--to <to>: The node to move to, by name. Needed where more than one other node holds the bff role.--yes: Do not ask before moving it.
broker queues
xema broker queues
Show Xema's queues on this broker, with the type each one currently has.
broker queues migrate
xema broker queues migrate
Move Xema's classic queues to quorum, so they survive a broker node going away.
--yes: Don't ask. Required when there's nobody to answer.--dry-run: Print what would be deleted, and delete nothing.--force: Delete a queue even with messages still in it, losing them.
hosts
xema hosts
The hosts every service answers at: xema hosts.
hosts limit
xema hosts limit [<hosts>…]
Limit the hosts to the cluster's own and any named: xema hosts limit, xema hosts limit lb.example.com.
[<hosts>…]: Host names or IP addresses beyond the cluster's own, added to those already named.
hosts any
xema hosts any
Answer at any host, the default: xema hosts any. The named hosts are kept for a later limit.
hosts add
xema hosts add <host>
Name a host beyond the cluster's own: xema hosts add lb.example.com.
<host>: A host name or IP address.
hosts remove
xema hosts remove <host>
Stop naming a host: xema hosts remove lb.example.com. The cluster's own cannot be removed.
<host>: A host named withaddorlimit.
cors
xema cors
Which pages may call from another origin: xema cors.
cors add
xema cors add <origin>
Let another site's pages call: xema cors add https://crm.example.com.
<origin>: Scheme, host and any port, as the browser sends it.
cors remove
xema cors remove <origin>
Stop another site's pages calling: xema cors remove https://crm.example.com.
<origin>: An origin added withadd.
cors any
xema cors any
Let any site's pages call: xema cors any. The origins added are kept for a later limit.
cors limit
xema cors limit
Only the cluster's own pages and those added, the default: xema cors limit.
dns
xema dns
The DNS of the node Manager runs on: xema dns.
dns servers
xema dns servers <servers>
The name servers of the node Manager runs on: xema dns servers 10.0.0.2,10.0.0.3.
<servers>: The servers, comma-separated.
dns domains
xema dns domains <domains>
The search domains of the node Manager runs on: xema dns domains site.local.
<domains>: The domains, comma-separated.
time
xema time
A node's clock, zone and time sync: xema time, or --node mini4.
--node <node>: The node, by name; this one when not given.
time clocks
xema time clocks
Every node's clock against the BFF's: xema time clocks.
time zone
xema time zone <zone>
Move a node to another time zone: xema time zone Asia/Kolkata. Its services keep running.
<zone>: The zone, as tzdata names it.--node <node>: The node, by name; this one when not given.
time sync
xema time sync <state>
Turn a node's time sync on or off: xema time sync on.
<state>:onoroff.--node <node>: The node, by name; this one when not given.
time servers
xema time servers [<servers>]
The servers a node takes its time from: xema time servers 0.pool.ntp.org,1.pool.ntp.org. None given hands the question back to the machine's own configuration.
[<servers>]: The servers, comma-separated.--node <node>: The node, by name; this one when not given.
binding add
xema binding add <address> <purpose>
Bind an address on a node to a purpose: xema binding add 10.0.0.5 sip --node mini4 --host-name sip.site.local.
<address>: One of the node's addresses.<purpose>: What it carries, asxema bindingsnames purposes.--node <node>: The node, by name; this one when not given.--host-name <host-name>: The name it answers to.--description <description>: What it is for.
binding remove
xema binding remove <address>
Remove a node's binding: xema binding remove 10.0.0.5 --node mini4. One a trunk uses is refused by Manager.
<address>: The bound address.--node <node>: The node, by name; this one when not given.
bindings apply
xema bindings apply
Apply this node's network bindings: the node agent writes the SIP listeners and trunk addresses they name and reloads PJSIP. A listener whose address another program still holds is reported, not forced. Run as root.
bindings
xema bindings
A node's network bindings, what uses each, and whether it has applied them: xema bindings --node mini4.
--node <node>: The node, by name; this one when not given.
Running services
Start and stop Xema's services, and read what they log.
start
xema start [<service>…]
Start services. With none named, every Xema service on this node; starting drops no call, so nothing is asked.
[<service>…]: Services (manager, xema-manager, redis) or a group (infra, all). None: every Xema service.
stop
xema stop [<service>…]
Stop services. With none named, every Xema service on this node, after asking: the calls they carry drop.
[<service>…]: Services (manager, xema-manager, redis) or a group (infra, all). None: every Xema service.--yes: Do not ask before stopping every Xema service.
restart
xema restart [<service>…]
Restart services. With none named, every Xema service on this node, after asking: the calls they carry drop.
[<service>…]: Services (manager, xema-manager, redis) or a group (infra, all). None: every Xema service.--yes: Do not ask before restarting every Xema service.
shutdown
xema shutdown
Stop every Xema service in order, then power the machine off — or restart it with --reboot.
--yes: Don't ask. Required when there's nobody to answer.--reboot: Restart instead of powering off.--dry-run: Print what would be stopped, and stop nothing.
logs
xema logs [<service>]
Show journal logs for the Xema services — a live two-pane browser when run in a terminal.
[<service>]: Service to select initially, e.g. manager or xema-manager.--lines <lines>: -n, Number of recent log lines to load.--follow: -f, Keep following new output (only relevant when output is redirected).
logs backup
xema logs backup
Copy the logs database, which the conversion does not touch.
crash-reports
xema crash-reports
Browse restart reasons and recent errors for each Xema service.
--lines <lines>: -n, How many recent journal lines to scan per service.
loglevel show
xema loglevel show [<words>…]
One service's levels, by category: xema loglevel bff.
[<words>…]: The service, and--nodewith a node's name.
loglevel set
xema loglevel set [<words>…]
Set categories' levels in one service: xema loglevel set bff Default=Debug Xema.Bff.Queues=Trace. A category set to nothing (Microsoft=) is taken out; the rest of the block is kept.
[<words>…]: The service, Category=Level for each, and--nodewith a node's name.
loglevels
xema loglevels
The services whose log levels can be changed: xema loglevels, or --node mini4.
--node <node>: The node, by name; the one Manager runs on when not given.
Backups and data
Backups, the databases, call records, and what comes across from V1.
backup
xema backup
Back up this node entirely: every database on its server that holds a table, the call record where it is on a server of its own, and the files it cannot download again. Each part is taken and reported even when one before it failed, and the exit code is the worst of them.
backup list
xema backup list
xema backup list: every run on this machine, newest first.
--json: The runs as a JSON array, which is what the node agent reads.
backup prune
xema backup prune
xema backup prune --keep N: keeps the N newest complete runs and deletes every run older than them.
--keep <keep>: How many complete runs to keep. At least one.
files backup
xema files backup
Back up the files this node cannot download again. xema backup runs this after the databases.
metrics backup
xema metrics backup
Copy the metrics database, which the conversion does not touch and which is usually the largest on the server.
database connect
xema database connect
Record how this server reaches its database, check that it works, and set up the schema.
--server <server>: The database host.localhostfor the ordinary single server.--user <user>: The MariaDB user Xema connects as.--pass <pass>: Its password. Prompted for if left out, which keeps it out of shell history.--provision: Create the user first, with a password nobody has to choose or remember. Logs in to MariaDB as whoever is running the command, so it needs a login that may create users.--trusted-user: Log in to MariaDB as root instead of as yourself. Needed when your own Linux login has no rights to create a user; run the whole command undersudofor it to work.--from-v1: Take the server, user and password from the V1 installation on this machine rather than being told them. Every V1 service signs in as the one user V1's installer made, so on an upgraded server the right credentials already exist and making new ones is the only wrong move.
database
xema database
Show what this server is set to connect to. Never the password.
database tables
xema database tables
List the tables V2's schemas own, one per line: server, database and table, separated by tabs. Read from this build's schemas; nothing is written.
database upgrade
xema database upgrade
Apply this release's schema changes: every schema when all of them are additive, or only the schemas named, whatever they change. Components keep the versions they run.
--allow-narrowing: Also apply migrations that shorten columns. A value that does not fit fails the migration.--dry-run: List the pending migrations and whether they can be applied, and change nothing.--yes: Do not ask before applying.--schemas <schemas>: Apply only these, whatever their changes are, and leave every other schema as it is. What uses a schema whose change is destructive may fail until it is upgraded.xema database upgrade --dry-runlists them.
database backup
xema database backup
Copy the databases Database.Migrate converts, before it converts them.
cdr
xema cdr
Show what this node is set to connect to for the CDR. Never the password.
cdr connect
xema cdr connect
Record which database server this node's call record is kept on, and check it works.
--server <server>: The server the CDR is on. Left out, this records this node's own database.--user <user>: The MariaDB user SimpleCdr connects as.--pass <pass>: Its password. Prompted for if left out, which keeps it out of shell history.--role <role>: Which copy of the call record this node's recorder keeps: primary, ha or dr. One node each.--allow-narrowing: Also apply schema changes that shorten columns, asxema database upgradeallows. A value that does not fit fails the change.
cdr backup
xema cdr backup
Copy the call record, which the conversion changes and database backup does not cover.
cdr copy
xema cdr copy
Copy the call record's history from another copy into this node's: for a new ha or dr copy, once its recorder is running. Rows it already has are skipped. Run as root.
--from-server <from-server>: The server the history is on. Defaults to the cluster's database server.--from-user <from-user>: Its MariaDB user. Defaults to this node's cluster user; with another, the password is asked for.--from-database <from-database>: The database the history is in.--yes: Do not ask before copying.
cdr columns
xema cdr columns
Each spare column of the call record and the variable it is filled from: xema cdr columns.
cdr column
xema cdr column <column> [<variable>]
Fill a spare column from a channel variable, or leave it empty with no variable: xema cdr column Text1 CUSTOMER_ID. The rest are kept.
<column>: The column, asxema cdr columnslists it.[<variable>]: The channel variable; left out, the column is filled from nothing.
cdr script
xema cdr script
The SQL run against the call records once a call is written: xema cdr script. --set script.sql replaces it, an empty file stops it, and --try script.sql runs a script once and undoes it, saying what it would have touched.
--set <set>: A file whose SQL becomes the script.--@try <@try>
v2cdr correct
xema v2cdr correct
Re-key the calls recorded under ids that are not UUID v7, so reports find them. Run as root.
v1cdr migrate
xema v1cdr migrate
Copy V1's call-record history into this build's tables, while V2 serves. Run as root.
--from-start: Read every table from its start again, trying each refused row once more: for after a refusal's cause is fixed. Rows already copied are written again as the same keys, which changes nothing.
v1data migrate
xema v1data migrate
Copy V1's dataset rows into this build's tables, while V2 serves. Run as root.
v1reports migrate
xema v1reports migrate
Convert a converted V1 site's saved reports and post-processing script to this version's call-record tables. Examines and writes the before and after of each, changing nothing, unless --apply or --restore is given. Run as root.
--apply: Write the reports and the script that convert cleanly, keeping their originals first.--restore: Put back the originals an earlier --apply kept, wherever they have not been changed since.--dry-run: Examine and write the before and after of each, changing nothing. This is the default.
People
Agents, teams, skills, roles and processes, as the console sets them.
agents
xema agents
The agents, their teams and the skills they take calls on: xema agents.
agent show
xema agent show <user-name>
One agent: their name, team, phone, skills and roles: xema agent show vasu.
<user-name>: The agent, by username.
agent add
xema agent add <user-name>
Add an agent who signs in to an Agent UI with this username and a password: xema agent add vasu --name "Vasu" --team Sales --skill English,Billing, or --like vasu1 for another agent's team and skills.
<user-name>: The username they sign in with.--name <name>: Their name, as the console shows it. Asked at a terminal when not given.--team <team>: The team they are in, by name. Asked at a terminal when neither this nor --like is given.--skill <skill>: The skills they take calls on, by name, comma-separated.--like <like>: An agent, by username, whose team and skills they get; --team and --skill override either.--phone <phone>: What they take calls on:softphone, their own, which Manager gives when this is not said; ordesk, a handset whose number they give at sign-in.--mobile <mobile>: Their mobile number.--password-stdin: Read the password from the first line of standard input rather than asking for it.
agent set
xema agent set [<user-name>]
Change an agent: xema agent set vasu --team Sales --add-skill Billing --phone desk. Only what is named changes; the rest is sent back as Manager holds it, since Manager's edit replaces the whole agent.
[<user-name>]: The agent, by username.--all: Every agent, in place of one:xema agent set --all --add-role "Night Shift". Roles only.--name <name>: Their name.--team <team>: Their team, by name.--skill <skill>: Their skills, by name, comma-separated: these and no others.--add-skill <add-skill>: Skills to give them, by name, comma-separated.--remove-skill <remove-skill>: Skills to take away, by name, comma-separated.--phone <phone>:softphoneordesk.--mobile <mobile>: Their mobile number.--role <role>: Their roles, by name, comma-separated: these and no others.xema roleslists them.--add-role <add-role>: Roles to give them, by name, comma-separated.--remove-role <remove-role>: Roles to take away, by name, comma-separated.
agent password
xema agent password <user-name>
Set an agent's password: xema agent password vasu.
<user-name>: The agent, by username.--password-stdin: Read the password from the first line of standard input rather than asking for it.
agent remove
xema agent remove <user-name>
Remove an agent and their sign-in: xema agent remove vasu.
<user-name>: The agent, by username.--yes: Answer yes to the confirmation up front.
teams
xema teams
The teams, their leads and how many agents each has: xema teams.
team show
xema team show <team>
One team, every field: xema team show Sales.
<team>: The team, by name.
team add
xema team add [<words>…]
Add a team: xema team add Sales description="Inbound sales" tlUserName=vasu. --process puts it in a process as it is made.
[<words>…]: Its name, then field=value for anything else, and--processwith a process's name;xema team fieldslists the fields.
team set
xema team set [<words>…]
Change a team: xema team set Sales enableBarging=on breakPolicy=Suspended. What is not named is kept.
[<words>…]: The team, by name, then field=value;xema team fieldslists them.
team remove
xema team remove <team>
Remove a team. One with agents in it is refused, with who they are.
<team>: The team, by name.--yes: Answer yes to the confirmation up front.
team fields
xema team fields
What can be set on a team, and the values each field takes.
skills
xema skills
The skills, and how many agents hold each: xema skills.
skill show
xema skill show <skill>
One skill: xema skill show English.
<skill>: The skill, by name.
skill add
xema skill add [<words>…]
Add a skill: xema skill add English description="English-speaking callers".
[<words>…]: Its name, then field=value;xema skill fieldslists them.
skill set
xema skill set [<words>…]
Change a skill: xema skill set English name=Hindi.
[<words>…]: The skill, by name, then field=value.
skill remove
xema skill remove <skill>
Remove a skill.
<skill>: The skill, by name.--yes: Answer yes to the confirmation up front.
skill fields
xema skill fields
What can be set on a skill.
roles
xema roles
The roles and what each grants: xema roles.
role show
xema role show <role>
One role, every field: xema role show Supervisor.
<role>: The role, by name.
role add
xema role add [<words>…]
Add a role: xema role add Supervisor permissions=queues.view,agents.view.
[<words>…]: Its name, then field=value;xema role fieldslists the fields.
role set
xema role set [<words>…]
Change a role: xema role set Supervisor permissions=queues.view. What is not named is kept.
[<words>…]: The role, by name, then field=value.
role remove
xema role remove <role>
Remove a role.
<role>: The role, by name.--yes: Answer yes to the confirmation up front.
role fields
xema role fields
What can be set on a role.
role permissions
xema role permissions
Every permission a role can grant: xema role permissions.
processes
xema processes
The processes: xema processes.
process show
xema process show <process>
One process, every field: xema process show Renewals.
<process>: The process, by name.
process add
xema process add [<words>…]
Add a process: xema process add Renewals ownerMayAddAgents=on.
[<words>…]: Its name, then field=value;xema process fieldslists them.
process set
xema process set [<words>…]
Change a process: xema process set Renewals allowListening=on. What is not named is kept.
[<words>…]: The process, by name, then field=value.
process remove
xema process remove <process>
Remove a process. Its agents, teams, queues and the rest are kept; only their link to it goes.
<process>: The process, by name.--yes: Answer yes to the confirmation up front.
process fields
xema process fields
What can be set on a process.
process members
xema process members <process>
What a process holds: its agents, teams, queues, dialers and datasets: xema process members Renewals.
<process>: The process, by name.
process link
xema process link [<words>…]
Put something in a process: xema process link Renewals agent vasu, or team, queue, dialer, dataset by name.
[<words>…]: The process, what kind of thing, and its name.
process unlink
xema process unlink [<words>…]
Take something out of a process: xema process unlink Renewals queue Sales. The thing itself is kept.
[<words>…]: The process, what kind of thing, and its name.
process lead
xema process lead [<words>…]
Set the lead of a team in a process: xema process lead Renewals Sales vasu.
[<words>…]: The process, the team, and the lead's username.
process owners
xema process owners <process>
A process's owners, or its QAs with --qa: xema process owners Renewals.
<process>: The process, by name.--qa: Its QAs rather than its owners.
process owner-add
xema process owner-add <process> <user-name>
Make somebody an owner of a process, or a QA with --qa: xema process owner-add Renewals asha.
<process>: The process, by name.<user-name>: Their username.--qa: As a QA rather than an owner.
process owner-remove
xema process owner-remove <process> <user-name>
Stop somebody being an owner of a process, or a QA with --qa: xema process owner-remove Renewals asha.
<process>: The process, by name.<user-name>: Their username.--qa: As a QA rather than an owner.
process trunks
xema process trunks <process>
The trunks a process takes its calls from, whole or by number: xema process trunks Renewals.
<process>: The process, by name.
process trunk
xema process trunk [<words>…]
Have a process take a trunk's calls (Vasu, 2026-10-16): xema process trunk Renewals carrier1 for every call on it, or the numbers dialled after the trunk's name for those alone. One process per number; a manager's to set.
[<words>…]: The process, the trunk, and any numbers on it, by their patterns.
process untrunk
xema process untrunk <process> <trunk>
Stop a process taking a trunk's calls: xema process untrunk Renewals carrier1.
<process>: The process, by name.<trunk>: The trunk, by name.
breaks
xema breaks
The break types: xema breaks.
break show
xema break show <name>
One break, every field: xema break show Lunch.
<name>: The break, by name.
break add
xema break add [<words>…]
Add a break: xema break add Lunch kind=Lunch enabled=on.
[<words>…]: Its name, then field=value;xema break fieldslists the fields.
break set
xema break set [<words>…]
Change a break: xema break set Lunch mandatory=on. What is not named is kept.
[<words>…]: The break, by name, then field=value.
break remove
xema break remove <name>
Remove a break.
<name>: The break, by name.--yes: Answer yes to the confirmation up front.
break fields
xema break fields
What can be set on a break.
schedules
xema schedules
The calling schedules and the dialers on each: xema schedules.
schedule show
xema schedule show <schedule>
One schedule, every field: xema schedule show "Business hours".
<schedule>: The schedule, by name.
schedule add
xema schedule add [<words>…]
Add a schedule: xema schedule add "Business hours" cronStrings='["* 3-12 * * 1-5"]'.
[<words>…]: Its name, then field=value;xema schedule fieldslists the fields.
schedule set
xema schedule set [<words>…]
Change a schedule: xema schedule set "Business hours" description=Weekdays. What is not named is kept.
[<words>…]: The schedule, by name, then field=value.
schedule remove
xema schedule remove <schedule>
Remove a schedule.
<schedule>: The schedule, by name.--yes: Answer yes to the confirmation up front.
schedule fields
xema schedule fields
What can be set on a schedule.
agentfeatures
xema agentfeatures
What every Agent UI offers its agents: xema agentfeatures.
agentfeatures set
xema agentfeatures set [<words>…]
Change what Agent UIs offer: xema agentfeatures set callHistory=on myDay=off.
[<words>…]: field=value;xema agentfeatures fieldslists them.
agentfeatures fields
xema agentfeatures fields
What can be set.
busyhours
xema busyhours
The busy hours, and how they are found: xema busyhours.
busyhours set
xema busyhours set [<words>…]
Change the busy hours: xema busyhours set declaredStartHour=9 declaredEndHour=18.
[<words>…]: field=value;xema busyhours fieldslists them.
busyhours fields
xema busyhours fields
What can be set.
phones
xema phones
The phones, and how many nodes hold each one's registration: xema phones.
phone show
xema phone show <phone>
One phone: its group, who is on it, and each node holding its registration: xema phone show 1999. Its password only with --password, for typing into the handset.
<phone>: The phone, by number.--password: Show its password too.
phone add
xema phone add <phone>
Add a desk phone, which a handset registers as with this number and a password: xema phone add 1999 --node mini1. The password is typed twice, or read from standard input with --password-stdin, and never made up here: somebody has to type it into the handset, so it is theirs to choose.
<phone>: Its number, which is also what the handset registers as.--node <node>: The node it registers to; every node when not given.--password-stdin: Read the password from the first line of standard input rather than asking for it.
phone password
xema phone password <phone>
Set a phone's password, which its handset then registers with: xema phone password 1999.
<phone>: The phone, by number.--password-stdin: Read the password from the first line of standard input rather than asking for it.
phone remove
xema phone remove <phone>
Remove a phone: xema phone remove 1999.
<phone>: The phone, by number.--yes: Answer yes to the confirmation up front.
phone assign
xema phone assign [<words>…]
Assign phones to the node they register to: xema phone assign 1006 1007 --node mini4.
[<words>…]: The phones, by number, and--nodewith the node's name.
phone unassign
xema phone unassign [<phone>…]
Unassign phones, so every node renders them: xema phone unassign 1006.
[<phone>…]: The phones, by number.
plans
xema plans
The plans, what each forecasts, and the terms where none applies: xema plans.
plan show
xema plan show <plan>
One plan, every field, and what it forecasts: xema plan show 3f9c2a.
<plan>: The plan, by its id or the end of it.
plan add
xema plan add [<words>…]
Add a plan: xema plan add process=Renewals skills=English demandModel=Growth growthPercent=110 reach=500 reachPeriod=Day. What is not named starts from the terms Metrics uses where no plan applies. No process is every process.
[<words>…]: field=value;xema plan fieldslists them.
plan set
xema plan set [<words>…]
Change a plan: xema plan set 3f9c2a growthPercent=120. What is not named is kept.
[<words>…]: The plan, by its id or the end of it, then field=value.
plan remove
xema plan remove <plan>
Remove a plan; its skills are forecast on the next plan that applies, or the defaults.
<plan>: The plan, by its id or the end of it.--yes: Answer yes to the confirmation up front.
plan fields
xema plan fields
What can be set on a plan, and the values Manager takes for its choices.
Calls
Trunks, numbers, queues, dialers and the flows a call takes.
trunks
xema trunks
Show each trunk and the node it is connected to.
trunk assign
xema trunk assign <trunk>
Assign a trunk to the node its circuit is plugged into: xema trunk assign 9001 --node mini4.
<trunk>: The trunk, by name.--node <node>: The node, by name.
trunk unassign
xema trunk unassign <trunk>
Unassign a trunk, so no node carries it: xema trunk unassign 9001.
<trunk>: The trunk, by name.
trunk show
xema trunk show <trunk>
One trunk, every field: xema trunk show 9001. Its password is shown, as the console's edit page shows it.
<trunk>: The trunk, by name.
trunk add
xema trunk add [<words>…]
Add a trunk: xema trunk add carrier1 kind=Provider serverIp=10.0.0.5 pilotNumber=4000. xema trunk assign then gives it its node.
[<words>…]: Its name, then field=value;xema trunk fieldslists them.
trunk set
xema trunk set [<words>…]
Change a trunk: xema trunk set 9001 codecs=alaw,ulaw. What is not named is kept.
[<words>…]: The trunk, by name, then field=value.
trunk remove
xema trunk remove <trunk>
Remove a trunk.
<trunk>: The trunk, by name.--yes: Answer yes to the confirmation up front.
trunk fields
xema trunk fields
What can be set on a trunk.
numbers
xema numbers <trunk>
The numbers a trunk answers and what each starts: xema numbers 9001.
<trunk>: The trunk, by name.
number show
xema number show [<words>…]
One number: xema number show 9001 4000.
[<words>…]: The trunk, by name, then the number.
number add
xema number add [<words>…]
A number a trunk answers, and the XApp it starts: xema number add 9001 4000 xApp=Welcome enabled=on.
[<words>…]: The trunk, by name, the number, then field=value;xema number fieldslists them.
number set
xema number set [<words>…]
Change a number: xema number set 9001 4000 xApp=Sales.
[<words>…]: The trunk, by name, the number, then field=value.
number remove
xema number remove [<words>…]
Stop a trunk answering a number: xema number remove 9001 4000.
[<words>…]: The trunk, by name, then the number;--yesanswers the confirmation up front.
number fields
xema number fields
What can be set on a number.
phonegroups
xema phonegroups
The phone groups: xema phonegroups.
phonegroup show
xema phonegroup show <group>
One phone group: xema phonegroup show Reception.
<group>: The group, by name.
phonegroup add
xema phonegroup add [<words>…]
Add a phone group: xema phonegroup add Reception enableDialing=on dialTrunk=9001.
[<words>…]: Its name, then field=value;xema phonegroup fieldslists them.
phonegroup set
xema phonegroup set [<words>…]
Change a phone group: xema phonegroup set Reception enableRecording=on.
[<words>…]: The group, by name, then field=value.
phonegroup remove
xema phonegroup remove <group>
Remove a phone group.
<group>: The group, by name.--yes: Answer yes to the confirmation up front.
phonegroup fields
xema phonegroup fields
What can be set on a phone group.
queues
xema queues
The call queues and the skills they offer calls to: xema queues.
queue show
xema queue show <queue>
One queue, every field: xema queue show Sales.
<queue>: The queue, by name.
queue add
xema queue add [<words>…]
Add a queue: xema queue add Sales skills=English,Billing enableRecording=on. --process puts it in a process as it is made.
[<words>…]: Its name, then field=value, and--processwith a process's name;xema queue fieldslists the fields.
queue set
xema queue set [<words>…]
Change a queue: xema queue set Sales weight=2 skills=English. What is not named is kept.
[<words>…]: The queue, by name, then field=value.
queue remove
xema queue remove <queue>
Remove a queue.
<queue>: The queue, by name.--yes: Answer yes to the confirmation up front.
queue fields
xema queue fields
What can be set on a queue.
dialers
xema dialers
The dialers and whether each is running: xema dialers.
dialer show
xema dialer show <dialer>
One dialer, every field: xema dialer show Renewals.
<dialer>: The dialer, by name.
dialer add
xema dialer add [<words>…]
Add a dialer: xema dialer add Renewals kind=Progressive trunk=9001 dataset=Leads xApp=Renewals.
[<words>…]: Its name, then field=value, and--processwith a process's name;xema dialer fieldslists the fields.
dialer set
xema dialer set [<words>…]
Change a dialer: xema dialer set Renewals pace=3. What is not named is kept.
[<words>…]: The dialer, by name, then field=value.
dialer remove
xema dialer remove <dialer>
Remove a dialer.
<dialer>: The dialer, by name.--yes: Answer yes to the confirmation up front.
dialer fields
xema dialer fields
What can be set on a dialer.
dialer start
xema dialer start <dialer>
Start a dialer: xema dialer start Renewals, or --process Collections for one processes share.
<dialer>: The dialer, by name.--process <process>: The process, by name, to start a dialer several processes share for; its calls are that process's.
dialer stop
xema dialer stop <dialer>
Stop a dialer: xema dialer stop Renewals.
<dialer>: The dialer, by name.
dialer refresh
xema dialer refresh <dialer>
Re-read a dialer's datasets, so rows added since are dialled: xema dialer refresh Renewals.
<dialer>: The dialer, by name.
datasets
xema datasets
The datasets and their rows: xema datasets.
dataset show
xema dataset show <dataset>
One dataset, every field: xema dataset show Leads.
<dataset>: The dataset, by name.
dataset add
xema dataset add [<words>…]
Make a dataset from a CSV, mapping its columns to the dataset's: xema dataset add Leads leads.csv --map mobile=Number,name=Text1,city=Text2. A column is named by its header, or by its number from 1 with --no-headers. One must be the Number. --process puts the dataset in a process.
[<words>…]: The dataset's name, the file,--mapwith column=Slot pairs, and optionally--no-headers,--processwith a process's name,--check-duplicates, and--date-format column=formatfor a date column.
dataset upload
xema dataset upload <dataset> <file>
Load another file into a dataset, read with the mapping its first file set: xema dataset upload Leads more.csv.
<dataset>: The dataset, by name.<file>: The CSV on this machine.--description <description>: What this batch is, as the console lists it.
dialouts
xema dialouts
The dial-outs: xema dialouts.
dialout show
xema dialout show <dialout>
One dial-out, every field: xema dialout show Welcome.
<dialout>: The dial-out, by name.
dialout add
xema dialout add [<words>…]
Add a dial-out: xema dialout add Welcome trunk=9001.
[<words>…]: Its name, then field=value;xema dialout fieldslists the fields.
dialout set
xema dialout set [<words>…]
Change a dial-out: xema dialout set Welcome description="Updated". What is not named is kept.
[<words>…]: The dial-out, by name, then field=value.
dialout remove
xema dialout remove <dialout>
Remove a dial-out.
<dialout>: The dial-out, by name.--yes: Answer yes to the confirmation up front.
dialout fields
xema dialout fields
What can be set on a dial-out.
callerflows
xema callerflows <queue>
The keys a queue's waiting callers can press: xema callerflows Sales.
<queue>: The queue, by name.
callerflow show
xema callerflow show [<words>…]
One key: xema callerflow show Sales 1.
[<words>…]: The queue, then the key pattern.
callerflow add
xema callerflow add [<words>…]
A key that switches a waiting caller into a flow: xema callerflow add Sales 1 flow=Callback enabled=on startAtFirstBlock=on.
[<words>…]: The queue, the key pattern, then field=value;xema callerflow fieldslists them.
callerflow set
xema callerflow set [<words>…]
Change a key: xema callerflow set Sales 1 enabled=off.
[<words>…]: The queue, the key pattern, then field=value.
callerflow remove
xema callerflow remove [<words>…]
Remove a key.
[<words>…]: The queue, then the key pattern;--yesanswers the confirmation up front.
callerflow fields
xema callerflow fields
What can be set on a key.
agentflows
xema agentflows <queue>
A queue's switch-to-flow actions: xema agentflows Sales.
<queue>: The queue, by name.
agentflow show
xema agentflow show [<words>…]
One switch-to-flow action: xema agentflow show Sales Survey.
[<words>…]: The queue, then the action's name.
agentflow add
xema agentflow add [<words>…]
An action that switches the call into a flow: xema agentflow add Sales Survey flow=CSAT.
[<words>…]: The queue, the action's name, then field=value;xema agentflow fieldslists them.
agentflow set
xema agentflow set [<words>…]
Change a switch-to-flow action: xema agentflow set Sales Survey flow=NPS.
[<words>…]: The queue, the action's name, then field=value.
agentflow remove
xema agentflow remove [<words>…]
Remove a switch-to-flow action.
[<words>…]: The queue, then the action's name;--yesanswers the confirmation up front.
agentflow fields
xema agentflow fields
What can be set on a switch-to-flow action.
agentphones
xema agentphones <queue>
A queue's transfer-to-phone actions: xema agentphones Sales.
<queue>: The queue, by name.
agentphone show
xema agentphone show [<words>…]
One transfer-to-phone action: xema agentphone show Sales Escalate.
[<words>…]: The queue, then the action's name.
agentphone add
xema agentphone add [<words>…]
An action that transfers the call to a phone: xema agentphone add Sales Escalate phoneId=1006.
[<words>…]: The queue, the action's name, then field=value;xema agentphone fieldslists them.
agentphone set
xema agentphone set [<words>…]
Change a transfer-to-phone action: xema agentphone set Sales Escalate promptAgent=on.
[<words>…]: The queue, the action's name, then field=value.
agentphone remove
xema agentphone remove [<words>…]
Remove a transfer-to-phone action.
[<words>…]: The queue, then the action's name;--yesanswers the confirmation up front.
agentphone fields
xema agentphone fields
What can be set on a transfer-to-phone action.
audios
xema audios
The prompts and the languages each is recorded in: xema audios.
audio show
xema audio show <audio>
One prompt, every field: xema audio show Welcome.
<audio>: The prompt, by name.
audio add
xema audio add [<words>…]
Add a prompt: xema audio add Welcome description="Front-door greeting".
[<words>…]: Its name, then field=value;xema audio fieldslists the fields.
audio remove
xema audio remove <audio>
Remove a prompt.
<audio>: The prompt, by name.--yes: Answer yes to the confirmation up front.
audio fields
xema audio fields
What can be set on a prompt.
audio record
xema audio record <prompt> <language> <file>
Record a prompt in a language: xema audio record Welcome hi welcome-hindi.wav. A recording already there in that language is replaced.
<prompt>: The prompt, by name.<language>: The language, by its code, asxema languagesshows it.<file>: The recording on this machine.
music list
xema music list
The music-on-hold classes: xema music list.
music show
xema music show <music>
One music class, every field: xema music show Default.
<music>: The music class, by name.
music add
xema music add [<words>…]
Add a music class: xema music add Default description="Hold music".
[<words>…]: Its name, then field=value;xema music fieldslists the fields.
music set
xema music set [<words>…]
Change a music class: xema music set Default description="Hold music". What is not named is kept.
[<words>…]: The music class, by name, then field=value.
music remove
xema music remove <music>
Remove a music class.
<music>: The music class, by name.--yes: Answer yes to the confirmation up front.
music fields
xema music fields
What can be set on a music class.
music track-add
xema music track-add [<words>…]
Add tracks to a music-on-hold class, played after the ones it has: xema music track-add Hold calm.mp3 bright.mp3.
[<words>…]: The class, by name, then the files on this machine.
music track-remove
xema music track-remove <music> <track>
Take a track out of a music-on-hold class: xema music track-remove Hold calm.mp3.
<music>: The class, by name.<track>: The track, by name, asxema music showlists it.
languages
xema languages
The languages and how many prompts each holds: xema languages.
language show
xema language show <language>
One language, every field: xema language show Hindi.
<language>: The language, by name.
language add
xema language add [<words>…]
Add a language: xema language add Hindi langCode=hi.
[<words>…]: Its name, then field=value;xema language fieldslists the fields.
language set
xema language set [<words>…]
Change a language: xema language set Hindi name=Hindi. What is not named is kept.
[<words>…]: The language, by name, then field=value.
language remove
xema language remove <language>
Remove a language.
<language>: The language, by name.--yes: Answer yes to the confirmation up front.
language fields
xema language fields
What can be set on a language.
Integrations and AI
Webhooks, CRMs, lookups and the other apps a call can reach, and the AI behind them.
webhooks
xema webhooks
The webhooks: xema webhooks.
webhook show
xema webhook show <webhook>
One webhook, every field: xema webhook show crm-push.
<webhook>: The webhook, by name.
webhook add
xema webhook add [<words>…]
Add a webhook: xema webhook add crm-push verb=post url=https://crm.example/hook.
[<words>…]: Its name, then field=value;xema webhook fieldslists the fields.
webhook set
xema webhook set [<words>…]
Change a webhook: xema webhook set crm-push url=https://crm.example/v2. What is not named is kept.
[<words>…]: The webhook, by name, then field=value.
webhook remove
xema webhook remove <webhook>
Remove a webhook.
<webhook>: The webhook, by name.--yes: Answer yes to the confirmation up front.
webhook fields
xema webhook fields
What can be set on a webhook.
webhook enable
xema webhook enable <webhook>
Turn a webhook on: xema webhook enable crm-push.
<webhook>: The webhook, by name.
webhook disable
xema webhook disable <webhook>
Turn a webhook off: xema webhook disable crm-push.
<webhook>: The webhook, by name.
crms
xema crms <queue>
A queue's CRM pages: xema crms Sales.
<queue>: The queue, by name.
crm show
xema crm show [<words>…]
One CRM page: xema crm show Sales Lookup.
[<words>…]: The queue, then the page's name.
crm add
xema crm add [<words>…]
A CRM page a queue's agents open: xema crm add Sales Lookup url=https://crm.example/?n={caller}.
[<words>…]: The queue, the page's name, then field=value;xema crm fieldslists them.
crm set
xema crm set [<words>…]
Change a CRM page: xema crm set Sales Lookup reuseTab=on.
[<words>…]: The queue, the page's name, then field=value.
crm remove
xema crm remove [<words>…]
Remove a CRM page: xema crm remove Sales Lookup.
[<words>…]: The queue, then the page's name;--yesanswers the confirmation up front.
crm fields
xema crm fields
What can be set on a CRM page.
lookups
xema lookups
The dataset lookups: xema lookups.
lookup show
xema lookup show <lookup>
One dataset lookup, every field: xema lookup show Welcome.
<lookup>: The dataset lookup, by name.
lookup add
xema lookup add [<words>…]
Add a dataset lookup: xema lookup add Welcome dataset=Leads noOfDigitsToMatch=10.
[<words>…]: Its name, then field=value;xema lookup fieldslists the fields.
lookup set
xema lookup set [<words>…]
Change a dataset lookup: xema lookup set Welcome description="Updated". What is not named is kept.
[<words>…]: The dataset lookup, by name, then field=value.
lookup remove
xema lookup remove <lookup>
Remove a dataset lookup.
<lookup>: The dataset lookup, by name.--yes: Answer yes to the confirmation up front.
lookup fields
xema lookup fields
What can be set on a dataset lookup.
jsonapis
xema jsonapis
The JSON API calls: xema jsonapis.
jsonapi show
xema jsonapi show <jsonapi>
One JSON API call, every field: xema jsonapi show Welcome.
<jsonapi>: The JSON API call, by name.
jsonapi add
xema jsonapi add [<words>…]
Add a JSON API call: xema jsonapi add Welcome verb=get url=https://crm.example/lookup.
[<words>…]: Its name, then field=value;xema jsonapi fieldslists the fields.
jsonapi set
xema jsonapi set [<words>…]
Change a JSON API call: xema jsonapi set Welcome description="Updated". What is not named is kept.
[<words>…]: The JSON API call, by name, then field=value.
jsonapi remove
xema jsonapi remove <jsonapi>
Remove a JSON API call.
<jsonapi>: The JSON API call, by name.--yes: Answer yes to the confirmation up front.
jsonapi fields
xema jsonapi fields
What can be set on a JSON API call.
customapps
xema customapps
The custom apps: xema customapps.
customapp show
xema customapp show <customapp>
One custom app, every field: xema customapp show Welcome.
<customapp>: The custom app, by name.
customapp add
xema customapp add [<words>…]
Add a custom app: xema customapp add Welcome contextName=my-context.
[<words>…]: Its name, then field=value;xema customapp fieldslists the fields.
customapp set
xema customapp set [<words>…]
Change a custom app: xema customapp set Welcome description="Updated". What is not named is kept.
[<words>…]: The custom app, by name, then field=value.
customapp remove
xema customapp remove <customapp>
Remove a custom app.
<customapp>: The custom app, by name.--yes: Answer yes to the confirmation up front.
customapp fields
xema customapp fields
What can be set on a custom app.
callcounters
xema callcounters
The call counters: xema callcounters.
callcounter show
xema callcounter show <callcounter>
One call counter, every field: xema callcounter show Welcome.
<callcounter>: The call counter, by name.
callcounter add
xema callcounter add [<words>…]
Add a call counter: xema callcounter add Welcome dataset=Leads noOfDigitsToMatch=10.
[<words>…]: Its name, then field=value;xema callcounter fieldslists the fields.
callcounter set
xema callcounter set [<words>…]
Change a call counter: xema callcounter set Welcome description="Updated". What is not named is kept.
[<words>…]: The call counter, by name, then field=value.
callcounter remove
xema callcounter remove <callcounter>
Remove a call counter.
<callcounter>: The call counter, by name.--yes: Answer yes to the confirmation up front.
callcounter fields
xema callcounter fields
What can be set on a call counter.
xapps
xema xapps
The XApps, by kind: xema xapps.
xapp show
xema xapp show <xapp>
One XApp, every field: xema xapp show Welcome.
<xapp>: The XApp, by name.
aiproviders
xema aiproviders
The AI providers and whether each has a key: xema aiproviders.
aiprovider show
xema aiprovider show <kind>
One AI provider, every field: xema aiprovider show OpenAI.
<kind>: The AI provider, by name.
aiprovider add
xema aiprovider add [<words>…]
Add a AI provider: xema aiprovider add OpenAI settings='{"model":"gpt-4o"}'.
[<words>…]: Its name, then field=value;xema aiprovider fieldslists the fields.
aiprovider set
xema aiprovider set [<words>…]
Change a AI provider: xema aiprovider set OpenAI description=Primary. What is not named is kept.
[<words>…]: The AI provider, by name, then field=value.
aiprovider remove
xema aiprovider remove <kind>
Remove a AI provider.
<kind>: The AI provider, by name.--yes: Answer yes to the confirmation up front.
aiprovider fields
xema aiprovider fields
What can be set on a AI provider.
aiprovider key
xema aiprovider key <kind>
Set an AI provider's API key: xema aiprovider key OpenAI, typed unseen, or read from standard input with --key-stdin. Kept by Manager as a secret and never shown again.
<kind>: The provider, by kind.--key-stdin: Read the key from the first line of standard input rather than asking for it.
aiinputs
xema aiinputs
The AI input agents: xema aiinputs.
aiinput show
xema aiinput show <aiinput>
One AI input agent, every field: xema aiinput show CaptureReason.
<aiinput>: The AI input agent, by name.
aiinput add
xema aiinput add [<words>…]
Add a AI input agent: xema aiinput add CaptureReason aiProvider=OpenAI settings='{"systemPrompt":"Ask why they called"}'.
[<words>…]: Its name, then field=value;xema aiinput fieldslists the fields.
aiinput set
xema aiinput set [<words>…]
Change a AI input agent: xema aiinput set CaptureReason description=Reason. What is not named is kept.
[<words>…]: The AI input agent, by name, then field=value.
aiinput remove
xema aiinput remove <aiinput>
Remove a AI input agent.
<aiinput>: The AI input agent, by name.--yes: Answer yes to the confirmation up front.
aiinput fields
xema aiinput fields
What can be set on a AI input agent.
aiagents
xema aiagents
The AI conversation agents: xema aiagents.
aiagent show
xema aiagent show <aiagent>
One AI conversation agent, every field: xema aiagent show Receptionist.
<aiagent>: The AI conversation agent, by name.
aiagent add
xema aiagent add [<words>…]
Add a AI conversation agent: xema aiagent add Receptionist aiProvider=OpenAI settings='{"systemPrompt":"Greet and route"}'.
[<words>…]: Its name, then field=value;xema aiagent fieldslists the fields.
aiagent set
xema aiagent set [<words>…]
Change a AI conversation agent: xema aiagent set Receptionist description=Front desk. What is not named is kept.
[<words>…]: The AI conversation agent, by name, then field=value.
aiagent remove
xema aiagent remove <aiagent>
Remove a AI conversation agent.
<aiagent>: The AI conversation agent, by name.--yes: Answer yes to the confirmation up front.
aiagent fields
xema aiagent fields
What can be set on a AI conversation agent.
Reports and Live View
Reports, who they are shared with, and Live View's presets.
reports
xema reports
The reports, their groups and who each is shared with: xema reports.
report show
xema report show <report>
One report's definition, its query among it: xema report show "Agent summary".
<report>: The report, by name.
report add
xema report add [<words>…]
Add a report: xema report add "Calls by hour" reportGroup=Calls template=generic queryText="select ...".
[<words>…]: Its name, then field=value;xema report fieldslists them.
report set
xema report set [<words>…]
Change a report: xema report set "Calls by hour" filterOptions="from-date;to-date".
[<words>…]: The report, by name, then field=value.
report remove
xema report remove <report>
Remove a report.
<report>: The report, by name.--yes: Answer yes to the confirmation up front.
report fields
xema report fields
What can be set on a report.
report run
xema report run <report>
Run a report: xema report run "Agent summary" --from 2026-10-01 --to 2026-10-15, shown as a table, or written to a file with --csv calls.csv. Each filter is the one its definition offers.
<report>: The report, by name.--from <from>: The first day, as a date.--to <to>: The last day, as a date.--agent <agent>: Only this agent, by username.--phone <phone>: Only this phone.--ani <ani>: Only calls from this number.--dni <dni>: Only calls to this number.--csv <csv>: Write the rows to this file as CSV rather than show them.
report grant
xema report grant <report> <scope> <who>
Share a report with a user or a role: xema report grant "Agent summary" role Supervisor.
<report>: The report, by name.<scope>:userorrole.<who>: The username, or the role's name.
report revoke
xema report revoke <report> <scope> <who>
Stop sharing a report with a user or a role: xema report revoke "Agent summary" user asha.
<report>: The report, by name.<scope>:userorrole.<who>: The username, or the role's name.
presets
xema presets
Each subject's default range, and the ranges there are: xema presets.
preset set
xema preset set <subject> <preset>
Set the range a subject opens on: xema preset set queues Today.
<subject>: The subject, asxema presetsnames it.<preset>: The range, asxema presetsnames them.