observal team
Create and govern teamspaces, members, visibility reviews, join requests, and private-team invitations.
Every leaf command supports --output table|json. JSON success output contains no Rich text or prompts. JSON failures leave stdout empty and write one categorized error object to stderr.
Commands
list
List the signed-in user's teamspaces
show
Show a teamspace and its members
create
Create a teamspace
claim-personal
Claim or return the caller's personal teamspace
delete
Permanently delete a teamspace
leave
Leave a teamspace
visibility set
Change visibility or request public review
visibility list-requests
List pending public visibility requests
visibility approve
Approve pending public visibility
visibility reject
Reject pending public visibility
request join
Request membership
request list
List a teamspace's join requests
request mine
View the caller's request history and status
request withdraw
Withdraw the caller's pending request
request approve
Approve a pending request
request reject
Reject a pending request
members list
List members
members add
Add a member or update a role
members remove
Remove a member
invite create
Create a private-team invitation
invite list
List invitations
invite revoke
Revoke an invitation
invite preview
Preview an invitation token
invite request
Use a token to request access
invite delete
Delete an unused invitation
invite requests
List requests associated with an invitation
Team references may be UUIDs, handles, or @handle. Unknown teamspaces use not-found exit code 5.
List, show, and claim
list returns the standard items, total, page, and page_size envelope. The default includes teamspaces where the user is a member. --all requests all teamspaces visible to the caller. Empty results use items: [] and page_size: 0.
show returns a combined result:
claim-personal is idempotent. It creates or returns the caller's one private personal teamspace and returns the direct Team object.
Create and visibility
Visibility is public or private. Creating a public teamspace or setting a private teamspace to public submits a review request. Until approval, the response reports visibility: "private" and visibility_request_status: "pending".
Create and visibility JSON return the direct Team object.
Reviewers and deployment admins manage pending public visibility requests:
The list returns the standard list envelope. Approve and reject return the direct Team object. Approval makes the teamspace public and revokes its private invitation links. A rejection reason is optional and accepts up to 500 characters.
Delete and leave
Delete is permanent. Leave removes only the caller's membership. The last owner cannot leave. Human mode prompts unless --yes is supplied. JSON mode never prompts and requires --yes.
Both endpoints currently return an empty JSON object on success.
Join requests
Request access to a visible teamspace:
The message is optional and limited to 500 characters. JSON returns the created join request.
View your own status or withdraw the sole pending request:
request mine returns the standard list envelope with requests ordered newest first. request withdraw finds the caller's pending request and marks it cancelled. Human mode prompts unless --yes is supplied. JSON mode requires --yes and returns an empty object.
Owners and deployment admins can list and decide requests:
Valid status filters are pending, approved, rejected, and cancelled. Approve and reject select a pending request by exact email or case-insensitive username. A missing pending request uses not-found exit code 5.
The list returns the standard list envelope. Join, approve, and reject return the direct join-request object.
Members
Roles are member, reviewer, and owner. Adding an existing member updates the role. The last owner cannot be removed.
Member list returns the standard list envelope. Add returns the saved member. Remove currently returns an empty object.
Human remove prompts unless --yes is supplied. JSON remove requires --yes.
Private-team invitations
Create and list invitations:
--expires-days accepts 1 through 365. --max-uses accepts 1 through 10,000 or may be omitted for no use limit. Invite names accept 1 through 100 characters.
Create returns the direct invitation object, including the one-time token and URL. Treat both as secrets. List returns the standard list envelope. States include active, expired, exhausted, and revoked.
A recipient can preview the token, then submit an owner-reviewed access request:
invite preview does not mutate membership or request state. invite request does not grant membership. It creates a pending join request that an owner must approve. Neither command prints the token in human output or errors.
Owners and admins can inspect invitation usage:
The command returns the standard list envelope for requests associated with that invitation. Empty results use items: [].
Revoke an invitation while retaining its audit history:
Delete an invitation only when it has no uses or request history:
The invite ID must be a UUID. Human mode prompts unless --yes is supplied. JSON mode requires --yes. Revoke returns the invitation object. Delete returns an empty object.
Exit codes
3
Authentication required or failed
4
Membership, owner, reviewer, or admin permission denied
5
Teamspace, invitation, member, or request not found
6
Handle, membership, owner, visibility, invitation, or request state conflict
7
Invalid visibility, role, status, UUID, text length, token, or missing JSON confirmation
8
Rate limit reached
9
Server unavailable
10
CLI and server version mismatch
Related
observal inbox: view request and visibility decisionsobserval agent: publish Agents to a teamspaceobserval registry: publish components to a teamspace
Last updated
Was this helpful?