<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Open Location Stack</title><link>https://openlocationstack.com/</link><description>Recent content on Open Location Stack</description><generator>Hugo</generator><language>en</language><lastBuildDate>Mon, 27 Apr 2026 13:00:00 +0000</lastBuildDate><atom:link href="https://openlocationstack.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Indoor maps need to grow up</title><link>https://openlocationstack.com/news/indoor-maps-need-to-grow-up/</link><pubDate>Mon, 27 Apr 2026 13:00:00 +0000</pubDate><guid>https://openlocationstack.com/news/indoor-maps-need-to-grow-up/</guid><description>&lt;p&gt;Most companies that use indoor maps still treat them as an afterthought. They&amp;rsquo;ll buy an expensive location system, for example based on ultra-wideband, and spend a lot of money installing the necessary infrastructure and dialing that in. But the maps that go with this system do not get much attention from a practical or aesthetic point of view. Most people base their maps on architectural drawings. The dominant aesthetic is that of a technical drawing. Quite often these come in bitmap form. You can see this clearly when zooming in. The edges get all pixelated and the text labels become blurry.&lt;/p&gt;</description></item><item><title>Open Location Hub 0.1.0 is out</title><link>https://openlocationstack.com/news/open-location-hub-0-1-0/</link><pubDate>Tue, 14 Apr 2026 08:06:00 +0000</pubDate><guid>https://openlocationstack.com/news/open-location-hub-0-1-0/</guid><description>&lt;p&gt;&lt;a href="https://github.com/Open-Location-Stack/open-location-hub/releases/tag/0.1.0"&gt;Open Location Hub 0.1.0&lt;/a&gt; is now published.&lt;/p&gt;
&lt;p&gt;This is the first public release of Open Location Hub. Our goal with this release is to offer a full implementation of the current API surface and solicit feedback that helps define what the eventual &lt;code&gt;1.0&lt;/code&gt; release should look like.&lt;/p&gt;
&lt;h2 id="what-is-in-010"&gt;What is in 0.1.0&lt;/h2&gt;
&lt;p&gt;For the initial &lt;code&gt;0.1&lt;/code&gt; scope, Open Location Hub now implements the full omlox API surface planned for this release.&lt;/p&gt;</description></item><item><title>Benchmarking Open Location Hub with OpenSky and replayed traffic</title><link>https://openlocationstack.com/news/benchmarking-open-location-hub-with-opensky/</link><pubDate>Wed, 08 Apr 2026 08:00:00 +0000</pubDate><guid>https://openlocationstack.com/news/benchmarking-open-location-hub-with-opensky/</guid><description>&lt;p&gt;We wanted a benchmark built from real traffic, easy to rerun locally, and good at showing where Open Location Hub starts to drop work.&lt;/p&gt;
&lt;h2 id="intro-opensky-and-the-benchmark-input"&gt;Intro: OpenSky and the benchmark input&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://opensky-network.org/"&gt;OpenSky Network&lt;/a&gt; publishes live aircraft state data from a community-operated sensor network. For this benchmark we used the Germany preset, captured about five minutes of traffic, and stored the raw &lt;code&gt;location_updates&lt;/code&gt; stream as NDJSON.&lt;/p&gt;
&lt;p&gt;The input is both realistic and repeatable. We start from a real capture and replay the same file against the hub whenever we change the runtime.&lt;/p&gt;</description></item><item><title>Easter Update: soft launch, public repositories, and rapid hub progress</title><link>https://openlocationstack.com/news/easter-update-2026/</link><pubDate>Thu, 02 Apr 2026 07:00:00 +0000</pubDate><guid>https://openlocationstack.com/news/easter-update-2026/</guid><description>&lt;p&gt;Open Location Stack has moved from a private build effort to something partners can inspect, test, and challenge directly.&lt;/p&gt;
&lt;p&gt;At &lt;a href="https://www.logimat-messe.de/en"&gt;LogiMAT in Stuttgart&lt;/a&gt;, we soft-launched the &lt;a href="https://openlocationstack.com/"&gt;Open Location Stack website&lt;/a&gt;. The goal was simple: show the work to RTLS partners early, while the architecture is already credible and still open to feedback.&lt;/p&gt;
&lt;p&gt;At the same time, we made our first two GitHub repositories public:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://openlocationstack.com/open-location-hub/"&gt;Open Location Hub&lt;/a&gt; on &lt;a href="https://github.com/Open-Location-Stack/open-location-hub"&gt;GitHub&lt;/a&gt;, which is the integration backbone of the stack and the first component we expect many partners to evaluate seriously.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openlocationstack.com/floor-plan-editor/"&gt;Floor Plan Editor&lt;/a&gt; on &lt;a href="https://github.com/Open-Location-Stack/floorplan-editor"&gt;GitHub&lt;/a&gt;, which gives the stack an open indoor mapping foundation for creating and maintaining structured venue data.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That order matters. For many teams, the hub is where the value becomes concrete. It can sit between existing RTLS deployments, normalize location flows, and open a path toward mixed-vendor interoperability without forcing a rip-and-replace project.&lt;/p&gt;</description></item><item><title>API Reference</title><link>https://openlocationstack.com/open-location-hub/docs/api-reference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openlocationstack.com/open-location-hub/docs/api-reference/</guid><description/></item><item><title>Architecture</title><link>https://openlocationstack.com/open-location-hub/docs/architecture/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openlocationstack.com/open-location-hub/docs/architecture/</guid><description>&lt;p&gt;&lt;em&gt;This page is generated from the Open Location Hub source documentation and should not be edited in the website repository.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="layers"&gt;Layers&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cmd/hub&lt;/code&gt;: process bootstrap and wiring&lt;/li&gt;
&lt;li&gt;&lt;code&gt;internal/config&lt;/code&gt;: environment-driven configuration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;internal/httpapi&lt;/code&gt;: API surface and handlers&lt;/li&gt;
&lt;li&gt;&lt;code&gt;internal/ws&lt;/code&gt;: OMLOX WebSocket wrapper protocol, subscriptions, and fan-out&lt;/li&gt;
&lt;li&gt;&lt;code&gt;internal/storage/postgres&lt;/code&gt;: durable store&lt;/li&gt;
&lt;li&gt;&lt;code&gt;internal/mqtt&lt;/code&gt;: MQTT topic mapping and broker integration&lt;/li&gt;
&lt;li&gt;&lt;code&gt;internal/auth&lt;/code&gt;: token verification middleware&lt;/li&gt;
&lt;li&gt;&lt;code&gt;internal/rpc&lt;/code&gt;: local-method dispatch, MQTT RPC bridging, announcements, and aggregation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;internal/hub&lt;/code&gt;: shared CRUD, ingest, derived event generation, collision evaluation, and internal event bus emission&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="metadata-and-hot-state"&gt;Metadata And Hot State&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Postgres is the durable source of truth for hub metadata, zones, fences, trackables, and location providers.&lt;/li&gt;
&lt;li&gt;The runtime resolves the singleton hub metadata row before the service starts so one stable &lt;code&gt;hub_id&lt;/code&gt; and label are available for startup validation, internal event provenance, and identify responses.&lt;/li&gt;
&lt;li&gt;The hub loads those resources into an immutable in-memory metadata snapshot before it accepts traffic.&lt;/li&gt;
&lt;li&gt;Successful CRUD writes update Postgres first, then update the in-memory snapshot, invalidate any affected derived metadata such as zone transforms, and emit a &lt;code&gt;metadata_changes&lt;/code&gt; bus event.&lt;/li&gt;
&lt;li&gt;A background reconcile loop reloads durable metadata periodically and emits the same &lt;code&gt;metadata_changes&lt;/code&gt; notifications when it detects out-of-band create, update, or delete drift.&lt;/li&gt;
&lt;li&gt;Decision-critical ingest state is kept in process memory:
&lt;ul&gt;
&lt;li&gt;dedup windows&lt;/li&gt;
&lt;li&gt;latest provider-source locations&lt;/li&gt;
&lt;li&gt;latest trackable locations and active motion state used for collision work&lt;/li&gt;
&lt;li&gt;optional per-trackable Kalman filter state and retained samples&lt;/li&gt;
&lt;li&gt;proximity hysteresis state&lt;/li&gt;
&lt;li&gt;fence membership state&lt;/li&gt;
&lt;li&gt;collision pair state&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="event-fan-out"&gt;Event Fan-Out&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;REST, MQTT, or WebSocket ingest enters the shared hub service.&lt;/li&gt;
&lt;li&gt;The hub validates, normalizes, deduplicates, and updates in-memory transient state on the ingest path.&lt;/li&gt;
&lt;li&gt;A buffered native-publication stage emits native location and motion events without blocking ingest on downstream fan-out.&lt;/li&gt;
&lt;li&gt;A second buffered decision stage applies optional per-trackable Kalman filtering before alternate-CRS publication, geofence evaluation, and collision preparation.&lt;/li&gt;
&lt;li&gt;Decision work is sharded by provider/source so one hot stream does not serialize the entire derived path, while updates for the same stream stay ordered on the same worker.&lt;/li&gt;
&lt;li&gt;The sharded decision workers drain queued locations in bounded batches before processing them so bursty ingest spends less time on per-item queue churn.&lt;/li&gt;
&lt;li&gt;When Kalman publication throttling is enabled, the decision stage may suppress some derived location and trackable-motion events while still running geofence and collision work on every accepted normalized point.&lt;/li&gt;
&lt;li&gt;Collision evaluation runs as its own downstream stage fed from the decision output so pairwise collision work does not block the rest of the derived path.&lt;/li&gt;
&lt;li&gt;Collision work prefers normalized WGS84 motions when the derived transform exists; otherwise it falls back to normalized local motions for local-only streams so indoor UWB-style zones still produce collision events.&lt;/li&gt;
&lt;li&gt;MQTT and WebSocket consume the resulting internal event stream and publish transport-specific payloads in batches.&lt;/li&gt;
&lt;li&gt;When any non-critical queue fills, the hub drops newer work on that path rather than backpressuring raw ingest.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Implications:&lt;/p&gt;</description></item><item><title>Authentication and Authorization</title><link>https://openlocationstack.com/open-location-hub/docs/auth/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openlocationstack.com/open-location-hub/docs/auth/</guid><description>&lt;p&gt;&lt;em&gt;This page is generated from the Open Location Hub source documentation and should not be edited in the website repository.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This project supports standards-based JWT bearer authentication for the REST API and an authorization model built around JWT claims plus a server-side permissions file.&lt;/p&gt;
&lt;p&gt;The same token verifier is also used for the OMLOX WebSocket surface, but WebSocket authentication happens per message through &lt;code&gt;params.token&lt;/code&gt; instead of the HTTP &lt;code&gt;Authorization&lt;/code&gt; header.&lt;/p&gt;</description></item><item><title>Configuration</title><link>https://openlocationstack.com/open-location-hub/docs/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openlocationstack.com/open-location-hub/docs/configuration/</guid><description>&lt;p&gt;&lt;em&gt;This page is generated from the Open Location Hub source documentation and should not be edited in the website repository.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;All runtime configuration is environment-driven.&lt;/p&gt;
&lt;p&gt;Runtime lifecycle behavior:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the hub process runs from a single signal-aware root context created from &lt;code&gt;SIGINT&lt;/code&gt; and &lt;code&gt;SIGTERM&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;startup failures return structured process errors instead of panicking during early config or logger initialization&lt;/li&gt;
&lt;li&gt;graceful shutdown uses a bounded timeout so HTTP shutdown and internal event-publisher fan-out can complete deterministically after a stop signal&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="core"&gt;Core&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HTTP_LISTEN_ADDR&lt;/code&gt; (default &lt;code&gt;:8080&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HTTP_REQUEST_BODY_LIMIT_BYTES&lt;/code&gt; (default &lt;code&gt;4194304&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LOG_LEVEL&lt;/code&gt; (default &lt;code&gt;info&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HUB_ID&lt;/code&gt; (optional UUID bootstrap or reset value for the persisted hub identity)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;HUB_LABEL&lt;/code&gt; (optional bootstrap or reset value for the persisted human-readable hub label)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RESET_HUB_ID&lt;/code&gt; (&lt;code&gt;true&lt;/code&gt;/&lt;code&gt;false&lt;/code&gt;, default &lt;code&gt;false&lt;/code&gt;; when &lt;code&gt;true&lt;/code&gt;, overwrite stored hub metadata with explicitly supplied env values)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;POSTGRES_URL&lt;/code&gt; (default &lt;code&gt;postgres://postgres:postgres@localhost:5432/openrtls?sslmode=disable&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;MQTT_BROKER_URL&lt;/code&gt; (default &lt;code&gt;tcp://localhost:1883&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WEBSOCKET_WRITE_TIMEOUT&lt;/code&gt; (duration, default &lt;code&gt;5s&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WEBSOCKET_READ_TIMEOUT&lt;/code&gt; (duration, default &lt;code&gt;1m&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WEBSOCKET_PING_INTERVAL&lt;/code&gt; (duration, default &lt;code&gt;30s&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;WEBSOCKET_OUTBOUND_BUFFER&lt;/code&gt; (default &lt;code&gt;256&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;EVENT_BUS_SUBSCRIBER_BUFFER&lt;/code&gt; (default &lt;code&gt;1024&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;NATIVE_LOCATION_BUFFER&lt;/code&gt; (default &lt;code&gt;2048&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DERIVED_LOCATION_BUFFER&lt;/code&gt; (default &lt;code&gt;1024&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hub metadata bootstrap behavior:&lt;/p&gt;</description></item><item><title>Connector Guide: MQTT</title><link>https://openlocationstack.com/open-location-hub/docs/connectors-mqtt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openlocationstack.com/open-location-hub/docs/connectors-mqtt/</guid><description>&lt;p&gt;&lt;em&gt;This page is generated from the Open Location Hub source documentation and should not be edited in the website repository.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Use MQTT when your deployment already centers on a broker, when trusted edge
adapters naturally publish broker messages, or when broker-based routing fits
better than a long-lived WebSocket client connection.&lt;/p&gt;
&lt;p&gt;This repository ships a concrete MQTT connector example in
&lt;a href="https://github.com/Open-Location-Stack/open-location-hub/blob/main/connectors/gtfs/README.md"&gt;&lt;code&gt;connectors/gtfs/README.md&lt;/code&gt;&lt;/a&gt;.
The MQTT connector path is documented here against the hub&amp;rsquo;s implemented OMLOX
MQTT surface. Transport details live in
&lt;a href="https://github.com/Open-Location-Stack/open-location-hub/blob/main/specifications/omlox/mqtt.md"&gt;&lt;code&gt;specifications/omlox/mqtt.md&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Connector Guide: WebSocket</title><link>https://openlocationstack.com/open-location-hub/docs/connectors-websocket/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openlocationstack.com/open-location-hub/docs/connectors-websocket/</guid><description>&lt;p&gt;&lt;em&gt;This page is generated from the Open Location Hub source documentation and should not be edited in the website repository.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Use WebSocket when you want the simplest connector path into the hub. It maps
well to the current bundled demos, it works cleanly with the hub&amp;rsquo;s auth model,
and it does not require you to design topic routing beyond the OMLOX WebSocket
topic names.&lt;/p&gt;
&lt;p&gt;The bundled connector demonstrators in this repository currently use this
approach:&lt;/p&gt;</description></item><item><title>Connectors</title><link>https://openlocationstack.com/open-location-hub/docs/connectors/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openlocationstack.com/open-location-hub/docs/connectors/</guid><description>&lt;p&gt;&lt;em&gt;This page is generated from the Open Location Hub source documentation and should not be edited in the website repository.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;This repository keeps connectors outside the hub runtime. A connector is a
small process that reads data from some upstream system, maps that data to the
hub&amp;rsquo;s OMLOX-facing model, and submits it through the hub&amp;rsquo;s supported transport
surfaces.&lt;/p&gt;
&lt;p&gt;The key point is simple: creating a connector is easy. You do not need to patch
the hub. In most cases you only need:&lt;/p&gt;</description></item><item><title>FAQ</title><link>https://openlocationstack.com/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openlocationstack.com/faq/</guid><description>&lt;h2 id="what-license-will-open-location-stack-use"&gt;What license will Open Location Stack use?&lt;/h2&gt;
&lt;p&gt;Everything is released under the MIT License.&lt;/p&gt;
&lt;p&gt;That gives hardware vendors, software vendors, and integrators room to adopt, extend, and embed the software without negotiating around restrictive licensing terms.&lt;/p&gt;
&lt;h2 id="why-is-formation-doing-this"&gt;Why is FORMATION doing this?&lt;/h2&gt;
&lt;p&gt;After years of delivery work with RTLS partners, we kept seeing the same pattern: each company rebuilt its own hub adapters, middleware, map tooling, and integration glue.&lt;/p&gt;
&lt;p&gt;FORMATION deals with that fragmentation directly in customer projects. Different vendor stacks, different APIs, and different map formats create avoidable integration cost. Open Location Stack is our response: build the shared parts in the open so teams can spend more time on the parts that actually differentiate their product.&lt;/p&gt;</description></item><item><title>Floor Plan Editor</title><link>https://openlocationstack.com/floor-plan-editor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openlocationstack.com/floor-plan-editor/</guid><description/></item><item><title>Getting Started</title><link>https://openlocationstack.com/open-location-hub/docs/getting-started/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openlocationstack.com/open-location-hub/docs/getting-started/</guid><description>&lt;p&gt;&lt;em&gt;This page is generated from the Open Location Hub source documentation and should not be edited in the website repository.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;If you want to try Open RTLS Hub on your laptop, this repository includes two
ready-made local runtime paths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a basic compose stack from &lt;a href="https://github.com/Open-Location-Stack/open-location-hub/blob/main/docker-compose.yml"&gt;&lt;code&gt;docker-compose.yml&lt;/code&gt;&lt;/a&gt; with the hub, Postgres, Mosquitto, and Dex&lt;/li&gt;
&lt;li&gt;a local demo stack with observability in &lt;a href="https://github.com/Open-Location-Stack/open-location-hub/blob/main/local-hub"&gt;&lt;code&gt;local-hub/&lt;/code&gt;&lt;/a&gt; with the hub, Postgres, Mosquitto, Dex, SigNoz, ClickHouse, and the OpenTelemetry collector&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Use the basic stack if you want the shortest path to a working hub runtime.
Use the local demo stack if you also want observability while you
experiment.&lt;/p&gt;</description></item><item><title>Imprint</title><link>https://openlocationstack.com/imprint/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openlocationstack.com/imprint/</guid><description>&lt;p&gt;&lt;strong&gt;FORMATION GmbH&lt;/strong&gt;&lt;br/&gt;
Workplace Technologies&lt;br/&gt;
company data according to § 5 TMG&lt;/p&gt;
&lt;p&gt;Urbanstraße 71&lt;br/&gt;
10967 Berlin&lt;br/&gt;
Germany&lt;/p&gt;
&lt;p&gt;Email: &lt;a href="mailto:open-rtls@tryformation.com"&gt;open-rtls@tryformation.com&lt;/a&gt;&lt;br/&gt;
Web: &lt;a href="https://tryformation.com"&gt;tryformation.com&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;
&lt;p&gt;Entry in the Commercial Register: Berlin&lt;br/&gt;
Registration Court: Amtsgericht Charlottenburg (Berlin)&lt;br/&gt;
Registration Number: &lt;strong&gt;HRB 218133&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Executive Manager: Ian Hannigan&lt;/p&gt;
&lt;p&gt;USt.-ID (VAT ID): &lt;strong&gt;DE332537362&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Parties responsible for content according to § 55 Abs. 2 RStV: Ian Hannigan&lt;/p&gt;
&lt;p&gt;Note: Despite careful measures to control content at the point a link is added to our website, we assume no liability for the content of external links. The content for linked pages are the sole responsibility of their operators.&lt;/p&gt;</description></item><item><title>Privacy</title><link>https://openlocationstack.com/privacy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openlocationstack.com/privacy/</guid><description>&lt;h2 id="privacy-notice-for-openlocationstackcom"&gt;Privacy notice for openlocationstack.com&lt;/h2&gt;
&lt;p&gt;This website is operated by &lt;strong&gt;FORMATION GmbH&lt;/strong&gt;, Urbanstraße 71, 10967 Berlin, Germany. You can reach us at &lt;a href="mailto:open-rtls@tryformation.com"&gt;open-rtls@tryformation.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;We use a self-hosted analytics service for &lt;strong&gt;openlocationstack.com&lt;/strong&gt; to understand how the site is used, improve content, and maintain the website. Analytics is only activated after you explicitly consent through the banner shown on the live site.&lt;/p&gt;
&lt;h2 id="what-we-collect-after-consent"&gt;What we collect after consent&lt;/h2&gt;
&lt;p&gt;If you accept analytics, our website sends pseudonymous usage data to &lt;strong&gt;&lt;a href="https://analytics.tryformation.com/"&gt;analytics.tryformation.com&lt;/a&gt;&lt;/strong&gt;. This may include:&lt;/p&gt;</description></item><item><title>RPC Guide</title><link>https://openlocationstack.com/open-location-hub/docs/rpc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openlocationstack.com/open-location-hub/docs/rpc/</guid><description>&lt;p&gt;&lt;em&gt;This page is generated from the Open Location Hub source documentation and should not be edited in the website repository.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="what-rpc-is"&gt;What RPC is&lt;/h2&gt;
&lt;p&gt;RPC is the hub&amp;rsquo;s command and diagnostics interface.&lt;/p&gt;
&lt;p&gt;Use it when you need to ask the hub or a downstream RTLS device/controller to
do something right now. Examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;check whether the control path is alive&lt;/li&gt;
&lt;li&gt;identify a reachable handler&lt;/li&gt;
&lt;li&gt;send an OMLOX core command through the hub&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Do not use RPC for normal CRUD resource management. Use:&lt;/p&gt;</description></item><item><title>Search</title><link>https://openlocationstack.com/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://openlocationstack.com/search/</guid><description/></item></channel></rss>