Deployment Guide
This guide covers the two supported deployment styles:
- Container platform - Docker images loaded from a platform tarball and run with Docker Compose.
- Bare-metal platform - split release packages managed by Platform Manager.
For a shorter single-host walkthrough, see Quick Start.
Minimum Requirements
| Area | Requirement |
|---|---|
| Processor | 32 cores |
| Disk | 100 GB free space |
| RAM | 128 GB |
| Shared Memory | Writable /dev/shm |
| Network | Multicast between servers |
| DNS | Ingress hostname resolves from clients |
| Firewall | Ingress ports allowed |
| Shell | Bash access |
| Java | Java 21+ |
| Node.js | Node.js 20.9.0+ |
| Licence | KeySquare licence key available |
| Docker | 25.0+ |
| Docker Compose | 2.24.0+ |
| tar | Needed for retrieving package contents |
| OpenSSL | Needed for Platform Secrets |
Installing the Platform
1. Extract Installation Files
- Container
- Bare-metal
The installing user must be able to run Docker and Docker Compose:
docker --version
docker compose version
Extract the archive file. This creates a keysquare-docker-(version)/ directory in which setup files will be placed.
tar xvzf keysquare-docker-(version).tar.gz
Extract the archive files. This creates a keysquare-baseline-(version)/ directory in which setup files will be placed.
tar xvzf keysquare-baseline-(version).tar.gz
tar xvzf keysquare-core-platform-(version).tar.gz
You may have been provided with a keysquare-runtime-(version).tar.gz, leave the archive beside the extracted
keysquare-baseline-(version)/ directory in the same staging directory. Do not extract it manually. Setup detects the
staged runtime archive and installs it into KS_HOME. For bare-metal hosts that skip keysquare-runtime, set JAVA_HOME
and NODE_HOME in the host config, or make sure java, jar, and node are available on PATH.
Although instructions mentions keysquare-core-platform-(version).tar.gz, all other KeySquare apps not part of core platform are available via individual keysquare-app-*-(version).tar.gz packages.
2. Run Setup
- Container
- Bare-metal
Run setup from the extracted keysquare-docker-(version)/ directory.
cd keysquare-docker-(version)
./setup.sh
Run setup from the extracted keysquare-baseline-(version)/ directory.
cd keysquare-baseline-(version)
./setup.sh
2.1 Configuring Setup Profile
During setup, you will be prompted for three core values used to run the KeySquare platform:
KS_HOME: The directory where KeySquare is installed. This is used to locate platform files, configuration, and executables.KS_HOSTNAME: The hostname used to resolve host-specific configuration fromKS_HOME/conf/<host-name>.properties.KS_HOST_INSTANCE: The instance identifier for applications running on this host. This is mainly used in multi-host deployments where the same component runs on multiple hosts, such asmonitor-1withKS_HOST_INSTANCE=1andmonitor-2withKS_HOST_INSTANCE=2.
Once prompted these values will be stored at $HOME/.config/keysquare/keysquare.properties. These can be updated manually
at a later date.
2.2 Installing/Updating Apps
- Container
- Bare-metal
For container deployments, the Docker package is installed as one platform a versioned docker bundle. The setup script
installs the Compose files under apps/docker/(version), updates apps/docker/latest, and loads the packaged Docker
images fromkeysquare.tar.gz from the setup directory.
keysquare/
├── apps/
│ └── docker/
│ ├── (version)/
│ │ └── docker-compose-platform.yaml
│ └── latest -> (version)
└── bin/
├── docker-env.sh
└── ks-platform.sh
The Compose package is installed or updated as one bundle. Image loading defaults to all available images; declining that prompt offers an advanced path for choosing images individually. The Compose bundle defines the services included in the release even when an image is not loaded locally.
For an update, extract the new Docker release and run setup again:
tar xvzf keysquare-docker-(version).tar.gz
cd keysquare-docker-(version)
./setup.sh
During an update, setup shows the installed and available Docker package and image versions before prompting. It prompts separately for the Docker Compose package update and the packaged Docker image load:
Existing KeySquare installation found: $HOME/keysquare
Continue to refresh package-managed platform files and review package updates.
Stop to leave this installation untouched before any package files are copied.
Continue with existing KeySquare installation at $HOME/keysquare [Y/n]:
=== KEYSQUARE APP SETUP ===
[done] Loading available Docker images (5s)
Docker Compose package:
PACKAGE INSTALLED BUNDLE
---------------------------- ---------------- ----------------
docker 1.1.0 1.1.1
Docker image archive:
IMAGE INSTALLED AVAILABLE VERSION STATUS
-------------------------------- ---------------- ---------------- --------------
key-ui 1.1.0 1.1.1 update (yes)
web-data-server not loaded 1.1.1 load (yes)
Update Docker Compose package from 1.1.0 to 1.1.1 [Y/n]:
Load all available Docker images [Y/n]:
If the Docker platform is running, setup asks to stop it before copying Compose files or loading images. It streams the
Docker Compose stop output, performs the update, and offers to start the platform again. Set
KS_SETUP_RESTART_PLATFORM=yes for the same stop-and-restart flow in non-interactive setup.
For bare-metal deployments, the setup script discovers staged app packages and offers to install them into KS_HOME/apps.
The core platform bundle stages the standard platform apps. Optional application packages can also be staged beside the
extracted keysquare-baseline-(version)/ directory before running setup.
keysquare-baseline-(version)/
├── apps/
│ └── platform-manager/
│ └── latest -> (version)
└── setup.sh
keysquare-app-monitor-(version).tar.gz
keysquare-app-quote-engine-(version).tar.gz
keysquare-app-price-engine-(version).tar.gz
On first install, setup shows the bundled Platform Manager packages and staged application packages before installing anything. A 1.1.3 full platform bundle shows:
=== KEYSQUARE APP SETUP ===
[done] Loading available app packages (2s)
Core platform package:
PACKAGE INSTALLED BUNDLE
---------------------------- ---------------- ----------------
platform-manager not installed 1.1.3
platform-manager-tui not installed 1.1.3
Package-managed file handling:
- conf defaults are added only when missing; existing config files are kept.
- var state directories are created when missing; existing state files are not copied over.
Staged app packages:
APP INSTALLED AVAILABLE VERSION STATUS
---------------------------- ---------------- ---------------- --------------
aeron-media-driver not installed 1.1.3 install (no)
key-access not installed 1.1.3 install (no)
keysquare-proxy not installed 1.1.3 install (no)
key-ui not installed 1.1.3 install (no)
ks-grafana not installed 1.1.3 install (no)
ks-ingress-controller not installed 1.1.3 install (no)
ks-quest not installed 1.1.3 install (no)
monitor not installed 1.1.3 install (no)
relay-cache not installed 1.1.3 install (no)
relay-live not installed 1.1.3 install (no)
sequencer not installed 1.1.3 install (no)
web-data-server not installed 1.1.3 install (no)
[done] Updating Platform Manager 1.1.3 (0s)
[done] Updating Platform Manager TUI 1.1.3 (0s)
Available app packages:
- aeron-media-driver 1.1.3
- key-access 1.1.3
- keysquare-proxy 1.1.3
- key-ui 1.1.3
- ks-grafana 1.1.3
- ks-ingress-controller 1.1.3
- ks-quest 1.1.3
- monitor 1.1.3
- relay-cache 1.1.3
- relay-live 1.1.3
- sequencer 1.1.3
- web-data-server 1.1.3
Install all available app packages [Y/n]:
Answering no offers the advanced Choose app packages individually [y/N] path.
Installed apps are placed under KS_HOME/apps/<app>/(version), and the latest symlink is updated to point at the latest
installed version.
$HOME/keysquare/apps/
└── monitor/
├── (version)/
│ ├── conf/
│ ├── monitor.sh
│ └── monitor.jar
└── latest -> (version)
The setup script also registers the selected bare-metal apps with Platform Manager for this host. Host-owned process
definitions live under the KS_HOME/conf/process folder.
For an update, stage the new app packages similar to the prior section and run setup again.
During an update, setup shows the installed and available package versions before prompting. Staged apps that are not
already installed are offered later as newly available packages, defaulting to no:
Existing KeySquare installation found: $HOME/keysquare
Continue to refresh package-managed platform files and review package updates.
Stop to leave this installation untouched before any package files are copied.
Continue with existing KeySquare installation at $HOME/keysquare [Y/n]:
=== KEYSQUARE APP SETUP ===
[done] Loading available app packages (2s)
Core platform package:
PACKAGE INSTALLED BUNDLE
---------------------------- ---------------- ----------------
platform-manager 1.1.0 1.1.1
platform-manager-tui 1.1.0 1.1.1
Package-managed file handling:
- conf defaults are added only when missing; existing config files are kept.
- var state directories are created when missing; existing state files are not copied over.
Staged app packages:
APP INSTALLED AVAILABLE VERSION STATUS
---------------------------- ---------------- ---------------- --------------
monitor 1.1.0 1.1.1 update (yes)
quote-engine not installed 1.1.1 install (no)
Update Platform Manager package from 1.1.0 to 1.1.1 [Y/n]:
[done] Updating Platform Manager 1.1.1 (0s)
[done] Updating Platform Manager TUI 1.1.1 (0s)
App packages available but not installed:
- quote-engine 1.1.1
Install newly available app packages [y/N]:
Choose new app packages individually [y/N]:
Installed app packages with available updates:
- monitor 1.1.0 -> 1.1.1
Update already installed app packages to 1.1.1 [Y/n]:
If Platform Manager is running, setup asks to stop the platform before copying package-managed files. It performs the
update after the stop completes and offers to start the platform again. Set KS_SETUP_RESTART_PLATFORM=yes for the same
stop-and-restart flow in non-interactive setup.
2.3 Configuring Platform Network Addresses
Every install/update presents the current sequencer input, sequencer output, and key access discovery addresses. Press Enter to keep an address, or enter a replacement.
The final octet of the IPv4 addresses provided as input must be an odd number. If not you will be warned and re-prompted.
Example:
Sequencer input address [224.0.0.1]: 224.0.0.2
Warning: Enter an IPv4 address with an odd-numbered final octet.
=== PLATFORM NETWORK ADDRESSES ===
Review the shared addresses used by platform services. Press Enter to keep each current value.
Important: Each IP address must end with an odd-numbered final octet.
Sequencer input address
IP address applications use to send messages for sequencing.
Sequencer input address [224.0.0.1]:
-> 224.0.0.1
Kept sequencer input address.
----------------------------------------
Sequencer output address
IP address applications use to receive sequenced messages.
Sequencer output address [224.0.0.3]:
-> 224.0.0.3
Kept sequencer output address.
----------------------------------------
Key access discovery address
IP address key access servers use to discover cluster peers.
Key access discovery address [224.0.0.5]:
-> 224.0.0.5
Kept key access discovery address.
----------------------------------------
2.4 Configuring Initial Platform Secrets
On a fresh install, setup requires an Admin UI password, this value has no default and is mandatory. The setup asks for
the password twice, if entered incorrectly or blank you'll be re-prompt. Automation can provide it through
KS_WEB_DATA_SERVER_ADMIN_PASSWORD. Setup then uses OpenSSL to generate every other platform secret automatically and
writes all values to KS_HOME/conf/secrets.properties.
=== OVERRIDE DEFAULT PLATFORM SECRETS ===
Fresh KeySquare install detected. An Admin UI password is required.
All other platform secrets will be generated automatically.
Admin UI password
Password for signing in to the KeySquare Admin UI.
Enter Admin UI password:
Re-enter Admin UI password:
Admin UI password saved.
----------------------------------------
Generating key access service key... done
Generating key access cluster token... done
Generating Grafana admin password... done
Generating QuestDB HTTP password... done
Generating QuestDB Postgres password... done
Important: If another platform will use this key access cluster,
KS_KEY_ACCESS_CLUSTER_TOKEN must have the same value on every platform.
Platform secrets are stored in:
$HOME/keysquare/conf/secrets.properties
Edit this file to update them later.
The generated file contains these shared properties:
KS_KEY_ACCESS_SERVICE_KEY=<shared-service-key>
KS_KEY_ACCESS_CLUSTER_TOKEN=<cluster-token>
KS_WEB_DATA_SERVER_ADMIN_PASSWORD=<admin-password>
KS_GRAFANA_ADMIN_PASSWORD=<grafana-password>
KS_QUESTDB_HTTP_PASSWORD=<questdb-http-password>
KS_QUESTDB_PG_PASSWORD=<questdb-postgres-password>
Existing installations keep their current secrets; setup does not regenerate them during a package update.
Platforms that share a key access cluster must use the same KS_KEY_ACCESS_CLUSTER_TOKEN.
3. Review the Install
- Container
- Bare-metal
keysquare/
├── apps/
│ └── docker/
│ └── latest -> (version) # Symlink to the active installed version
| └── docker-compose-platform.yaml # Docker compose file for the KeySquare platform
├── bin/ # Used to hold common scripts
| ├── docker-env.sh # Used by compose for paths, env files, registry, version, and project name.
| └── ks-platform.sh # Main script for stopping/starting the platform
├── conf/ # Configurations
│ ├── net.properties
| ├── db.properties
| ├── .
| ├── .
| ├── .
│ └── secrets.properties
└── var/
└── logs/ # GC logs; Docker app logs go to stdout/stderr.
keysquare/
├── apps/
│ └── monitor/
│ └── latest -> (version)
| ├── conf/
| | ├── logback-app.xml
| | └── monitor.proc-def.yaml.template # Template of a process definition for the application
| └── monitor.jar
├── bin/ # Used to hold common scripts
| ├── entrypoint.sh
| ├── ks-env.sh
| └── mainclass.sh
├── conf/ # Configurations
│ ├── net.properties
| ├── db.properties
| ├── .
| ├── .
| ├── .
│ ├── secrets.properties
| └── process/
└── var/
├── logs/ # GC logs; Docker app logs go to stdout/stderr.
├── data/ # Persistent runtime data written by platform components
├── health/ # Health/readiness marker files used by monitoring and process checks
└── profiles/ # Captured profiling artefacts such as JFR or async-profiler output
keysquare/
├── apps/
│ └── monitor/
│ └── latest -> (version)
| ├── conf/
| | └── monitor.proc-def.yaml.template # Template of a process definition for the application
| ├── monitor.sh
| └── monitor.jar
├── bin/ # Used to hold common scripts
| └── ks-platform.sh # Used for managing the platform
├── conf/ # Configurations
│ ├── net.properties
| ├── db.properties
| ├── .
| ├── .
| ├── .
│ ├── secrets.properties
│ ├── licence.key
│ ├── pm-token # Generated Platform Manager API token
| └── process/ # Live process definitions
└── var/
├── logs/ # Stores logs for components.
├── data/ # Persistent runtime data written by platform components
├── health/ # Health/readiness marker files used by monitoring and process checks
├── proc/ # Generated process definitions and process-manager runtime metadata
└── profiles/ # Captured profiling artefacts such as JFR or async-profiler output
ks-platform.sh invokes the version-selected Platform Manager and TUI launchers directly.
Running the Platform
From the installed $HOME/keysquare/bin directory, use ks-platform.sh.
Start the platform:
./ks-platform.sh start
Stop the platform:
./ks-platform.sh stop
Restart the platform:
./ks-platform.sh restart
Get Status of the platform:
Used to verify the platform.
./ks-platform.sh status
Without a comma-separated app list, these commands act on the whole platform.
- Container
- Bare-metal
Pass Compose service names as one comma-separated argument to manage only those services:
./ks-platform.sh start sequencer,monitor
./ks-platform.sh stop sequencer,monitor
./ks-platform.sh restart sequencer,monitor
./ks-platform.sh status sequencer,monitor
Selected stop leaves containers in place, while remove stops and removes containers without removing their volumes:
./ks-platform.sh remove sequencer,monitor
./ks-platform.sh remove
For a host-specific Compose file, put host-file before the optional service list:
./ks-platform.sh start host-file sequencer,monitor
./ks-platform.sh stop host-file
./ks-platform.sh config host-file
config host-file prints the resolved Compose configuration. The secondary mode remains available for relay-only hosts.
Pass Platform Manager process names as one comma-separated argument to manage only those processes:
./ks-platform.sh status sequencer,monitor
./ks-platform.sh stop sequencer,monitor
./ks-platform.sh start sequencer,monitor
./ks-platform.sh restart sequencer,monitor
Use the names shown by the unfiltered status command. Platform Manager must already be running and remains running
for selected-process operations. Processes are handled in the order listed without added dependency orchestration.
Platform Manager-only commands can be passed through the same wrapper:
./ks-platform.sh platform-manager status
./ks-platform.sh platform-manager pid
./ks-platform.sh platform-manager info
Open the Platform Manager TUI
The Platform Manager TUI is KeySquare's administration tool for bare-metal installs. Use it to check health, adjust host-level process definitions, and capture diagnostics.
./ks-platform.sh tui

| Area | What operators can do |
|---|---|
| Process list | See state, readiness, process type, pending restart markers, JFR markers, and profiling markers. |
| Lifecycle controls | Start or stop one process, start all in dependency order, or stop all in reverse dependency order with confirmation. |
| Process definitions | Add packaged apps, import custom definitions, edit host-owned definitions, and remove stopped sources. |
| Details and stats | Inspect PID, uptime, dependencies, tracking ID, command line, CPU, memory, I/O, file descriptors, and thread CPU. |
| Java diagnostics | Fetch thread dumps, view heap info, force GC, and toggle Java Flight Recorder. |
| Profiling | Capture CPU or allocation profiles and list saved profile files under $HOME/keysquare/var/profiles. |
| Auth and TLS | Use the generated token file and TUI settings from platform-manager-tui.properties. |
Useful keys
| Key | Action |
|---|---|
j / k or arrow keys | Move through lists |
Tab, 1-4 | Move between panels |
[ / ] | Cycle tabs in the focused panel |
s / x | Start or stop the selected process |
a / A | Start all, or force start all |
z / Z | Stop all, or force stop all |
+ / i / e / - | Add, import, edit, or remove process definitions |
t / H / g / f | Thread dump, heap info, force GC, or toggle JFR |
p / P / o / l | CPU profile, allocation profile, stop profile, or list profiles |
r / h / ? / q | Refresh, show help, or quit |
Configuring the Platform
Configuration And Secrets
Configuration is read on startup. Restart the platform after changing conf files.
Configuration lives under $HOME/keysquare/conf. TLS certificates and keys live in the sibling $HOME/keysquare/certs
directory. One rule keeps the install tidy: package files live under apps, while deployment choices and local overrides
live under conf.
| File | Use |
|---|---|
net.properties | Ingress hostname, exposed ports, and service URLs |
db.properties | QuestDB or Oracle connection settings |
secrets.properties | Shared secrets and passwords |
<component>.secrets.properties | Component-specific secret files exist for advanced layouts, but most deployments should not need them. |
platform-manager.properties | Bare-metal Platform Manager API, auth, audit, diagnostics, JFR, and profiling |
platform-manager-tui.properties | TUI connection, token-file, refresh, timeout, and TLS settings |
<lowercase-host-name>.properties | Host identity, host-specific overrides, and bare-metal process sources |
override.properties | Final local override file for advanced deployment layouts |
../certs/ | TLS certificates and keys for HTTPS where enabled; installed at $HOME/keysquare/certs |
Put server-specific values in the host file. Keep package-owned files under $HOME/keysquare/apps read-only in practice;
they belong to installed versions.
Updating/Adjusting Process Definitions
Process definitions are local operational configuration. Package updates install new app versions and new templates, but existing host-owned process definition files are kept so local JVM args, dependencies, autostart choices, and health checks are not silently replaced.
- Container
- Bare-metal
Container images carry app-owned process definition templates, and the entrypoint renders a writable process definition
under conf/process the first time a service starts. If conf/process/<app-name>.proc-def.yaml already exists, the
container uses that file instead of re-rendering the image template.
To adjust a container process definition, edit the host-mounted file and restart the affected service or the platform:
cd $HOME/keysquare
./bin/ks-platform.sh stop
vi conf/process/<app-name>.proc-def.yaml
./bin/ks-platform.sh start
Container process definitions are mainly used by the entrypoint for JVM options such as jvmArgs. Docker Compose controls
the container lifecycle, mounts, networks, ports, and image tags.
To accept the current image's packaged template again, stop the platform, move the local process definition out of the way, and start the platform so the entrypoint can render a fresh file:
cd $HOME/keysquare
./bin/ks-platform.sh stop
mv conf/process/<app-name>.proc-def.yaml conf/process/<app-name>.proc-def.yaml.bak
./bin/ks-platform.sh start
The Bare-metal Platform Manager manages host-owned process definitions under $HOME/keysquare/conf/process. Setup
registers selected apps in KS_PM_PROC_DEF_SOURCES in $HOME/keysquare/conf/<hostname>.properties. On Platform Manager
start, keysquare-app:<component> sources missing process definition, or proc-def, files from the template in an app under
current, while existing host files are preserved.
Manual Edit
Stop the platform, edit the host-owned YAML file, then start the platform again:
cd $HOME/keysquare
./bin/ks-platform.sh stop
cp conf/process/<process-name>-<hostname>.proc-def.yaml conf/process/<process-name>-<hostname>.proc-def.yaml.bak
vi conf/process/<process-name>-<hostname>.proc-def.yaml
./bin/ks-platform.sh start
To make Platform Manager recreate a packaged app process definition from the current latest template, stop the platform
and move the host file out of the way before starting again:
cd $HOME/keysquare
./bin/ks-platform.sh stop
mv conf/process/<process-name>-<hostname>.proc-def.yaml conf/process/<process-name>-<hostname>.proc-def.yaml.bak
./bin/ks-platform.sh start
To add or remove managed sources by hand, update KS_PM_PROC_DEF_SOURCES in the host properties file:
KS_PM_PROC_DEF_SOURCES=keysquare-app:monitor,custom-app:<path-to-custom-process-definition>/custom-app-name.proc-def.yaml
TUI Edit
Use the TUI when Platform Manager is already running and you want to edit the selected process through the Platform Manager API:
cd $HOME/keysquare/bin
./ks-platform.sh tui
In the TUI, select a process and press e to open the process definition editor. Use j / k or the arrow keys to move,
Enter to edit a field, s or S to save, and C to cancel. If the process is running, saved changes are marked as a
pending restart; stop and start that process from the TUI when you are ready to apply them.
Use + to add a packaged app from installed templates, i to import a custom process definition path from the Add Process
panel, and - to remove a stopped process source.
Editing Properties

Post Edit Apps Marked Dirty Until Restart

Verify the Platform
Open Key UI from a browser:
http://<server>:6500
Then check platform status from $HOME/keysquare/bin:
./ks-platform.sh status
You should be presented with Healthy which means that the Key UI loads, the required services are running, no required process is in a failed/restarting state, and no errors are in logs.
- Container
- Bare-metal
For container installs, check Compose state and recent logs from $HOME/keysquare:
docker compose --project-directory . -f apps/docker/latest/docker-compose-platform.yaml -p keysquare ps
docker compose --project-directory . -f apps/docker/latest/docker-compose-platform.yaml -p keysquare logs --tail=100
For bare-metal installs, use the TUI and log directory:
cd $HOME/keysquare/bin
./ks-platform.sh tui
ls -lt $HOME/keysquare/var/logs
Updating the Platform
Use setup for package updates.
Update Packages
- Container
- Bare-metal
Extract the new Docker release and run setup:
tar xvzf keysquare-docker-(version).tar.gz
cd keysquare-docker-(version)
./setup.sh
Extract the new bare-metal release files and run setup:
tar xvzf keysquare-baseline-(version).tar.gz
tar xvzf keysquare-core-platform-(version).tar.gz
cd keysquare-baseline-(version)
./setup.sh
Roll Back
To roll back one already installed component, stop the platform, repoint latest, and start again:
- Container
- Bare-metal
cd $HOME/keysquare/bin
./ks-platform.sh stop
ln -sfn (version) $HOME/keysquare/apps/docker/latest
./ks-platform.sh start
Repointing latest changes the component binaries, but Platform Manager preserves the host-owned process definition. If
the restored version has different JVM arguments, dependencies, or health checks, move that file aside before restarting.
For a keysquare-app:<component> source, Platform Manager will recreate the missing file from the restored version's
packaged template.
cd $HOME/keysquare
./bin/ks-platform.sh stop
ln -sfn (version) apps/<component>/latest
# Refresh the packaged process settings while preserving the current file as a backup.
mv conf/process/<process-name>-<hostname>.proc-def.yaml conf/process/<process-name>-<hostname>.proc-def.yaml.bak
./bin/ks-platform.sh start
Skip the mv step if you intend to keep the current host-specific process settings. For a custom-app: source, restore
a compatible process definition yourself instead of removing it.
Explore the Platform
Create a workspace, open Viewer, confirm schemas are visible, register a demo application, then generate its API key. That path proves Key UI, Web Data Server, KeyAccess, ingress, and database wiring are all talking to each other.
Once Key UI loads, start with workflows rather than package names. This route gives users, developers, and operators a quick feel for what the platform can do.
| Area | What to try | More detail |
|---|---|---|
| Workspace | Build a saved layout from live views and service modules, then share it with users or groups. | Workspaces |
| Data tools | Use Viewer for schemas and live data, RPC for service workflows, View Builder for reusable views, and View Defs/Table Defs for saved definitions. | Data Viewer |
| Admin tools | Use App Monitor for health, Permissions for users/apps/API keys/entitlements, and Modules to expose Key UI features by role. | Monitoring, Application Management, Configurations |
| Authentication | Configure how users sign in before Key UI roles and data permissions apply. | Authentication |
| Service modules | Enable workflows for instruments, business dates, prices, quotes, curves, and bond analytics. | Static Data, Price Engine, Quote Engine, Analytics Engine |
| Observability | Use the bare-metal TUI for process operations and Grafana for platform dashboards. | Monitoring |
| Client tools | Build client apps with Java or Python, or connect business users through the Excel add-in. | Java, Python, Excel |
Networking
These defaults can be changed in net.properties.
Multicast
The platform requires 5 administratively scoped multicast addresses, comprised of three blocks:
| Block | Use | Info |
|---|---|---|
| 1 | Sequencer-In | A pair of consecutive addresses, with the first one ending with an odd number, e.g. 239.192.0.1 and 239.192.0.2 |
| 2 | Sequencer-Out | A pair of consecutive addresses, with the first one ending with an odd number, e.g. 239.192.0.3 and 239.192.0.4 |
| 3 | Key Access | A single address, e.g. 239.192.0.5 |
In the example above, a five-address block between 239.192.0.1 and 239.192.0.5 inclusive would be used.
Default Routes
| Route | Application | URL |
|---|---|---|
* | Key UI | http://<server>:6500 |
/api/web | Web Data Server | http://<server>:6500/api/web |
/api/key-access | KeyAccess | http://<server>:6500/api/key-access |
/api/proxy | KeySquare Proxy | http://<server>:6500/api/proxy |
/app/grafana | Grafana | http://<server>:6500/app/grafana |
/app/questdb | QuestDB | http://<server>:6500/app/questdb |
Direct ports are usually for troubleshooting:
| Application | Property | Default |
|---|---|---|
| Ingress HTTP | KS_INGRESS_HTTP_PORT | 6500 |
| Ingress HTTPS | KS_INGRESS_HTTPS_PORT | 6501 |
| Platform Manager API | KS_PLATFORM_MANAGER_PORT | 18443 |
| KeySquare Proxy gRPC | KS_KEY_SQUARE_PROXY_GRPC_PORT | 6700 |
| Grafana | KS_GRAFANA_HTTP_PORT | 5500 |
| QuestDB HTTP / PostgreSQL | KS_QUESTDB_HTTP_PORT, KS_QUESTDB_PG_PORT | 5510, 5512 |
Start Building
Ready to build your first application?