For companies
Install the server
Run the team server with Docker Compose or from the Python package, check that it is healthy, and size the machine.
Both methods run the same server: a web interface at /, the MCP endpoint at /mcp/ and a health check at /healthz, all on one port. Keep that port on 127.0.0.1 and publish it through an HTTPS reverse proxy.
New in 14.6.0
tam setup --mode companycan prepare the server for you (data directory, address, service or Compose, first admin, departments, providers). A server started without an administrator prints a one-time setup code and runs a web setup wizard at/dashboard/. See Setup wizard.
Option A: Docker Compose
From a checkout of the repository, with port 3738 free on the host:
git clone https://github.com/vbcherepanov/total-agent-memory.git
cd total-agent-memory
docker compose -f docker-compose.team.yml build
docker compose -f docker-compose.team.yml up -d
What the profile sets up:
- Container
team-memoryrunstam-team serveinside the container on port 3737, published on the host as127.0.0.1:3738. - Data lives in the Docker volume
tam-team-memory-data(mounted at/team-data), model files intam-team-model-cache. Both survive container rebuilds. - A health check calls
/healthzevery 30 seconds; the container restarts unless stopped. - It does not mount a personal single-user memory volume. Do not point it at an existing personal database; migrating one needs an owner check and a backup first.
Settings go in a .env file next to the compose file:
TAM_TEAM_PORT=3738
TAM_TEAM_PUBLISH_HOST=127.0.0.1
TAM_TEAM_MAX_WORKERS=3
TAM_TEAM_OPERATION_TIMEOUT=120
MEMORY_LLM_ENABLED=false
To run admin commands, use the same image with run --rm:
docker compose -f docker-compose.team.yml run --rm team-memory \
python /app/src/team_memory/cli.py user-add alice 'Alice Moreau'
The next page, Users, teams & tokens, lists every command.
Option B: Python package
On Linux or macOS, in a dedicated virtual environment:
python3 -m venv /opt/tam-team/.venv
/opt/tam-team/.venv/bin/python -m pip install total-agent-memory
/opt/tam-team/.venv/bin/tam-team --root /srv/tam-team user-add alice 'Alice Moreau'
/opt/tam-team/.venv/bin/tam-team --root /srv/tam-team serve --host 127.0.0.1 --port 3738
On Windows PowerShell:
py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip install total-agent-memory
$env:PATH = "$PWD\.venv\Scripts;$env:PATH"
tam-team --root .\team-data serve --host 127.0.0.1 --port 3738
--rootis the data directory. Without it,tam-teamuses$TAM_TEAM_DIRor~/.tam-server. It is created with owner-only permissions.servedefaults to127.0.0.1:3737(orMCP_HTTP_HOST/MCP_HTTP_PORT). The examples use 3738 to match the Docker profile.- From a source checkout, the same CLI is
PYTHONPATH=src python -m team_memory.cli ….
The repository does not ship a systemd unit for the team server. Run serve under whatever process supervisor you use, with the same user that owns the data directory. Only one server can use a data directory at a time; a second one refuses to start.
Check that it is up
curl -s http://127.0.0.1:3738/healthz
# {"status":"ok","name":"total-agent-memory","version":"14.8.0","release_date":"…"}
The health response does not reveal paths or users. Then open http://127.0.0.1:3738/ in a browser on the server (or through an SSH tunnel) and sign in with a token’s contents.
LLM features on the server
Search and save work without any LLM. If you enable LLM-backed features, configure the provider on the server; it applies to all users’ content.
MEMORY_LLM_ENABLED=true
MEMORY_LLM_PROVIDER=ollama
MEMORY_LLM_MODEL=qwen2.5-coder:7b
OLLAMA_URL=http://host.docker.internal:11434
The Docker profile maps host.docker.internal to the host so a model server on the Docker host is reachable (override with TAM_TEAM_HOST_GATEWAY). For openai-compatible, also set MEMORY_LLM_API_BASE and, if needed, MEMORY_LLM_API_KEY. See Configuration.
Sizing
- Each scope that is in use gets its own worker process with the embedding model loaded. By default three stay warm (
TAM_TEAM_MAX_WORKERS=3): typically one personal, one team and the shared scope. - Plan at least 4 GiB of RAM for three warm workers and measure on your own data. On a Linux ARM64 test machine, three workers used about 2 GiB of resident memory together, two about 1.3 GiB, before the gateway, database cache and OS.
- On a small machine set
TAM_TEAM_MAX_WORKERS=1or2. Fewer workers means more cold loads (and CPU) when people switch scopes; results are the same. - Operations run one at a time per worker. The server accepts up to 32 requests in flight and answers
429 Server busybeyond that.