<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Services on Deevnet IoTaaS</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/</link><description>Recent content in Services on Deevnet IoTaaS</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/index.xml" rel="self" type="application/rss+xml"/><item><title>Network &amp; Workloads</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/network-and-workloads/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/network-and-workloads/</guid><description>&lt;h1 id="network--workloads-hahahugoshortcode221s0hbhb">
 Network &amp;amp; Workloads &lt;span class="status-badge status-active">Available&lt;/span>

 &lt;a class="anchor" href="#network--workloads-hahahugoshortcode221s0hbhb">#&lt;/a>
&lt;/h1>
&lt;h2 id="what-you-get">
 What you get
 &lt;a class="anchor" href="#what-you-get">#&lt;/a>
&lt;/h2>
&lt;p>Creating the tenant gives you a network before you declare anything else:&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>A &lt;code>/24&lt;/code> of your own&lt;/td>
 &lt;td>from &lt;code>10.20.128.0/18&lt;/code> — &lt;code>deevnet_tenant.this.subnet&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>An anycast gateway&lt;/td>
 &lt;td>&lt;code>.1&lt;/code> of it — &lt;code>deevnet_tenant.this.gateway&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Outbound internet&lt;/td>
 &lt;td>SNAT on the way out; the outside world sees the platform, not your subnet&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Isolation&lt;/td>
 &lt;td>your network is its own routing domain (a VRF). Other tenants cannot reach it, and it cannot reach them&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>A &lt;strong>workload&lt;/strong> is a Fedora VM on that network, addressed by cloud-init from your subnet (&lt;code>.10&lt;/code>
upward; &lt;code>.2&lt;/code>–&lt;code>.9&lt;/code> are reserved). There is no DHCP on tenant networks — addresses are assigned, not
leased, so a rebuilt workload comes back at the same address.&lt;/p></description></item><item><title>DNS</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/dns/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/dns/</guid><description>&lt;h1 id="dns-hahahugoshortcode219s0hbhb">
 DNS &lt;span class="status-badge status-active">Available&lt;/span>

 &lt;a class="anchor" href="#dns-hahahugoshortcode219s0hbhb">#&lt;/a>
&lt;/h1>
&lt;h2 id="what-you-get">
 What you get
 &lt;a class="anchor" href="#what-you-get">#&lt;/a>
&lt;/h2>
&lt;p>Your own zone, &lt;code>&amp;lt;name&amp;gt;.mobile.deevnet.net&lt;/code>, and its reverse zone, served authoritatively by the
platform and delegated from the site resolver — so anything that resolves through the site
(workloads, trusted seats) finds your names. &lt;strong>You write the records; the platform never writes one
on your behalf&lt;/strong> (
 &lt;a href="https://deevnet.github.io/deevnet-docs/deevnet-docs/docs/architecture/decisions/0004-tenant-dns-publication/">ADR-0004&lt;/a>).&lt;/p>
&lt;h2 id="declare-a-record">
 Declare a record
 &lt;a class="anchor" href="#declare-a-record">#&lt;/a>
&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-hcl" data-lang="hcl">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;deevnet_dns_record&amp;#34; &amp;#34;api&amp;#34;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> tenant &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">deevnet_tenant&lt;/span>.&lt;span style="color:#66d9ef">this&lt;/span>.&lt;span style="color:#66d9ef">name&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;api&amp;#34;&lt;/span>&lt;span style="color:#75715e"> # -&amp;gt; api.&amp;lt;name&amp;gt;.mobile.deevnet.net
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> address &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">deevnet_workload&lt;/span>.&lt;span style="color:#66d9ef">backend&lt;/span>.&lt;span style="color:#66d9ef">address&lt;/span>&lt;span style="color:#75715e"> # must be inside your own subnet
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The matching PTR record is created for you. Workloads already get a name of their own; a record is
for the &lt;em>service&lt;/em> name you want other things to use, so the workload behind it can change.&lt;/p></description></item><item><title>Wi-Fi Keys</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/wifi-keys/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/wifi-keys/</guid><description>&lt;h1 id="wi-fi-keys-hahahugoshortcode223s0hbhb">
 Wi-Fi Keys &lt;span class="status-badge status-active">Available&lt;/span>

 &lt;a class="anchor" href="#wi-fi-keys-hahahugoshortcode223s0hbhb">#&lt;/a>
&lt;/h1>
&lt;h2 id="what-you-get">
 What you get
 &lt;a class="anchor" href="#what-you-get">#&lt;/a>
&lt;/h2>
&lt;p>A &lt;strong>Wi-Fi key of your own&lt;/strong> on the site&amp;rsquo;s IoT SSID. Devices that join with it land on the IoT
network (VLAN 30, &lt;code>10.20.30.0/24&lt;/code> at the mobile site), where they can reach the MQTT broker and the
internet — and nothing else: not your workloads, not the management network, not other tenants'
services.&lt;/p>
&lt;p>The SSID is shared; the &lt;strong>key&lt;/strong> is yours. The access point uses per-key passphrases (PPSK), so your
key identifies your devices as yours, and revoking it disconnects only yours.&lt;/p></description></item><item><title>Devices &amp; MQTT</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/devices-and-mqtt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/devices-and-mqtt/</guid><description>&lt;h1 id="devices--mqtt-hahahugoshortcode215s0hbhb">
 Devices &amp;amp; MQTT &lt;span class="status-badge status-active">Available&lt;/span>

 &lt;a class="anchor" href="#devices--mqtt-hahahugoshortcode215s0hbhb">#&lt;/a>
&lt;/h1>
&lt;h2 id="what-you-get">
 What you get
 &lt;a class="anchor" href="#what-you-get">#&lt;/a>
&lt;/h2>
&lt;ul>
&lt;li>A &lt;strong>device registry&lt;/strong> — your own inventory of what you have flashed&lt;/li>
&lt;li>&lt;strong>MQTT accounts&lt;/strong> on the platform broker, each confined to your own topic space&lt;/li>
&lt;/ul>
&lt;p>The broker is where devices and workloads meet. Neither connects to the other; both dial out to it.&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Broker&lt;/td>
 &lt;td>&lt;code>mqtt.mobile.deevnet.net&lt;/code>, port &lt;strong>8883&lt;/strong>, &lt;strong>TLS only&lt;/strong> — nothing listens on 1883&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Certificate&lt;/td>
 &lt;td>issued by the site CA — trust &lt;code>site-ca.pem&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Who can reach it&lt;/td>
 &lt;td>the IoT network (your devices) and tenant networks (your workloads)&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Your topic space&lt;/td>
 &lt;td>everything under &lt;code>&amp;lt;tenant&amp;gt;/&lt;/code> — and nothing else&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="declare-a-device-and-its-account">
 Declare a device and its account
 &lt;a class="anchor" href="#declare-a-device-and-its-account">#&lt;/a>
&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-hcl" data-lang="hcl">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;deevnet_iot_device&amp;#34; &amp;#34;pico&amp;#34;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> tenant &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">deevnet_tenant&lt;/span>.&lt;span style="color:#66d9ef">this&lt;/span>.&lt;span style="color:#66d9ef">name&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;pico-1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> trust_class &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;iot&amp;#34;&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> # mac = &amp;#34;28:cd:c1:...&amp;#34; # optional; recorded, never used as authorization
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">resource&lt;/span> &lt;span style="color:#e6db74">&amp;#34;deevnet_iot_broker_account&amp;#34; &amp;#34;pico&amp;#34;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> tenant &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">deevnet_tenant&lt;/span>.&lt;span style="color:#66d9ef">this&lt;/span>.&lt;span style="color:#66d9ef">name&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> name &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#34;pico-1&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> device &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">deevnet_iot_device&lt;/span>.&lt;span style="color:#66d9ef">pico&lt;/span>.&lt;span style="color:#66d9ef">name&lt;/span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e"> # Relative to your tenant: the API adds the &amp;#34;&amp;lt;tenant&amp;gt;/&amp;#34; prefix itself.
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> publish &lt;span style="color:#f92672">=&lt;/span> [&lt;span style="color:#e6db74">&amp;#34;sensors/pico-1/telemetry&amp;#34;, &amp;#34;log/pico-1&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> subscribe &lt;span style="color:#f92672">=&lt;/span> [&lt;span style="color:#e6db74">&amp;#34;sensors/pico-1/command&amp;#34;&lt;/span>]
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">output&lt;/span> &lt;span style="color:#e6db74">&amp;#34;pico_mqtt&amp;#34;&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> value &lt;span style="color:#f92672">=&lt;/span> {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> username &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">deevnet_iot_broker_account&lt;/span>.&lt;span style="color:#66d9ef">pico&lt;/span>.&lt;span style="color:#66d9ef">username&lt;/span>&lt;span style="color:#75715e"> # &amp;#34;&amp;lt;tenant&amp;gt;-pico-1&amp;#34;
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#75715e">&lt;/span> password &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">deevnet_iot_broker_account&lt;/span>.&lt;span style="color:#66d9ef">pico&lt;/span>.&lt;span style="color:#66d9ef">password&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> publish &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">deevnet_iot_broker_account&lt;/span>.&lt;span style="color:#66d9ef">pico&lt;/span>.&lt;span style="color:#66d9ef">granted_publish&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> }
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> sensitive &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#66d9ef">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>A &lt;strong>workload&amp;rsquo;s&lt;/strong> account is the same resource without &lt;code>device&lt;/code>:&lt;/p></description></item><item><title>Logs</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/logs/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/logs/</guid><description>&lt;h1 id="logs-hahahugoshortcode220s0hbhb">
 Logs &lt;span class="status-badge status-active">Available&lt;/span>

 &lt;a class="anchor" href="#logs-hahahugoshortcode220s0hbhb">#&lt;/a>
&lt;/h1>
&lt;h2 id="what-you-get">
 What you get
 &lt;a class="anchor" href="#what-you-get">#&lt;/a>
&lt;/h2>
&lt;p>Three log &lt;strong>partitions&lt;/strong> of your own in the platform log store, and two tokens
(
 &lt;a href="https://deevnet.github.io/deevnet-docs/deevnet-docs/docs/architecture/decisions/0027-tenant-log-store/">ADR-0027&lt;/a>):&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Partition&lt;/th>
 &lt;th>What lands there&lt;/th>
 &lt;th>How it gets there&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>(index, 0)&lt;/code>&lt;/td>
 &lt;td>your &lt;strong>workloads&amp;rsquo;&lt;/strong> logs&lt;/td>
 &lt;td>you ship them, with your ingest token&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>(index, 1)&lt;/code>&lt;/td>
 &lt;td>what the &lt;strong>platform&lt;/strong> says about your tenant&lt;/td>
 &lt;td>the platform&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>(index, 2)&lt;/code>&lt;/td>
 &lt;td>your &lt;strong>devices&amp;rsquo;&lt;/strong> logs&lt;/td>
 &lt;td>devices publish to MQTT; a bridge carries them&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;code>index&lt;/code> is your tenant&amp;rsquo;s index (&lt;code>deevnet_tenant.this.index&lt;/code>). The tokens and endpoint are attributes
of your tenant: &lt;code>log_endpoint&lt;/code>, &lt;code>log_ingest_token&lt;/code>, &lt;code>log_read_token&lt;/code>, &lt;code>log_select_header&lt;/code>.&lt;/p></description></item><item><title>Dashboards</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/dashboards/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/dashboards/</guid><description>&lt;h1 id="dashboards-hahahugoshortcode218s0hbhb">
 Dashboards &lt;span class="status-badge status-active">Available&lt;/span>

 &lt;a class="anchor" href="#dashboards-hahahugoshortcode218s0hbhb">#&lt;/a>
&lt;/h1>
&lt;h2 id="what-you-get">
 What you get
 &lt;a class="anchor" href="#what-you-get">#&lt;/a>
&lt;/h2>
&lt;p>A &lt;strong>Grafana organization of your own&lt;/strong>, with your logs already wired in
(
 &lt;a href="https://deevnet.github.io/deevnet-docs/deevnet-docs/docs/architecture/decisions/0024-dashboards/">ADR-0024&lt;/a>). Your login is an &lt;strong>Editor&lt;/strong> there, and
a member of no other organization. You build folders and dashboards. The platform owns the data
sources.&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Data source UID&lt;/th>
 &lt;th>Reads&lt;/th>
 &lt;th>&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>deevnet-logs-workloads&lt;/code>&lt;/td>
 &lt;td>&lt;code>(index, 0)&lt;/code>, your workloads&amp;rsquo; logs&lt;/td>
 &lt;td>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>deevnet-logs-platform&lt;/code>&lt;/td>
 &lt;td>&lt;code>(index, 1)&lt;/code>, what the platform says about your tenant&lt;/td>
 &lt;td>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>deevnet-logs-devices&lt;/code>&lt;/td>
 &lt;td>&lt;code>(index, 2)&lt;/code>, your devices&amp;rsquo; logs from MQTT&lt;/td>
 &lt;td>the default&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>Each one reads with your tenant&amp;rsquo;s own log read token, so it sees exactly what your token sees and
nothing more (
 &lt;a href="https://deevnet.github.io/deevnet-docs/deevnet-docs/docs/runbook/tenant/services/logs/">Logs&lt;/a>).&lt;/p></description></item><item><title>State Store</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/state-store/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/state-store/</guid><description>&lt;h1 id="state-store-hahahugoshortcode222s0hbhb">
 State Store &lt;span class="status-badge status-active">Available&lt;/span>

 &lt;a class="anchor" href="#state-store-hahahugoshortcode222s0hbhb">#&lt;/a>
&lt;/h1>
&lt;h2 id="what-you-get">
 What you get
 &lt;a class="anchor" href="#what-you-get">#&lt;/a>
&lt;/h2>
&lt;p>An S3-compatible place for your Terraform state, with a key prefix only your credentials can reach
(
 &lt;a href="https://deevnet.github.io/deevnet-docs/deevnet-docs/docs/architecture/decisions/0007-terraform-state-custody/">ADR-0007&lt;/a>). It is &lt;strong>offered, not
required&lt;/strong> — keeping state yourself is a valid choice, as long as you keep it carefully: it holds
every credential your tenant was issued.&lt;/p>
&lt;h2 id="move-your-state-into-it">
 Move your state into it
 &lt;a class="anchor" href="#move-your-state-into-it">#&lt;/a>
&lt;/h2>
&lt;p>The credentials are attributes of your tenant, so this happens after the first apply:&lt;/p></description></item><item><title>Coming Soon</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/coming-soon/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/services/coming-soon/</guid><description>&lt;h1 id="coming-soon">
 Coming Soon
 &lt;a class="anchor" href="#coming-soon">#&lt;/a>
&lt;/h1>
&lt;p>Services that are designed — each has an architecture decision record — but not built. Nothing
here can be declared today. The shape described is the proposal&amp;rsquo;s, and may change before it ships.&lt;/p>
&lt;hr>
&lt;h2 id="secrets">
 Secrets
 &lt;a class="anchor" href="#secrets">#&lt;/a>
&lt;/h2>
&lt;span class="status-badge status-planned">Coming soon&lt;/span>

&lt;p>&lt;strong>Today:&lt;/strong> anything secret your application needs lives in your Terraform state or your own
tooling. &lt;strong>Planned:&lt;/strong> a namespace of your own in the platform secrets store, holding a runtime copy
of secrets your repository owns, written through the API, and read by your workloads with their own
identity. 
 &lt;a href="https://deevnet.github.io/deevnet-docs/deevnet-docs/docs/architecture/decisions/0021-tenant-secrets/">ADR-0021&lt;/a>&lt;/p></description></item></channel></rss>