Skip to content
Docs menu

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 company can 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-memory runs tam-team serve inside the container on port 3737, published on the host as 127.0.0.1:3738.
  • Data lives in the Docker volume tam-team-memory-data (mounted at /team-data), model files in tam-team-model-cache. Both survive container rebuilds.
  • A health check calls /healthz every 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
  • --root is the data directory. Without it, tam-team uses $TAM_TEAM_DIR or ~/.tam-server. It is created with owner-only permissions.
  • serve defaults to 127.0.0.1:3737 (or MCP_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=1 or 2. 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 busy beyond that.

Found a mistake? Open an issue on GitHub.

Search