Register to access your software and manage your Timebase licenses.
imebase runs on Windows or Linux/Docker, on your own infrastructure.
Download Windows Installer
Pull the Docker Image
Return to Timebase Portal and follow the instructions to link your running Timebase Pulse instance and register your Forever Free license.
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 Runbook tells your agent when to pause for credentials, account setup, and steps requiring administrator access.
Help me deploy Timebase on Docker. Read Timebase's documentation for Docker Setup at https://flow-software.github.io/Timebase-Docs/#40-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.
Copy and paste the two Bash commands below into your terminal, in order.
The first checks Docker Hub for the newest Timebase 2.0 Beta release available across all seven components and saves that version in a .env file.
Run this version check each time you deploy.
If you prefer to pull the images manually, you may do so at https://hub.docker.com/u/timebase but ensure that you are pulling the lastest RC (tagged 2.0-rc##) for each of the 7 Timebase components; Atlas, Bridge, Collector, Connect (formally Connector), Explorer, Historian, and Pulse.
cd ./timebase && python3 - <<'PY'
import json, re, urllib.request
REPOS = ["pulse", "historian", "explorer", "atlas", "connector", "bridge", "collector"]
rc = re.compile(r"^2\.0-rc(\d+)$")def rc_tags(repo):
url = "https://hub.docker.com/v2/repositories/timebase/%s/tags/?page_size=100" % repo
with urllib.request.urlopen(url, timeout=20) as f:
return {t["name"] for t in json.load(f).get("results", []) if rc.match(t["name"])}found = {r: rc_tags(r) for r in REPOS}
for r in REPOS:
if not found[r]:
raise SystemExit("no 2.0-rc tag found for timebase/%s - stop and report this" % r)
common = set.intersection(*found.values())
if not common:
raise SystemExit("no 2.0-rc tag is common to all seven images - stop and report this")
newest = max(common, key=lambda t: int(rc.match(t).group(1)))
open(".env", "w").write("TIMEBASE_TAG=%s\n" % newest)
print("newest release candidate common to all seven:", newest)
for r in REPOS:
behind = sorted(found[r], key=lambda t: int(rc.match(t).group(1)))[-1]
if behind != newest:
print(" note: timebase/%s newest is %s" % (r, behind))
PY
This second command creates your Docker Compose YAML file, using the version result from the previous command to keep every component on the same release.
cd ./timebase && python3 - <<'PY'
import json, re, urllib.request
REPOS = ["pulse", "historian", "explorer", "atlas", "connector", "bridge", "collector"]
rc = re.compile(r"^2\.0-rc(\d+)$")def rc_tags(repo):
url = "https://hub.docker.com/v2/repositories/timebase/%s/tags/?page_size=100" % repo
with urllib.request.urlopen(url, timeout=20) as f:
return {t["name"] for t in json.load(f).get("results", []) if rc.match(t["name"])}found = {r: rc_tags(r) for r in REPOS}
for r in REPOS:
if not found[r]:
raise SystemExit("no 2.0-rc tag found for timebase/%s - stop and report this" % r)
common = set.intersection(*found.values())
if not common:
raise SystemExit("no 2.0-rc tag is common to all seven images - stop and report this")
newest = max(common, key=lambda t: int(rc.match(t).group(1)))
open(".env", "w").write("TIMEBASE_TAG=%s\n" % newest)
print("newest release candidate common to all seven:", newest)
for r in REPOS:
behind = sorted(found[r], key=lambda t: int(rc.match(t).group(1)))[-1]
if behind != newest:
print(" note: timebase/%s newest is %s" % (r, behind))
PY