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 demoCreate 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.test2. 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:apiLeave this terminal running.
Expected server log:
backend: pglite
listening on :8787For 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 -- clientsExpected result:
whoamishowsowner@example.test.- The role is
owner. clientsshows 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 5Expected 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 $bodyExpected 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 -- clientsExpected result:
whoamishowsmember@example.test;clientsshowsacmewithread;- the member can search team memory;
- the member cannot publish shared imports;
- the member cannot write client memory with only
readaccess.
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 demoRestart the API with the same environment from step 2.
Then run:
npm run team -- clients
npm run team -- sync manifest --client acmeExpected 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.testCreate 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 acmePull into another folder:
$pull="$env:TEMP\team-os-pull"
npm run team -- sync pull --client acme --dest $pull
Get-ChildItem -Recurse $pullExpected result:
- only granted client files appear;
- pulled files live under
clients/acme; - excluded files do not appear;
.agentic-os/team-sync-state.jsonis 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 devOpen 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 buildThe manual flow is ready when all checks pass and the expected results above match the local run.
Next
Continue with Team OS troubleshooting.
