Team OS manual verification

Use this page to test Team OS end to end.

Use this page to test Team OS end to end.

It covers the main user stories: server health, login, team membership, client grants, skill grants, memory import, search, file sync, revoke behavior, and Command Centre state.

1. Prepare a local test store

Run from the Team OS source repo:

cd "C:\Users\gmsal\Code Projects\AgenticOS-team-os-solomon\command-centre"
$env:AGENTIC_OS_DIR="$env:TEMP\aios-team-manual"
$env:MEMORY_STORE_BACKEND="pglite"
$env:MEMORY_EMBEDDER="hash"

Create a team and owner:

npm run team:create -- --slug demo --name "Demo Team" --owner-email owner@example.test --owner-name "Owner" --owner-password "owner-pass-123"

Invite and join a member:

npm run team:invite -- --team demo --email member@example.test --by owner@example.test
npm run team:join -- --team demo --email member@example.test --token <invite-token> --password "member-pass-123"
npm run team:members -- --team demo

Create a client and grants:

npm run team:client -- create --team demo --slug acme --name "Acme" --by owner@example.test
npm run team:client -- grant --team demo --client acme --user member@example.test --access read --by owner@example.test
npm run team:skill -- grant --team demo --skill mkt-copywriting --user member@example.test --permission skill.use --by owner@example.test

2. Start the API

In the same terminal:

$env:MEMORY_API_TOKEN="owner-token"
$env:MEMORY_API_PORT="8787"
$env:MEMORY_API_TEAM_SLUG="demo"
$env:MEMORY_API_USER_EMAIL="owner@example.test"
npm run memory:api

Leave this terminal running.

Expected server log:

backend: pglite
listening on :8787

For hosted deployment, the health response should show backend: postgres.

3. Log in as owner

Open a second terminal:

cd "C:\Users\gmsal\Code Projects\AgenticOS-team-os-solomon\command-centre"
$env:AGENTIC_OS_TEAM_CONFIG_DIR="$env:TEMP\aios-owner-client"
npm run team -- login --api-url http://127.0.0.1:8787 --email owner@example.test --password "owner-pass-123"
npm run team -- whoami
npm run team -- clients

Expected result:

  • whoami shows owner@example.test.
  • The role is owner.
  • clients shows only clients granted to the owner.

Owners can publish shared memory because they are team admins.

4. Import and search team memory

Import a proof phrase:

$proof="$env:TEMP\team-proof.txt"
Set-Content $proof "Team OS proof phrase: aubergine-927"
npm run team -- memory import --file $proof --visibility team --title "Team Proof"
npm run team -- memory imports --limit 5

Expected result:

  • the import status is indexed;
  • at least one chunk is inserted.

Search through the API:

$saved = Get-Content "$env:AGENTIC_OS_TEAM_CONFIG_DIR\team-context.json" | ConvertFrom-Json
$body = @{
  query = "aubergine-927"
  topK = 5
  scope = @{
    teamId = "fake-client-team"
    clientId = $null
    userId = $null
    include = @("team")
  }
  storeQueryText = $false
} | ConvertTo-Json -Depth 6

Invoke-RestMethod `
  -Uri "http://127.0.0.1:8787/v1/memory/search" `
  -Method Post `
  -Headers @{ Authorization = "Bearer $($saved.token)" } `
  -ContentType "application/json" `
  -Body $body

Expected result: the search returns aubergine-927. This also proves the server does not trust the fake teamId sent by the client.

5. Test member restrictions

Sign in as the member:

$env:AGENTIC_OS_TEAM_CONFIG_DIR="$env:TEMP\aios-member-client"
npm run team -- login --api-url http://127.0.0.1:8787 --email member@example.test --password "member-pass-123"
npm run team -- whoami
npm run team -- clients

Expected result:

  • whoami shows member@example.test;
  • clients shows acme with read;
  • the member can search team memory;
  • the member cannot publish shared imports;
  • the member cannot write client memory with only read access.

6. Test revoke behavior

Stop the API with Ctrl+C. Then revoke the client grant:

$env:AGENTIC_OS_DIR="$env:TEMP\aios-team-manual"
npm run team:client -- revoke --team demo --client acme --user member@example.test --by owner@example.test
npm run team:client -- grants --team demo

Restart the API with the same environment from step 2.

Then run:

npm run team -- clients
npm run team -- sync manifest --client acme

Expected result: acme is no longer available to the member.

7. Test file sync

Grant write access before this step:

npm run team:client -- grant --team demo --client acme --user member@example.test --access write --by owner@example.test

Create a local client file:

$local="$env:TEMP\team-os-local"
New-Item -ItemType Directory -Force "$local\clients\acme\context" | Out-Null
Set-Content "$local\clients\acme\context\notes.md" "Acme sync proof"

Push and inspect the manifest:

npm run team -- sync push --client acme --src $local
npm run team -- sync manifest --client acme

Pull into another folder:

$pull="$env:TEMP\team-os-pull"
npm run team -- sync pull --client acme --dest $pull
Get-ChildItem -Recurse $pull

Expected result:

  • only granted client files appear;
  • pulled files live under clients/acme;
  • excluded files do not appear;
  • .agentic-os/team-sync-state.json is created.

8. Check Command Centre

Start Command Centre with the same config directory:

$env:AGENTIC_OS_TEAM_CONFIG_DIR="$env:TEMP\aios-member-client"
npm run dev

Open the local URL shown by Next.js.

Check:

  • the top-right Team control shows connected state after login;
  • the Team tab shows server data;
  • the clients list shows only backend-granted clients;
  • admin controls are visible only to owners and admins;
  • sign-out clears the shared terminal and UI login state.

9. Run automated checks

Run:

npm run test:identity
npm run test:memory
npm run build

The manual flow is ready when all checks pass and the expected results above match the local run.

Next

Continue with Team OS troubleshooting.

On this page