Skip to main content
Team vaults give every member of your team — and every agent they use — access to the same shared memory and knowledge. Capture a decision in one session; any team member’s agent recalls it in the next.
Personal and team vaults are fully independent. Your personal memories stay yours. Team memories belong to the vault — any member with read access can surface them, regardless of which agent or session they’re using.

Setup

You need:
  1. A team created at app.xysq.aiTeams
  2. Your XYSQ_TEAM_ID (visible in team settings)
  3. Your personal XYSQ_API_KEY — team vaults use personal keys, not team-specific tokens
XYSQ_API_KEY=xysq_...
XYSQ_TEAM_ID=...

Using a team vault

Call client.team(team_id) to get a team-scoped view. It exposes the same .memory and .knowledge interfaces as the personal client — all operations are routed to the shared vault.
import os
from dotenv import load_dotenv
from xysq import Xysq

load_dotenv()

with Xysq() as client:
    team = client.team(os.environ["XYSQ_TEAM_ID"])

    # Capture to the team vault
    team.memory.capture(
        content="API versioning follows semver. Breaking changes require an RFC.",
        context="Engineering standards alignment — 2026-04-15",
        tags=["api", "standards"],
        significance="high",
    )

    # Surface team context
    memories = team.memory.surface("API versioning policy")
    for m in memories:
        print(m.text)

    # Synthesize from team knowledge
    result = team.memory.synthesize("What are our engineering standards?")
    print(result.answer)

Team knowledge base

Team knowledge sources work identically to personal ones — just scoped to the team vault.
team.knowledge.add(
    type="quote",
    content="Sprint cadence: 2 weeks. Retros every other Friday at 3pm.",
    title="Team Process — Sprint Cadence",
    confidence="high",
)

# List team sources
sources = team.knowledge.list(limit=20)

Full example: two agents sharing a vault

import os
import time
from dotenv import load_dotenv
from xysq import Xysq

load_dotenv()

team_id = os.environ["XYSQ_TEAM_ID"]

with Xysq() as client:
    team = client.team(team_id)

    # Agent 1: capture team decisions
    team.memory.capture(
        content="Team decided to use PostgreSQL for the main database",
        tags=["architecture", "database"],
        significance="high",
    )
    team.memory.capture(
        content="All new services must expose /healthz and /readyz endpoints",
        tags=["api", "standards"],
        significance="high",
    )

    time.sleep(2)  # allow indexing

    # Agent 2: surface and synthesize
    memories = team.memory.surface("architecture and database decisions")
    for m in memories:
        print(m.text)

    synthesis = team.memory.synthesize(
        "What are our team's engineering standards and architecture decisions?"
    )
    print(synthesis.answer)
    print(f"Confidence: {synthesis.confidence}")

Access control

Team access is controlled by role. Your personal API key is used to authenticate — your role in the team determines what you can do:
RoleCan readCan writeCan deleteCan manage members
ro (read-only)YesNoNoNo
rw (read/write)YesYesNoNo
adminYesYesYesYes
ownerYesYesYesYes + delete team
Manage roles and membership at app.xysq.ai or see the Teams documentation.

Teams feature overview

Set up teams, manage roles, and connect agents to your team vault

Memory operations

Full reference for capture, surface, synthesize, and more