Ae System
AE Agent system administration CLI for root and agent administrators. Use when the user asks to manage Agent members, sandboxes and shared tools, company model visibility/defaults/pricing, usage statistics and exports, cost quotas, balance alerts, IM channels, channel routing, WhatsApp Web linking, or Feishu user bindings. Must use ae-cli system commands, discover real IDs before writes, and never attempt to bypass a permission denial.
- Skill ID
- thinkingaiagenticengine/ae-cli/ae-system
- Publisher
- thinkingaiagenticengine
- Repository
- ae-cli
- Installs
- 0
- Files
- 2
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
thinkingaiagenticengine/ae-cli/ae-systemInstalls these files- SKILL.md
- references/channel-management.md
What this skill tells the agent
ae-system
Use the system domain for Agent system administration:
ae-cli system +<command> [options]
ae-cli system <resource> <action> [options]Mandatory Rules
- These commands are only for users whose Agent role is
rootoragent_admin. - The te-agent
/api/admin/**and/api/cli/channel/v1/**endpoints are the final authorization boundaries. A member receives a permission error (HTTP 403). Do not retry login or attempt a different endpoint after a 403. - Run
ae-cli auth login --host <host>before using this domain. System administration requires a valid user CLI-token session; sandbox identity headers are not an authorization substitute. +npm-installis the exception that must also run inside a Linux te-agent sandbox because it packages the installed Linux files. It still requires the logged-in user to berootoragent_admin.- Discover real IDs with a list command before any update or delete. Never guess a user, sandbox, model, quota rule, or channel ID.
- Before every write, run
--dry-run, show the target and effect, and obtain explicit user confirmation. The CLI itself prompts only forhigh-risk-write;--yescan bypass that prompt and is not a security boundary. - Use
--dry-runto inspect method, path, query, and redacted body without executing. - JSON inputs accept inline JSON,
@file, or-for stdin. Prefer@filefor channel credentials and other sensitive values. - Successful output is JSON by default. Use
--format tableonly when a human-readable table is more useful. - After each command, check stderr and
_notice.host_compat. If present, show the version warning and its update commands before the business result. - Do not treat an absent ae-cli command as proof that an HTTP endpoint is unreachable. An Agent with Bash/network access can construct requests directly; server authentication, role checks, company isolation, and resource ownership are the actual controls.
- Do not call
DELETE /api/admin/members?openId=...or/api/internal/sandboxes/**through ad-hoc HTTP. They are intentionally excluded from this Skill because other systems own those integration contracts.
Command Groups
Members
| Command | Risk | Purpose |
|---|---|---|
+list-member-candidates | read | List AE company users that can be added. |
+list-members | read | List Agent members in the current company. |
+add-members | write | Add one or more AE users, optionally binding a quota rule or creating sandboxes. |
+set-member-status | write | Enable or disable a member. |
+set-member-role | write | Change a non-root member between agent_admin and member. |
+remove-member | high-risk-write | Remove a non-root member. |
+get-member-stats | read | Get one member's token usage and recent conversation count. |
Examples:
ae-cli system +list-members --status enabled --page 1 --page-size 20
ae-cli system +add-members \
--members '[{"openId":"ou_x","loginName":"alice","displayName":"Alice"}]' \
--create-sandbox true
ae-cli system +set-member-role --user-id <user-id> --role agent_admin+list-members filters:
--q: login/display name search.--status:all | enabled | disabled.--page,--page-size: page size is 1-100.--all: return all matches.--sort-field periodUsedAmount,--sort-dir asc|desc: central usage sort.
+add-members --members schema:
[
{
"openId": "required",
"loginName": "optional",
"displayName": "optional"
}
]Optional flags are --rule-id and --create-sandbox true|false.
Sandboxes
| Command | Risk | Purpose |
|---|---|---|
+list-sandboxes | read | List company sandboxes. |
+get-sandbox-config | read | Read feature status and create/active seat limits. |
+batch-create-sandboxes | write | Create personal sandboxes for 1-100 users. |
+update-sandbox | write | Update a sandbox description. |
+set-sandbox-enabled | write | Enable or disable a sandbox. |
+start-sandbox | write | Start a sandbox container. |
+stop-sandbox | write | Stop a sandbox container. |
+list-sandbox-users | read | List users bound to a sandbox. |
+bind-sandbox-user | write | Bind a member to a sandbox. |
+unbind-sandbox-user | high-risk-write | Remove a sandbox user binding. |
+remove-sandbox | high-risk-write | Delete a sandbox and its bindings. |
Examples:
ae-cli system +batch-create-sandboxes \
--user-ids '["<user-id-1>","<user-id-2>"]' \
--description "Data team"
ae-cli system +set-sandbox-enabled --id <sandbox-id> --enabled true
ae-cli system +bind-sandbox-user --id <sandbox-id> --user-id <user-id>Use Agent database user IDs from +list-members, not AE openIds, for sandbox commands.
Shared Sandbox Tools
| Command | Risk | Purpose |
|---|---|---|
+upload-sandbox-tool | write | Validate, ZIP, and upload an existing tool directory. |
+npm-install | write | Install one exact npm CLI version in a temporary sandbox directory, generate tool.json, and upload it. |
+list-sandbox-tools | read | List preset and custom tools for the current company. |
+sync-sandbox-tools | write | Synchronize preset tools from the server manifest. |
+get-sandbox-tool-distribution | read | Read the sandboxes currently receiving one tool. |
+set-sandbox-tool-enabled | write | Enable or disable one registered tool. |
+remove-sandbox-tool | high-risk-write | Delete a fully reclaimed tool registration. |
+activate-sandbox-tools | write | Activate selected commands on selected or all running sandboxes. |
+deactivate-sandbox-tools | write | Remove managed command shims from selected or all running sandboxes. |
+refresh-sandbox-tool-status | write | Refresh observed tool state on target sandboxes. |
+list-sandbox-tool-operations | read | List activation/deactivation history. |
Uploaded tools are registered for the current company with enabled=false. Upload does not activate the tool in any running sandbox. Review and enable/activate it through sandbox tool management after upload.
For activate/deactivate/status operations:
ae-cli system +activate-sandbox-tools \
--target-mode selected \
--sandbox-ids '["<sandbox-id>"]' \
--tool-ids '["<tool-id>"]'--target-mode selectedrequires 1-50--sandbox-ids;all-runningforbids them.--tool-idscontains 1-20 real IDs from+list-sandbox-tools.--command-names-by-tool-idoptionally limits an operation to named commands.--expected-tool-snapshots-by-idcarries the version/package/command snapshot returned by the server for optimistic concurrency checks.- JSON maps accept inline JSON,
@file, or stdin. Use dry-run and user confirmation before distribution changes.
Preferred npm Flow
Run this inside the target Linux te-agent sandbox:
ae-cli auth login --host <host>
ae-cli system +npm-install --package eslint@9.32.0For a scoped package or a custom shared-tool identifier:
ae-cli system +npm-install \
--package @scope/example-cli@1.2.3 \
--name example-cliRequirements and behavior:
--packagemust be an exact registry package version. Tags, ranges, URLs, Git sources, npm aliases, and local paths are rejected.- The installed package must expose at least one
package.jsonbinentry. Each bin becomes one tool command. - The default tool name is the unscoped package name. Use
--nameonly when a different valid lowercase tool identifier is required. - npm lifecycle scripts are disabled with
--ignore-scriptsby default. Use--allow-scripts trueonly after reviewing and trusting the package and all transitive dependencies. - The command calls the admin upload-policy endpoint before starting npm. A disabled feature, expired session, or non-admin role fails before installation.
More from thinkingaiagenticengine
Use this skill in a project
Open any RiverX project, search the Skills panel for thinkingaiagenticengine/ae-cli/ae-system, and install it in one click.
