Timebase runs on Windows or Linux/Docker, on your own infrastructure.
Download Windows Installer
Pull the Docker Images
Register to create/access your organization and manage your Timebase licenses.
While in Timebase Portal follow the instructions to link your running Timebase Pulse instance and register your Forever Free licenses.
Before setting up your Timebase instance, it’s important to ensure your system meets the necessary requirements for optimal performance.
Point your AI agent at the Docker Setup Guide and Agent Runbook below.
With access to your Docker environment, your AI agent can check prerequisites, pull the latest Timebase images, start the platform, and work through security configuration, verifying each stage as it goes.
You stay involved where it matters. The Agentic Runbook tells your agent when to pause for credentials, account setup, and steps requiring administrator access.
If you prefer to pull the images manually, you may do so at https://hub.docker.com/u/timebase, but ensure you pull the same tag for all seven Timebase components: Atlas, Bridge, Collector, Connect, Explorer, Historian and Pulse, do not use the 'latest' tag (on some components it points at the 1.3 release, and on others it does not exist at all).
Help me deploy Timebase on Docker. Read Timebase's documentation for Docker Setup at https://docs.timebase.com/#30-timebase-2-0-docker-agent-runbook then follow and execute the documentation. Check my environment, select the current release supported across all components, and verify each phase. Pause wherever the Runbook requires my input.
With Docker installed and running, open Git Bash on Windows or Terminal on Linux or Mac. This command requires Bash and Docker Compose.
Choose the folder where you want to keep your Timebase configuration, then copy the entire code block below, paste it into your terminal, and press Enter.
The command creates a timebase subfolder and writes a Docker Compose configuration inside it. It then checks Docker Hub for the highest-numbered 2.0-gc beta tag listed for Timebase Pulse and saves that version in a .env file. Both files are overwritten if they already exist.
Before starting, it prints the selected version. Docker Compose then attempts to pull that same version for all seven Timebase components and start them in the background. You can close the terminal afterward; the containers continue running while Docker is running.
If you prefer to pull the images manually, you may do so at https://hub.docker.com/u/timebase, but ensure you pull the same tag for all seven Timebase components: Atlas, Bridge, Collector, Connect, Explorer, Historian and Pulse, do not use the 'latest' tag (on some components it points at the 1.3 release, and on others it does not exist at all).
mkdir -p timebase && cd timebase && cat > docker-compose.yml <<'YAML'
name: timebaseservices:
pulse:
image: timebase/pulse:${TIMEBASE_TAG:?not set - rerun the command from the beginning}
deploy:
resources:
limits:
cpus: "1"
memory: 2048m
hostname: pulse
ports:
- "4541:4541"
- "4542:4542"
restart: unless-stopped
volumes:
- pulse:/pulse
environment:
- Certificates=/pulse/certificates
- Settings=/pulse/settings
- Config=/pulse/config
- Data=/pulse/data
- Logs=/pulse/logs
- Cert__Names=pulse
- Auth__PublicAddress=https://localhost:4542 historian:
image: timebase/historian:${TIMEBASE_TAG}
deploy:
resources:
limits:
cpus: "1"
memory: 4096m
hostname: historian
ports:
- "4511:4511"
- "4512:4512"
restart: unless-stopped
stop_grace_period: 60s
volumes:
- historian:/historian
environment:
- Certificates=/historian/certificates
- Settings=/historian/settings
- Pulse__Cert__Names=historian
- Data=/historian/data
- Logs=/historian/logs explorer:
image: timebase/explorer:${TIMEBASE_TAG}
deploy:
resources:
limits:
cpus: "1"
memory: 2048m
hostname: explorer
ports:
- "4531:4531"
- "4532:4532"
restart: unless-stopped
volumes:
- explorer:/explorer
environment:
- Certificates=/explorer/certificates
- Settings=/explorer/settings
- Pulse__Cert__Names=explorer
- Config=/explorer/config
- Data=/explorer/data
- Logs=/explorer/logs atlas:
image: timebase/atlas:${TIMEBASE_TAG}
deploy:
resources:
limits:
cpus: "1"
memory: 4096m
hostname: atlas
ports:
- "4551:4551"
- "4552:4552"
restart: unless-stopped
volumes:
- atlas:/atlas
environment:
- Certificates=/atlas/certificates
- Settings=/atlas/settings
- Pulse__Cert__Names=atlas
- Config=/atlas/config
- Logs=/atlas/logs connect:
image: timebase/connect:${TIMEBASE_TAG}
deploy:
resources:
limits:
cpus: "1"
memory: 2048m
hostname: connect
ports:
- "4561:4561"
- "4562:4562"
restart: unless-stopped
volumes:
- connect:/connect
environment:
- Certificates=/connect/certificates
- Settings=/connect/settings
- Pulse__Cert__Names=connect
- Config=/connect/config
- Logs=/connect/logs bridge:
image: timebase/bridge:${TIMEBASE_TAG}
deploy:
resources:
limits:
cpus: "1"
memory: 2048m
hostname: bridge
ports:
- "4571:4571"
- "4572:4572"
restart: unless-stopped
volumes:
- bridge:/bridge
environment:
- Certificates=/bridge/certificates
- Settings=/bridge/settings
- Pulse__Cert__Names=bridge
- Config=/bridge/config
- Logs=/bridge/logs collector:
image: timebase/collector:${TIMEBASE_TAG}
deploy:
resources:
limits:
cpus: "1"
memory: 4096m
hostname: collector
ports:
- "4521:4521"
- "4522:4522"
restart: unless-stopped
volumes:
- collector:/collector
environment:
- Active=false
- Certificates=/collector/certificates
- Settings=/collector/settings
- Pulse__Cert__Names=collector
- Config=/collector/config
- Data=/collector/data
- Logs=/collector/logsvolumes:
pulse:
historian:
explorer:
atlas:
connect:
bridge:
collector:
YAMLGC=$(curl -fsSL "https://hub.docker.com/v2/repositories/timebase/pulse/tags/?page_size=100" | grep -Eo '2\.0-gc[0-9]+' | sed 's/.*gc//' | sort -n | tail -1)
[ -n "$GC" ] || { echo "Could not reach Docker Hub. Set the version manually, for example: echo TIMEBASE_TAG=2.0-gc2 > .env"; exit 1; }
echo "TIMEBASE_TAG=2.0-gc$GC" > .env
echo "Deploying Timebase 2.0-gc$GC"
docker compose up -d --pull always