<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Kryll³ Blog |  Your Web3 AI Sidekick]]></title><description><![CDATA[Kryll³ AI tool suite provide clear and actionable web3 insights. We make the intricate world of cryptocurrencies accessible to everyone. ]]></description><link>https://blog.kryll.io/</link><image><url>https://blog.kryll.io/favicon.png</url><title>Kryll³ Blog |  Your Web3 AI Sidekick</title><link>https://blog.kryll.io/</link></image><generator>Ghost 3.6</generator><lastBuildDate>Tue, 22 Sep 2026 13:47:44 GMT</lastBuildDate><atom:link href="https://blog.kryll.io/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[KryllOS 0.5.45 update: long or short? Futures are here!]]></title><description><![CDATA[KryllOS 0.5.45 brings futures to the app. Build and backtest long and short strategies with leverage.]]></description><link>https://blog.kryll.io/kryllos-0-5-45-update-futures-strategies/</link><guid isPermaLink="false">6ab2822ed9e60f88cb3b899c</guid><category><![CDATA[announcements]]></category><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Tue, 22 Sep 2026 13:40:33 GMT</pubDate><media:content url="https://blog.kryll.io/content/images/2026/09/thumbnail-1.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/09/Frame-1000001905.png" class="kg-image" alt="KryllOS 0.5.45 update: long or short? Futures are here!"></figure><img src="https://blog.kryll.io/content/images/2026/09/thumbnail-1.png" alt="KryllOS 0.5.45 update: long or short? Futures are here!"><p>A support level gives way, a downtrend starts taking shape, and you spot a short setup worth testing. With KryllOS 0.5.45, you can finally build it. Futures are now part of the app, so you can create long and short strategies and use leverage.</p><p>That’s the headline addition in this version. You can build these strategies in the editor and see how they behave against historical market data. Companion apps are also easier to work with, while new features help protect access to your installation.</p><hr><h2 id="futures-take-shape-in-the-editor">Futures take shape in the editor</h2><p>The previously locked Futures section now includes three new blocks: <strong>Long, Short, and Close</strong>. Position direction becomes part of the strategy you build. Whether you have a bullish idea or a bearish setup in mind, you can build around it and define your entry and exit rules.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/09/Frame-1000001904.png" class="kg-image" alt="KryllOS 0.5.45 update: long or short? Futures are here!"></figure><hr><h2 id="more-accurate-backtests-with-liquidations-you-can-inspect">More accurate backtests, with liquidations you can inspect</h2><p>With futures, you can backtest long and short strategies with leverage. <strong>Liquidations are simulated during the backtest</strong>: when a position is liquidated, it closes in full. You can find the event in the backtest logs to see when it happened and examine the conditions surrounding it.</p><p>Backtests also gain precision through more accurate triggering of the <strong>Crossover and AND</strong> blocks. Performance metrics benefit from the same work: win rate is calculated per position cycle, and the equity curve and maximum drawdown calculations have been improved. These changes give you more accurate measures for analyzing how your strategies behave.</p><hr><h2 id="improved-companion-apps-now-with-the-terminal">Improved companion apps, now with the Terminal</h2><p><a href="https://blog.kryll.io/kryllos-0-5-38-update-your-chart-and-backtest-results-become-companion-apps/">Companion apps</a> let you open an app in its own window and arrange your workspace however you like. The Terminal now joins them, so you can give it a separate window and put it wherever it works best for you.</p><p>Existing companion apps have also received substantial reliability improvements. The chart and backtest results stay linked to their editor, including after a reconnect. When you restart KryllOS, your open windows and tabs are restored. The Terminal also keeps its session through a dropped connection or a quick app restart.</p><hr><h2 id="back-up-your-profile-from-the-start">Back up your profile from the start</h2><p>Self-hosting KryllOS means staying in control of your installation and how you access it. That independence comes with a simple habit worth building early: keeping your key safe. <strong>Backing up your profile file</strong> is an essential step in safeguarding that access.</p><p>Version 0.5.45 helps you remember. The app reminds you to back up your profile after installation, then at most once a day. Take that opportunity to keep a copy of your profile somewhere safe.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/09/Frame-1000001903.png" class="kg-image" alt="KryllOS 0.5.45 update: long or short? Futures are here!"></figure><hr><h2 id="a-lock-for-when-you-step-away">A lock for when you step away</h2><p>Step away for a coffee and KryllOS can now lock automatically. You can protect access to the app with a passcode and even use <strong>Apple’s Touch ID</strong> to unlock it.</p><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="KryllOS 0.5.45 update: long or short? Futures are here!" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Join the Waitlist</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[Kryll on KuCoin GemSlot: Trade KRL to Share a 159,363 KRL Prize Pool]]></title><description><![CDATA[Kryll joins KuCoin GemSlot from Sept 10 to 17, 2026. Trade KRL to share a 159,363 KRL prize pool. Full rules, eligibility and FAQ.]]></description><link>https://blog.kryll.io/kryll-kucoin-gemslot-campaign/</link><guid isPermaLink="false">6aa2aa78d9e60f88cb3b88dc</guid><category><![CDATA[announcements]]></category><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Thu, 10 Sep 2026 13:35:45 GMT</pubDate><media:content url="https://blog.kryll.io/content/images/2026/09/Frame-1000001878-1.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/09/download.png" class="kg-image" alt="Kryll on KuCoin GemSlot: Trade KRL to Share a 159,363 KRL Prize Pool"></figure><img src="https://blog.kryll.io/content/images/2026/09/Frame-1000001878-1.png" alt="Kryll on KuCoin GemSlot: Trade KRL to Share a 159,363 KRL Prize Pool"><p><strong>Kryll is live on KuCoin GemSlot from September 10 to September 17, 2026, with a total prize pool of 159,363 KRL.</strong> Trade at least $250 of KRL to enter the Lucky Draw, or at least $600 of KRL/USDT to compete in the Trading Carnival. Rewards land in your KuCoin Funding Account within two business days of the campaign closing.</p><hr><h2 id="what-is-the-kryll-gemslot-campaign">What is the Kryll GemSlot campaign?</h2><p>The Kryll GemSlot campaign is a seven-day KuCoin trading event running from <strong>08:00 UTC on September 10, 2026 to 08:00 UTC on September 17, 2026</strong>, in which KuCoin distributes <strong>159,363 KRL</strong> to users who trade Kryll's KRL token on the exchange. It is split across two independent reward pools, a <strong>Lucky Draw</strong> (30,000 KRL) and a <strong>Trading Carnival </strong>(129,363 KRL), and enrolling once qualifies you for both.</p><p>There is no entry fee. You are not buying a ticket or locking anything up. The only requirements are spot trading volume during the campaign window and a completed KYC. Standard KuCoin spot trading fees still apply to the trades you make, so factor those in when you size your volume.</p><p>👉 <strong><a href="https://www.kucoin.com/gemslot/KRL_1?appNeedLang=true">Join the KRL GemSlot campaign on KuCoin</a></strong></p><hr><h2 id="key-dates-and-links">Key dates and links</h2><ul><li><strong>Campaign:</strong> September 10, 2026 08:00 UTC to September 17, 2026 08:00 UTC</li><li><strong>Join:</strong> <a href="https://www.kucoin.com/gemslot/KRL_1?appNeedLang=true">KRL GemSlot page on KuCoin</a></li><li><strong>Official rules:</strong> <a href="https://www.kucoin.com/announcement/en-kryll-krl-gemslot-campaign-trade-to-share-a-159363-krl-prize-pool">KuCoin announcement</a> and <a href="https://www.kucoin.com/support/47185419968025">GemSlot T&amp;C</a></li><li><strong>Trade:</strong> <a href="https://www.kucoin.com/trade/KRL-USDT">KRL/USDT on KuCoin</a></li><li><strong>New to KRL?</strong> <a href="https://blog.kryll.io/how-to-buy-krl-kryll/">How to buy KRL (Kryll)</a></li><li><strong>Get KryllOS:</strong> <a href="https://os.kryll.io/">os.kryll.io</a></li><li><strong>Community:</strong> <a href="https://x.com/kryll_io">X</a> and <a href="https://t.me/kryll_io">Telegram</a></li></ul><hr><h2 id="what-is-kucoin-gemslot">What is KuCoin GemSlot?</h2><p>GemSlot is KuCoin's recurring trade-to-earn campaign format. In KuCoin's own words:</p><p>"GemSlot is a campaign where users can earn rewards through trading. After joining the GemSlot event, users can trade designated tokens for a chance to receive rewards."</p><p>Each campaign features one project's token, runs for a fixed window, and distributes a pre-funded prize pool. At the time of writing, KuCoin's GemSlot hub lists close to 290 projects that have run a campaign, with only a small number live at any one time. Kryll's is one of them for the week of September 10.</p><h3 id="lucky-draw-vs-trading-carnival">Lucky Draw vs Trading Carnival</h3><p>The two pools work on completely different logic, and it's worth understanding both before you decide how to play it.</p><!--kg-card-begin: html--><style>
.krl-pools.krl-pools.krl-pools{box-sizing:border-box;container-type:inline-size;display:block;margin:2.25rem 0;padding:0;border:0;background:none;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;font-size:15px;font-style:normal;font-weight:400;line-height:1.55;letter-spacing:normal;word-spacing:normal;text-align:left;text-transform:none;text-indent:0;white-space:normal;color:#16161a;-webkit-text-size-adjust:100%}
.krl-pools.krl-pools.krl-pools *,.krl-pools.krl-pools.krl-pools *::before,.krl-pools.krl-pools.krl-pools *::after{box-sizing:border-box;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;font-style:normal;font-variant:normal;text-shadow:none;float:none}
.krl-pools.krl-pools.krl-pools table{width:100%;max-width:none;min-width:0;margin:0;padding:0;border:0;border-collapse:collapse;border-spacing:0;background:none;font:inherit;color:inherit;letter-spacing:normal;word-spacing:normal;text-transform:none;white-space:normal}
.krl-pools.krl-pools.krl-pools thead,.krl-pools.krl-pools.krl-pools tbody,.krl-pools.krl-pools.krl-pools tr{margin:0;padding:0;border:0;background:none;font:inherit;color:inherit}
.krl-pools.krl-pools.krl-pools th,.krl-pools.krl-pools.krl-pools td{margin:0;border:0;background:none;color:inherit;font:inherit;font-weight:400;text-align:left;vertical-align:top;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;white-space:normal}
.krl-pools.krl-pools.krl-pools span{margin:0;padding:0;border:0;background:none;font:inherit;color:inherit}
.krl-pools.krl-pools.krl-pools .krl-n{font-variant-numeric:tabular-nums;white-space:nowrap}
.krl-pools.krl-pools.krl-pools thead th{width:50%;padding:0 24px 10px 0;border-bottom:1.5px solid #16161a;font-weight:600}
.krl-pools.krl-pools.krl-pools thead th:last-child{padding-right:0}
.krl-pools.krl-pools.krl-pools .krl-s{display:block;margin-top:4px;font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:#9a9aa4}
.krl-pools.krl-pools.krl-pools .krl-g th{padding:18px 0 7px;border-top:1px solid #e9e9ef;font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:#8a8a95}
.krl-pools.krl-pools.krl-pools tbody tr:first-child th{padding-top:16px;border-top:0}
.krl-pools.krl-pools.krl-pools .krl-v td{padding:0 24px 0 0}
.krl-pools.krl-pools.krl-pools .krl-v td:last-child{padding-right:0}
.krl-pools.krl-pools.krl-pools .krl-p{display:none}
@container (max-width:560px){
.krl-pools.krl-pools.krl-pools thead{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.krl-pools.krl-pools.krl-pools table,.krl-pools.krl-pools.krl-pools tbody,.krl-pools.krl-pools.krl-pools tr,.krl-pools.krl-pools.krl-pools th,.krl-pools.krl-pools.krl-pools td{display:block;width:auto}
.krl-pools.krl-pools.krl-pools .krl-g th{padding:20px 0 10px}
.krl-pools.krl-pools.krl-pools tbody tr:first-child th{padding-top:0}
.krl-pools.krl-pools.krl-pools .krl-v td{padding:0 0 12px}
.krl-pools.krl-pools.krl-pools .krl-v td:last-child{padding-bottom:0}
.krl-pools.krl-pools.krl-pools .krl-p{display:block;margin-bottom:1px;font-size:12px;font-weight:600;color:#16161a}
}
</style>
<div class="krl-pools">
<table>
<thead>
<tr>
<th scope="col">Lucky Draw<span class="krl-s">Pool 1</span></th>
<th scope="col">Trading Carnival<span class="krl-s">Pool 2</span></th>
</tr>
</thead>
<tbody>
<tr class="krl-g"><th colspan="2" scope="colgroup">Pool size</th></tr>
<tr class="krl-v">
<td><span class="krl-p">Lucky Draw</span><span class="krl-n">30,000 KRL</span></td>
<td><span class="krl-p">Trading Carnival</span><span class="krl-n">129,363 KRL</span></td>
</tr>
<tr class="krl-g"><th colspan="2" scope="colgroup">Minimum to qualify</th></tr>
<tr class="krl-v">
<td><span class="krl-p">Lucky Draw</span><span class="krl-n">$250</span> spot trading volume in KRL</td>
<td><span class="krl-p">Trading Carnival</span><span class="krl-n">$600</span> spot trading volume in KRL/USDT</td>
</tr>
<tr class="krl-g"><th colspan="2" scope="colgroup">How rewards are decided</th></tr>
<tr class="krl-v">
<td><span class="krl-p">Lucky Draw</span>Draw among qualified users</td>
<td><span class="krl-p">Trading Carnival</span>Pro-rata share of total adjusted volume</td>
</tr>
<tr class="krl-g"><th colspan="2" scope="colgroup">Multipliers</th></tr>
<tr class="krl-v">
<td><span class="krl-p">Lucky Draw</span>2x for new users, 2x for inviting 3+ verified new users, stackable up to 4x</td>
<td><span class="krl-p">Trading Carnival</span>KRL/USDT counts 2x, plus boosts for KCS loyalty tiers and GemSlot loyal users</td>
</tr>
<tr class="krl-g"><th colspan="2" scope="colgroup">Per-user cap</th></tr>
<tr class="krl-v">
<td><span class="krl-p">Lucky Draw</span>KuCoin estimates <span class="krl-n">30 to 120 KRL</span> if allocated</td>
<td><span class="krl-p">Trading Carnival</span><span class="krl-n">4,000 KRL</span></td>
</tr>
</tbody>
</table>
</div><!--kg-card-end: html--><hr><h2 id="campaign-details-at-a-glance">Campaign details at a glance</h2><!--kg-card-begin: html--><style>
.krl-facts.krl-facts.krl-facts{box-sizing:border-box;container-type:inline-size;display:block;margin:2.25rem 0;padding:0;border:0;background:none;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;font-size:15px;font-style:normal;font-weight:400;line-height:1.55;letter-spacing:normal;word-spacing:normal;text-align:left;text-transform:none;text-indent:0;white-space:normal;color:#16161a;-webkit-text-size-adjust:100%}
.krl-facts.krl-facts.krl-facts *,.krl-facts.krl-facts.krl-facts *::before,.krl-facts.krl-facts.krl-facts *::after{box-sizing:border-box;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;font-style:normal;font-variant:normal;text-shadow:none;float:none}
.krl-facts.krl-facts.krl-facts table{width:100%;max-width:none;min-width:0;margin:0;padding:0;border:0;border-collapse:collapse;border-spacing:0;background:none;font:inherit;color:inherit;letter-spacing:normal;word-spacing:normal;text-transform:none;white-space:normal}
.krl-facts.krl-facts.krl-facts thead,.krl-facts.krl-facts.krl-facts tbody,.krl-facts.krl-facts.krl-facts tr{margin:0;padding:0;border:0;background:none;font:inherit;color:inherit}
.krl-facts.krl-facts.krl-facts th,.krl-facts.krl-facts.krl-facts td{margin:0;border:0;background:none;color:inherit;font:inherit;font-weight:400;text-align:left;vertical-align:top;letter-spacing:normal;word-spacing:normal;text-transform:none;text-indent:0;white-space:normal}
.krl-facts.krl-facts.krl-facts span{margin:0;padding:0;border:0;background:none;font:inherit;color:inherit}
.krl-facts.krl-facts.krl-facts .krl-n{font-variant-numeric:tabular-nums;white-space:nowrap}
.krl-facts.krl-facts.krl-facts th,.krl-facts.krl-facts.krl-facts td{padding:14px 0}
.krl-facts.krl-facts.krl-facts tbody th{width:38%;padding-right:24px;font-weight:400;color:#6e6e78}
.krl-facts.krl-facts.krl-facts tbody td,.krl-facts.krl-facts.krl-facts tbody th{border-top:1px solid #e9e9ef}
.krl-facts.krl-facts.krl-facts tbody tr:first-child td,.krl-facts.krl-facts.krl-facts tbody tr:first-child th{padding-top:0;border-top:0}
.krl-facts.krl-facts.krl-facts tbody tr:last-child td,.krl-facts.krl-facts.krl-facts tbody tr:last-child th{padding-bottom:0}
.krl-facts.krl-facts.krl-facts .krl-note{margin:18px 0 0;padding:0;border:0;background:none;font:inherit;font-size:13px;line-height:1.5;color:#8a8a95}
.krl-facts.krl-facts.krl-facts .krl-note a{color:inherit;background:none;text-decoration:underline;text-underline-offset:2px}
@container (max-width:520px){
.krl-facts.krl-facts.krl-facts table,.krl-facts.krl-facts.krl-facts tbody,.krl-facts.krl-facts.krl-facts tr,.krl-facts.krl-facts.krl-facts th,.krl-facts.krl-facts.krl-facts td{display:block;width:auto}
.krl-facts.krl-facts.krl-facts tbody tr{padding:14px 0;border-top:1px solid #e9e9ef}
.krl-facts.krl-facts.krl-facts tbody tr:first-child{padding-top:0;border-top:0}
.krl-facts.krl-facts.krl-facts tbody tr:last-child{padding-bottom:0}
.krl-facts.krl-facts.krl-facts tbody th,.krl-facts.krl-facts.krl-facts tbody td{width:auto;padding:0;border-top:0}
.krl-facts.krl-facts.krl-facts tbody th{margin-bottom:3px;font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:#8a8a95}
}
</style>
<div class="krl-facts">
<table>
<tbody>
<tr><th scope="row">Token</th><td>KRL (Kryll)</td></tr>
<tr><th scope="row">Exchange</th><td>KuCoin</td></tr>
<tr><th scope="row">Campaign period</th><td><span class="krl-n">Sept 10, 2026 08:00 UTC</span> to <span class="krl-n">Sept 17, 2026 08:00 UTC</span></td></tr>
<tr><th scope="row">Total prize pool</th><td><span class="krl-n">159,363 KRL</span></td></tr>
<tr><th scope="row">Qualifying pair (entry)</th><td>KRL/USDT (spot)</td></tr>
<tr><th scope="row">Additional counting pairs (Pool 2)</th><td>XRP/USDT, KCS/USDT</td></tr>
<tr><th scope="row">KYC</th><td>Required</td></tr>
<tr><th scope="row">Sub-accounts</th><td>Not eligible</td></tr>
<tr><th scope="row">Excluded accounts</th><td>Market maker and institutional accounts</td></tr>
<tr><th scope="row">Reward delivery</th><td>Funding Account, within 2 business days of campaign end</td></tr>
<tr><th scope="row">Appeal window</th><td>2 months after the campaign ends</td></tr>
</tbody>
</table>
<p class="krl-note">KuCoin&rsquo;s GemSlot hub values the pool at roughly $21,300 at the time of writing. That figure moves with the KRL price, so check the <a href="https://www.kucoin.com/gemslot/KRL_1?appNeedLang=true" rel="noopener">live campaign page</a> for the current number.</p>
</div><!--kg-card-end: html--><hr><h2 id="how-to-join-the-krl-gemslot-campaign">How to join the KRL GemSlot campaign</h2><h3 id="step-1-verify-your-kucoin-account">Step 1: Verify your KuCoin account</h3><p>KYC verification is mandatory. Accounts tied to the same identity count as a single participant, and <strong>sub-accounts are not eligible</strong>, so trade from your master account.</p><h3 id="step-2-enroll-in-the-campaign">Step 2: Enroll in the campaign</h3><p>Open the <a href="https://www.kucoin.com/gemslot/KRL_1?appNeedLang=true">KRL GemSlot page</a> and hit <strong>Join Now</strong>. KuCoin states that once you successfully enroll, you automatically take part in both reward pools. The announcement does not specify how volume traded before enrolling is treated, so enroll before you start trading.</p><h3 id="step-3-trade-krl-usdt-spot">Step 3: Trade KRL/USDT spot</h3><p>KuCoin counts trading volume as <strong>(buys + sells) x price</strong>, which means a round trip counts twice. Clear <strong>$250</strong> to enter the Lucky Draw and <strong>$600</strong> to unlock the Trading Carnival.</p><p><a href="https://www.kucoin.com/trade/KRL-USDT">Trade KRL/USDT on KuCoin →</a></p><h3 id="step-4-stack-your-multipliers">Step 4: Stack your multipliers</h3><ul><li><strong>New to KuCoin?</strong> Registering and completing KYC during the campaign window earns you <strong>2x rewards</strong> in the Lucky Draw.</li><li><strong>Bringing friends?</strong> Successfully inviting <strong>at least 3 new users</strong> who register and complete KYC earns another <strong>2x</strong>. KuCoin confirms these stack: <em>"The invitation bonus and the new user reward multiplier are cumulative and may be applied simultaneously."</em></li><li><strong>Holding KCS?</strong> KCS loyalty tiers and GemSlot loyal-user status add further trading-volume boosts in the Trading Carnival. KuCoin's announcement for this campaign does not publish the exact percentages, so treat them as a bonus rather than something to plan around.</li></ul><h3 id="step-5-collect">Step 5: Collect</h3><p>Rewards are credited to eligible users' <strong>Funding Accounts within 2 business days</strong> after the campaign ends on September 17.</p><hr><h2 id="how-trading-carnival-rewards-are-calculated">How Trading Carnival rewards are calculated</h2><p>KuCoin publishes the formula in full. Your adjusted volume is:</p><pre><code>Total Trading Volume = ((KRL/USDT volume x 2) + XRP/USDT volume + KCS/USDT volume) x Boost Multiplier</code></pre><p>And your reward is your slice of the pot:</p><pre><code>Reward = (Your Total Trading Volume ÷ Total Trading Volume of All Users) x 159,363 KRL</code></pre><p>Two things follow from this. First, <strong>KRL/USDT is worth double any other pair</strong>, so it is the efficient way to build volume. Second, because allocation is proportional, your payout depends on what everyone else does. The <strong>4,000 KRL per-user cap</strong> is a ceiling, not a target.</p><p><strong>Note:</strong> the formula as published by KuCoin references the full 159,363 KRL figure, while the Trading Carnival pool is stated at 129,363 KRL. KuCoin's <a href="https://www.kucoin.com/announcement/en-kryll-krl-gemslot-campaign-trade-to-share-a-159363-krl-prize-pool">official announcement</a> and its <a href="https://www.kucoin.com/support/47185419968025">GemSlot Terms &amp; Conditions</a> are the binding reference for all campaign rules.</p><hr><h2 id="who-is-eligible-and-who-isn-t">Who is eligible, and who isn't</h2><p><strong>Eligible:</strong> any KYC-verified KuCoin user trading from their master account who enrolls in the campaign and meets the volume thresholds.</p><p><strong>Not eligible:</strong></p><ul><li>Sub-accounts</li><li>Market maker accounts</li><li>Institutional accounts</li><li>Any account KuCoin identifies as engaging in wash trading, self-dealing, bulk registration or market manipulation</li></ul><p>KuCoin reserves the right to modify or cancel the campaign, and the final interpretation of the rules is theirs. If you dispute a result, the appeal window closes <strong>two months after the campaign ends</strong>.</p><hr><h2 id="what-krl-actually-does-the-part-the-announcement-doesn-t-cover">What KRL actually does: the part the announcement doesn't cover</h2><p>Winning free tokens is fine. Knowing what they're for is better.</p><p><strong>KRL is the currency of the Kryll marketplace</strong>, the store inside KryllOS where the community will publish trading strategies, custom blocks, AI skills and apps. Every sale in that store is designed to split three ways:</p><ul><li><strong>70% to the creator</strong> who published the bot, block or app</li><li><strong>20% to KRL stakers</strong>, paid in KRL out of marketplace volume</li><li><strong>10% to Kryll</strong>, funding development and infrastructure</li></ul><p>That 20% is <strong>real yield</strong>. It comes out of what people actually spend in the store, not out of newly minted tokens. KRL's supply has been <strong>fixed at 49,417,348 since 2018</strong>, there is no minting function, and no new KRL is ever issued to pay staking rewards. Roughly 39.9M KRL circulates today. The token is ERC-20, live on <strong>Ethereum, Base, Arbitrum and Optimism</strong>.</p><p>Worth being straight about the timeline: the marketplace and KRL staking are still in development, not shipped. The split above is the published design, not a live mechanism you can earn from this week.</p><p><a href="https://blog.kryll.io/krl-kryllos-utility-tokenomics/">Read the full KRL utility and tokenomics breakdown →</a></p><hr><h2 id="and-kryllos-is-the-thing-you-ll-spend-it-in">And KryllOS is the thing you'll spend it in</h2><p><strong><a href="https://os.kryll.io/">KryllOS</a> is automated trading you actually own.</strong> It's a trading desktop that runs on your machine, not a website you log into, not a cloud service holding your keys.</p><p><strong>Free and open source.</strong> No subscription, no trading fees, no premium tier. <a href="https://blog.kryll.io/kryllos-truly-free/">KryllOS is genuinely free</a>, and the reasons are structural rather than promotional.</p><p><strong>Self-hosted, so your keys stay yours.</strong> You generate the API key on your exchange, you paste it into the app, and it stays on your disk. It never touches a Kryll server, because there isn't one in the path. <a href="https://blog.kryll.io/self-hosted-trading-bot-api-key-security/">Here's why that matters for API key security →</a></p><p><strong>No-code by design.</strong> Drag blocks onto a canvas to compose a strategy, with 30+ native blocks covering orders, indicators, market conditions, logic and variables. Or describe what you want in plain language and let the AI assemble it block by block, then read it, edit it and own it.</p><p><strong>Backtest before you risk anything.</strong> Replay a strategy against real market history, run several backtests in parallel, and compare results. And with 1-click VPS deploy, your strategies run 24/7 with your computer switched off. <a href="https://blog.kryll.io/kryllos-installation-guide/">Installation guide →</a></p><p>Live today: the Strategy Editor, Backtest Engine, Multi-Backtest, File Manager, 1-Click VPS Deploy and the built-in KRL Wallet. In development: live and paper trading, futures, portfolio tracking, the <a href="https://blog.kryll.io/kryllos-marketplace-automated-trading/">Marketplace</a>, the plugin system, the Kryll AI Agent, and KRL staking with real yield.</p><p><strong>On exchanges:</strong> Binance (spot and futures), Coinbase (spot) and Hyperliquid (perpetuals) are wired in today. <strong>KuCoin is on the roadmap</strong>, alongside Gate.io and Kraken, so if you're joining this campaign from a KuCoin account, that connection is coming.</p><p><strong><a href="https://os.kryll.io/">Get access to KryllOS →</a></strong></p><hr><h2 id="frequently-asked-questions">Frequently asked questions</h2><h3 id="what-is-the-kryll-gemslot-campaign-on-kucoin">What is the Kryll GemSlot campaign on KuCoin? </h3><p>It's a seven-day KuCoin trading campaign running September 10 to 17, 2026, distributing a 159,363 KRL prize pool across two pools, a 30,000 KRL Lucky Draw and a 129,363 KRL Trading Carnival, to users who trade KRL on KuCoin spot markets.</p><h3 id="when-does-the-krl-gemslot-campaign-start-and-end">When does the KRL GemSlot campaign start and end? </h3><p>It runs from 08:00 UTC on September 10, 2026 to 08:00 UTC on September 17, 2026.</p><h3 id="how-much-do-i-need-to-trade-to-qualify-for-krl-rewards">How much do I need to trade to qualify for KRL rewards? </h3><p>$250 in KRL spot trading volume for the Lucky Draw, and $600 in KRL/USDT spot trading volume for the Trading Carnival. Volume is counted as (buys + sells) x price, so a round trip counts twice.</p><h3 id="what-is-the-difference-between-lucky-draw-and-trading-carnival">What is the difference between Lucky Draw and Trading Carnival </h3><p>Lucky Draw is a draw among all qualified participants, with 2x multipliers for new users and for inviting three or more verified new users. Trading Carnival distributes rewards proportionally to your adjusted trading volume, capped at 4,000 KRL per user.</p><h3 id="what-are-the-rules-for-calculating-trading-volume">What are the rules for calculating trading volume? </h3><p>Trading Volume = (buys + sells) x price. For the Trading Carnival, your total is ((KRL/USDT volume x 2) + XRP/USDT volume + KCS/USDT volume) x your boost multiplier.</p><h3 id="which-trading-pairs-count-toward-the-campaign">Which trading pairs count toward the campaign? </h3><p>KRL/USDT is the qualifying pair for both pools and counts double in the Trading Carnival. Once you've cleared the $600 KRL/USDT threshold, XRP/USDT and KCS/USDT volume also counts toward your Trading Carnival share.</p><h3 id="is-there-a-cap-on-rewards">Is there a cap on rewards? </h3><p>Yes, 4,000 KRL per user in the Trading Carnival. KuCoin estimates Lucky Draw allocations in the 30 to 120 KRL range.</p><h3 id="can-i-participate-using-a-sub-account">Can I participate using a sub-account? </h3><p>No. Sub-accounts are not eligible, and accounts associated with the same identity count as a single participant. Trade from your master account.</p><h3 id="do-i-need-to-complete-kyc-to-join">Do I need to complete KYC to join? </h3><p>Yes. KYC verification is mandatory for all participants, and new users must register and complete full KYC during the campaign period to qualify for the 2x new-user multiplier.</p><h3 id="how-long-does-it-take-to-receive-token-rewards">How long does it take to receive token rewards? </h3><p>Rewards are distributed to eligible users' KuCoin Funding Accounts within 2 business days after the campaign ends.</p><h3 id="can-i-take-part-in-more-than-one-gemslot-campaign-at-the-same-time">Can I take part in more than one GemSlot campaign at the same time? </h3><p>Yes. When multiple GemSlot campaigns are running, you can participate in each of them under its own rules.</p><h3 id="what-can-i-do-with-krl-after-the-campaign">What can I do with KRL after the campaign? </h3><p>KRL is the currency of the Kryll marketplace inside KryllOS, the store where the community will publish trading strategies, custom blocks, AI skills and apps. The published design redistributes 20% of every marketplace sale to KRL stakers as real yield. The marketplace and staking are still in development.</p><h3 id="is-kryllos-free-to-use">Is KryllOS free to use? </h3><p>Yes. KryllOS is free and open source, with no subscription and no trading fees, and it runs on your own machine.</p><h3 id="does-kryllos-support-kucoin">Does KryllOS support KuCoin?</h3><p>Not yet. Binance, Coinbase and Hyperliquid are live today; KuCoin, Gate.io and Kraken are on the roadmap.</p><hr><p><em>Campaign terms are set and administered by KuCoin, and KuCoin's official announcement and Terms &amp; Conditions govern in the event of any discrepancy. This article is informational and is not financial advice, an offer, or a recommendation to buy, sell or trade any digital asset. Trading cryptocurrencies carries risk, including the risk of total loss. Evaluate your own circumstances and risk tolerance before participating.</em></p><hr><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="Kryll on KuCoin GemSlot: Trade KRL to Share a 159,363 KRL Prize Pool" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Rejoindre la liste d'attente</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[KryllOS 0.5.41 update: a real terminal, right inside the app]]></title><description><![CDATA[The KryllOS 0.5.41 update brings a real terminal right inside the app. Your server's shell, one click away.]]></description><link>https://blog.kryll.io/kryllos-0-5-41-update-built-in-terminal/</link><guid isPermaLink="false">6a7b2dd7d9e60f88cb3b87aa</guid><category><![CDATA[announcements]]></category><category><![CDATA[en]]></category><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Tue, 11 Aug 2026 14:29:33 GMT</pubDate><media:content url="https://blog.kryll.io/content/images/2026/08/thumbnail.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/08/thumbnail-rounded.png" class="kg-image" alt="KryllOS 0.5.41 update: a real terminal, right inside the app"></figure><img src="https://blog.kryll.io/content/images/2026/08/thumbnail.png" alt="KryllOS 0.5.41 update: a real terminal, right inside the app"><p>With KryllOS, you've never needed a command line. You build your strategies, you backtest them, you run them, all from the interface, and that's exactly how it should be. Most people will never go any further, and they're right not to.</p><p>But there's the other crowd. The folks who like being hands-on with their machine, peeking under the hood, running their own stuff, basically tinkering. For them, there was a wall: their KryllOS runs on a VPS, and getting to that VPS meant leaving the app and wrestling with an SSH client, a key, an address, a port.</p><p>0.5.41 cuts straight to the prompt. KryllOS ships a real terminal, and it opens your VPS's shell right inside the app. If you're the type who's been itching for this, the rest is for you.</p><hr><h2 id="a-real-terminal-your-vps-s-shell">A real terminal, your VPS's shell</h2><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/08/kryllos-terminal.png" class="kg-image" alt="KryllOS 0.5.41 update: a real terminal, right inside the app"></figure><p>Let's be clear about what this is, because that's the whole point. What you type in this terminal runs on your VPS, in a real shell, opened as your user, right in your KryllOS working folder.</p><p>The difference is that there's nothing for you to connect. Normally, opening a command line on your VPS calls for an SSH client, a key you have to keep safe, an address and a port to remember. KryllOS already holds that secure connection to your server, and the terminal rides on it. You open the <code>Terminal</code> app, and you're in. Nothing to install, nothing to dig up, nothing to mistype.</p><p><strong>Where to find it</strong></p><ul><li>Open the <code>Terminal</code> app, alongside your other KryllOS apps</li><li>It opens on your VPS's shell, in your working folder: type <code>ls</code> to see your strategies</li></ul><hr><h2 id="it-behaves-like-your-real-terminal">It behaves like your real terminal</h2><p>The fastest way to convince yourself is to type a command. <code>pm2 list</code>, and your KryllOS engine's status shows up in a color-coded table. <code>top</code>, and you get the full-screen system monitor refreshing on its own. <code>nano</code>, and a real text editor opens right in the window.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/08/kryllos-terminal-pm2-list.png" class="kg-image" alt="KryllOS 0.5.41 update: a real terminal, right inside the app"></figure><p>And it has all the muscle memory you know: <code>Tab</code> completes your paths, the up arrow brings back your last command, <code>Ctrl+R</code> digs through your history, and that history remembers you from one session to the next. If you already live in a terminal, you'll feel right at home.</p><hr><h2 id="watch-your-engine-live">Watch your engine, live</h2><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/08/pm2-logs-kryllos.png" class="kg-image" alt="KryllOS 0.5.41 update: a real terminal, right inside the app"></figure><p>Your bot runs on its own, and most of the time you don't need to watch it. But the day you want to understand what it's up to, out of curiosity or because something looks off, the terminal shows you live. Type <code>pm2 logs kryllos</code>, and your engine's activity starts scrolling by: the strategies running, the events, any errors, the moment they happen. Do something in the app, and you watch the lines write themselves right in front of you. <code>Ctrl+C</code> once you've seen what you came for.</p><hr><h2 id="make-it-your-playground">Make it your playground</h2><p>It's a real shell, so you do whatever you want with it. You set up aliases to park your go-to commands behind a short name. You write your own little script, drop it into your KryllOS space, run it, and it shows up in your file manager like everything else. Anything you'd do on any Linux server, you can do right here, without leaving the app. Maybe that's the real luxury: your server becomes a place you get your hands into again, not a sealed box.</p><h3 id="good-to-know">Good to know</h3><p>A couple of things before you dive in. The terminal opens one window at a time, no tabs. If you close it, whatever was running inside stops with it: to launch something that should keep going without you, put <code>nohup</code> in front of your command and an <code>&amp;</code> at the end. It's a normal shell, not an admin account: commands that touch the system will ask you for a password. And keep your SSH access on hand: this terminal is served by KryllOS itself, so the day the app stops responding, SSH is how you'll go restart it. A fantastic shortcut for day-to-day use, not your only way in.</p><hr><p>You could go your whole life without ever opening this terminal, and your KryllOS would run just the same. The interface is enough to keep your strategies going, and it will. But if the urge takes you to poke around, your VPS is no longer a distant machine behind a wall of SSH: it's a server you open with one click, where you can step in, look around, tinker, like it's home.</p><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="KryllOS 0.5.41 update: a real terminal, right inside the app" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Join the Waitlist</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[KryllOS 0.5.38 update: your chart and backtest results become companion apps]]></title><description><![CDATA[KryllOS 0.5.38 pops your chart and backtest results out into synced companion apps. Set up your workspace the way you like, on one screen or several.]]></description><link>https://blog.kryll.io/kryllos-0-5-38-update-your-chart-and-backtest-results-become-companion-apps/</link><guid isPermaLink="false">6a747d2bd9e60f88cb3b8748</guid><category><![CDATA[announcements]]></category><category><![CDATA[en]]></category><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Thu, 06 Aug 2026 12:31:01 GMT</pubDate><media:content url="https://blog.kryll.io/content/images/2026/08/Frame-1000001798-2.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/08/Frame-1000001798.png" class="kg-image" alt="KryllOS 0.5.38 update: your chart and backtest results become companion apps"></figure><img src="https://blog.kryll.io/content/images/2026/08/Frame-1000001798-2.png" alt="KryllOS 0.5.38 update: your chart and backtest results become companion apps"><p>Everyone trades their own way, and above all, everyone trades on their own hardware. A laptop off in the corner of a table, one ultra-wide screen, or two or three monitors lined up on a desk. Your workspace is yours, and you like to set it up however feels right.</p><p>Until now, the KryllOS editor kept to a single window. One solid block, with its tabs, its chart folded up at the top, and its backtest results boxed into the same frame. Whether you were on a 13-inch screen or had three monitors to work with, all that room around it went to waste.</p><p>KryllOS 0.5.38 opens things up. Your chart and your backtest results can now leave the editor as companion apps: real standalone windows you arrange however you want. You're no longer stuck with one fixed layout, you build your own. And the more screen space you have, the more you'll get out of it ;)</p><hr><h2 id="detach-your-chart-and-results">Detach your chart and results</h2><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/08/Frame-1000001797-1.png" class="kg-image" alt="KryllOS 0.5.38 update: your chart and backtest results become companion apps"></figure><p>It all starts with one icon. A single click, and both windows detach at once: the editor closes its inner panels and goes full screen, your chart shoots out to one side, your backtest results to the other. Two windows in their own right, all yours.</p><p>From there, you're in charge. You move them, resize them, drop them wherever works for you: side by side on a big screen, or straight onto a second monitor if you have one. Editor on one side, your chart and results on the other, everything in view at once.</p><hr><h2 id="switch-strategies-your-windows-follow">Switch strategies, your windows follow</h2><!--kg-card-begin: html--><div id="kryll-compare-9f3a" style="display:block;margin:0;padding:0;border:0;max-width:100%"><img src="https://blog.kryll.io/content/images/2026/08/kryllos-editor-companion-apps-odayakawa-2.png" alt="KryllOS 0.5.38 update: your chart and backtest results become companion apps" style="display:block;width:100%;height:auto;border-radius:14px"></div>
<script>
(function () {
  "use strict";

  var CFG = {
    hostId: "kryll-compare-9f3a",
    leftSrc: "https://blog.kryll.io/content/images/2026/08/kryllos-editor-companion-apps-odayakawa-2.png",
    leftAlt: "KryllOS, stratégie Odayakawa : éditeur, graphique BNB/USDT et résultats de backtest",
    leftLabel: "Odayakawa",
    rightSrc: "https://blog.kryll.io/content/images/2026/08/kryllos-editor-companion-apps-smart-DCA-2.png",
    rightAlt: "KryllOS, stratégie Smart DCA : éditeur, graphique BTC/USDT et résultats de backtest",
    rightLabel: "Smart DCA",
    ratio: "1920 / 1054",
    minPos: 6,
    maxPos: 94,
    travelMs: 2250,
    holdMs: 400,
    resumeMs: 2500,
    dragThreshold: 8,
    accent: "#a78bfa",
    radius: "14px"
  };

  var SPAN    = CFG.maxPos - CFG.minPos;
  var LEG     = CFG.travelMs + CFG.holdMs;
  var CYCLE   = LEG * 2;
  var SAMPLES = 40;

  function ease(x) { return 0.5 - 0.5 * Math.cos(Math.PI * x); }

  function posAt(t) {
    t = ((t % CYCLE) + CYCLE) % CYCLE;
    if (t < CFG.travelMs) return CFG.minPos + SPAN * ease(t / CFG.travelMs);
    if (t < LEG) return CFG.maxPos;
    var u = t - LEG;
    if (u < CFG.travelMs) return CFG.maxPos - SPAN * ease(u / CFG.travelMs);
    return CFG.minPos;
  }

  function timeForPos(p, backward) {
    var x = Math.min(1, Math.max(0, (p - CFG.minPos) / SPAN));
    var t = Math.acos(1 - 2 * x) / Math.PI * CFG.travelMs;
    return backward ? (LEG + CFG.travelMs - t) : t;
  }

  function timeline() {
    var ts = [], i;
    for (i = 0; i <= SAMPLES; i++) ts.push(CFG.travelMs * i / SAMPLES);
    ts.push(LEG);
    for (i = 1; i <= SAMPLES; i++) ts.push(LEG + CFG.travelMs * i / SAMPLES);
    ts.push(CYCLE);
    return ts;
  }

  function template() {
    return '' +
    '<style>' +
      ':host{all:initial;display:block;contain:layout style;max-width:100%}' +
      '*{box-sizing:border-box;margin:0;padding:0}' +
      '.frame{' +
        'position:relative;display:block;width:100%;overflow:hidden;' +
        'aspect-ratio:' + CFG.ratio + ';' +
        'border-radius:' + CFG.radius + ';' +
        'background:#0b0714;cursor:ew-resize;touch-action:pan-y;' +
        'user-select:none;-webkit-user-select:none;' +
        'font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;' +
        '-webkit-tap-highlight-color:transparent;' +
        'box-shadow:0 1px 2px rgba(0,0,0,.28),0 12px 32px -12px rgba(0,0,0,.5);' +
        'outline:none' +
      '}' +
      '.frame:focus-visible{box-shadow:0 0 0 3px ' + CFG.accent + '66,0 12px 32px -12px rgba(0,0,0,.5)}' +
      '.layer{position:absolute;top:0;left:0;width:100%;height:100%}' +
      '.layer img{' +
        'display:block;width:100%;height:100%;object-fit:cover;' +
        'border:0;border-radius:0;max-width:none;' +
        'user-select:none;-webkit-user-drag:none;pointer-events:none' +
      '}' +
      '.mask{overflow:hidden;will-change:transform}' +
      '.mask img{will-change:transform}' +
      '.rail{' +
        'position:absolute;top:0;left:0;width:100%;height:100%;' +
        'will-change:transform;pointer-events:none' +
      '}' +
      '.line{' +
        'position:absolute;top:0;bottom:0;left:0;width:2px;margin-left:-1px;' +
        'background:linear-gradient(180deg,' +
          'rgba(167,139,250,0) 0%,' + CFG.accent + ' 10%,' + CFG.accent + ' 90%,rgba(167,139,250,0) 100%);' +
        'box-shadow:0 0 12px ' + CFG.accent + '80' +
      '}' +
      '.grip{' +
        'position:absolute;top:50%;left:0;width:44px;height:44px;margin:-22px 0 0 -22px;' +
        'border-radius:50%;display:flex;align-items:center;justify-content:center;gap:1px;' +
        'background:rgba(14,10,26,.92);border:2px solid ' + CFG.accent + ';' +
        'box-shadow:0 0 0 4px rgba(167,139,250,.14),0 4px 14px rgba(0,0,0,.45)' +
      '}' +
      '.grip svg{display:block;width:13px;height:13px;fill:none;' +
        'stroke:#efeaff;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}' +
      '.tag{' +
        'position:absolute;top:14px;padding:5px 11px;border-radius:999px;' +
        'font-size:11px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;' +
        'line-height:1.4;white-space:nowrap;color:#efeaff;' +
        'background:rgba(10,7,20,.78);border:1px solid rgba(167,139,250,.38);' +
        'pointer-events:none;will-change:opacity' +
      '}' +
      '.tag-l{left:14px}' +
      '.tag-r{right:14px}' +
      '@media (max-width:520px){' +
        '.grip{width:36px;height:36px;margin:-18px 0 0 -18px}.grip svg{width:11px;height:11px}' +
        '.tag{top:9px;font-size:9px;padding:4px 8px}.tag-l{left:9px}.tag-r{right:9px}' +
      '}' +
    '</style>' +
    '<div class="frame" role="slider" tabindex="0"' +
        ' aria-label="Comparer ' + CFG.leftLabel + ' et ' + CFG.rightLabel + '"' +
        ' aria-valuemin="' + CFG.minPos + '" aria-valuemax="' + CFG.maxPos + '" aria-valuenow="' + CFG.minPos + '"' +
        ' aria-valuetext="' + CFG.leftLabel + ' à ' + CFG.minPos + ' %">' +
      '<div class="layer"><img src="' + CFG.rightSrc + '" alt="' + CFG.rightAlt + '" loading="lazy" decoding="async"></div>' +
      '<div class="layer mask"><img src="' + CFG.leftSrc + '" alt="' + CFG.leftAlt + '" loading="lazy" decoding="async"></div>' +
      '<span class="tag tag-l">' + CFG.leftLabel + '</span>' +
      '<span class="tag tag-r">' + CFG.rightLabel + '</span>' +
      '<div class="rail">' +
        '<div class="line"></div>' +
        '<div class="grip">' +
          '<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M15 5 8 12l7 7"/></svg>' +
          '<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9 5l7 7-7 7"/></svg>' +
        '</div>' +
      '</div>' +
    '</div>';
  }

  function init(host) {
    if (!host || host.getAttribute("data-kc-ready")) return;
    host.setAttribute("data-kc-ready", "1");
    if (!host.attachShadow) return;

    var root = host.attachShadow({ mode: "open" });
    root.innerHTML = template();

    var frame   = root.querySelector(".frame");
    var mask    = root.querySelector(".mask");
    var maskImg = root.querySelector(".mask img");
    var rail    = root.querySelector(".rail");
    var tagL    = root.querySelector(".tag-l");
    var tagR    = root.querySelector(".tag-r");

    var canAnimate = typeof frame.animate === "function";
    var anims = [];
    var dragging = false, visible = true, backward = false;
    var resumeTimer = null, lastAria = -1;
    var staticPos = CFG.minPos, dragFrom = 0;
    var activeId = null, armed = false, startX = 0, startY = 0;

    var reduceMQ = window.matchMedia
      ? window.matchMedia("(prefers-reduced-motion: reduce)")
      : { matches: false, addEventListener: null };

    function tMask(p)    { return "translate3d(" + (-(100 - p)).toFixed(3) + "%,0,0)"; }
    function tMaskImg(p) { return "translate3d(" +  (100 - p).toFixed(3) + "%,0,0)"; }
    function tRail(p)    { return "translate3d(" +  p.toFixed(3) + "%,0,0)"; }
    function opL(p)      { return p > 16 ? 1 : Math.max(0, (p - 3) / 13); }
    function opR(p)      { return p < 84 ? 1 : Math.max(0, (97 - p) / 13); }

    function paint(p) {
      mask.style.transform    = tMask(p);
      maskImg.style.transform = tMaskImg(p);
      rail.style.transform    = tRail(p);
      tagL.style.opacity      = opL(p);
      tagR.style.opacity      = opR(p);
    }

    function announce(p) {
      var r = Math.round(p);
      if (r === lastAria) return;
      lastAria = r;
      frame.setAttribute("aria-valuenow", String(r));
      frame.setAttribute("aria-valuetext", CFG.leftLabel + " à " + r + " %");
    }

    function build(startTime, play) {
      var ts = timeline();
      var kMask = [], kImg = [], kRail = [], kL = [], kR = [];
      for (var i = 0; i < ts.length; i++) {
        var off = ts[i] / CYCLE, p = posAt(ts[i]);
        kMask.push({ offset: off, transform: tMask(p) });
        kImg.push({ offset: off, transform: tMaskImg(p) });
        kRail.push({ offset: off, transform: tRail(p) });
        kL.push({ offset: off, opacity: opL(p) });
        kR.push({ offset: off, opacity: opR(p) });
      }
      var timing = { duration: CYCLE, iterations: Infinity, easing: "linear" };
      anims = [
        mask.animate(kMask, timing),
        maskImg.animate(kImg, timing),
        rail.animate(kRail, timing),
        tagL.animate(kL, timing),
        tagR.animate(kR, timing)
      ];
      for (var j = 0; j < anims.length; j++) {
        anims[j].currentTime = startTime;
        if (!play) anims[j].pause();
      }
    }

    function currentPos() {
      return anims.length ? posAt(Number(anims[0].currentTime) || 0) : CFG.minPos;
    }

    function sync() {
      if (!anims.length) return;
      var run = visible && !document.hidden && !dragging
             && resumeTimer === null && !reduceMQ.matches;
      for (var i = 0; i < anims.length; i++) {
        if (run) anims[i].play(); else anims[i].pause();
      }
    }

    function holdThenResume() {
      if (resumeTimer !== null) clearTimeout(resumeTimer);
      resumeTimer = window.setTimeout(function () {
        resumeTimer = null;
        sync();
      }, CFG.resumeMs);
      sync();
    }

    function posFromEvent(e) {
      var r = frame.getBoundingClientRect();
      if (!r.width) return CFG.minPos;
      var p = ((e.clientX - r.left) / r.width) * 100;
      return Math.min(CFG.maxPos, Math.max(CFG.minPos, p));
    }

    function applyManual(p) {
      if (!canAnimate) { staticPos = p; paint(p); announce(p); return; }
      var t = timeForPos(p, backward);
      for (var i = 0; i < anims.length; i++) anims[i].currentTime = t;
      announce(p);
    }

    function beginDrag() {
      armed = false;
      dragging = true;
      dragFrom = canAnimate ? currentPos() : staticPos;
      sync();
    }

    frame.addEventListener("pointerdown", function (e) {
      if (e.button !== undefined && e.button !== 0) return;
      if (activeId !== null) return;
      activeId = e.pointerId;
      startX = e.clientX;
      startY = e.clientY;
      if (frame.setPointerCapture) { try { frame.setPointerCapture(e.pointerId); } catch (err) {} }
      if (e.pointerType === "touch") {
        armed = true;
      } else {
        beginDrag();
        applyManual(posFromEvent(e));
      }
    });

    frame.addEventListener("pointermove", function (e) {
      if (e.pointerId !== activeId) return;
      if (armed) {
        var dx = Math.abs(e.clientX - startX), dy = Math.abs(e.clientY - startY);
        if (dx < CFG.dragThreshold || dx <= dy) return;
        beginDrag();
      }
      if (!dragging) return;
      if (e.cancelable) e.preventDefault();
      var p = posFromEvent(e);
      if (Math.abs(p - dragFrom) > 0.5) { backward = p < dragFrom; dragFrom = p; }
      applyManual(p);
    });

    function endDrag(e) {
      if (e.pointerId !== activeId) return;
      activeId = null;
      if (frame.releasePointerCapture) { try { frame.releasePointerCapture(e.pointerId); } catch (err) {} }
      if (armed) { armed = false; return; }
      if (!dragging) return;
      dragging = false;
      holdThenResume();
    }
    frame.addEventListener("pointerup", endDrag);
    frame.addEventListener("pointercancel", endDrag);

    frame.addEventListener("keydown", function (e) {
      var step = e.shiftKey ? 10 : 3, from = canAnimate ? currentPos() : staticPos, next = null;
      if (e.key === "ArrowLeft")       next = from - step;
      else if (e.key === "ArrowRight") next = from + step;
      else if (e.key === "Home")       next = CFG.minPos;
      else if (e.key === "End")        next = CFG.maxPos;
      if (next === null) return;
      e.preventDefault();
      next = Math.min(CFG.maxPos, Math.max(CFG.minPos, next));
      backward = next < from;
      applyManual(next);
      holdThenResume();
    });

    if (window.IntersectionObserver) {
      new IntersectionObserver(function (entries) {
        visible = entries[entries.length - 1].isIntersecting;
        sync();
      }, { threshold: 0.05 }).observe(host);
    }

    document.addEventListener("visibilitychange", sync);

    if (reduceMQ.addEventListener) {
      reduceMQ.addEventListener("change", function () {
        if (reduceMQ.matches) applyManual(50);
        sync();
      });
    }

    if (!canAnimate) {
      staticPos = 50;
      paint(50);
      announce(50);
      return;
    }
    build(reduceMQ.matches ? timeForPos(50, false) : 0, false);
    announce(reduceMQ.matches ? 50 : CFG.minPos);
    sync();
  }

  function boot() {
    var list = document.querySelectorAll('[id="' + CFG.hostId + '"]');
    for (var i = 0; i < list.length; i++) init(list[i]);
  }

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", boot);
  } else {
    boot();
  }
})();
</script><!--kg-card-end: html--><p>Your detached windows stay wired to the editor: change something on one side and it updates on the other. But the real convenience kicks in when you switch strategies.</p><p>Your editor doesn't hold just one strategy: each tab is one. When you move from one tab to another, your whole setup follows all at once. The results window shows the backtest for the new strategy, the chart switches to the right curve with its indicators and positions, the editor shows the right blocks. You switch strategies, and your entire workstation reconfigures itself.</p><hr><h2 id="the-lock-freeze-a-window-in-place">The lock: freeze a window in place</h2><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/08/Frame-1000001799.png" class="kg-image" alt="KryllOS 0.5.38 update: your chart and backtest results become companion apps"></figure><p>Your windows follow your editor, but sometimes you want one of them to stop moving: to hold it on a specific result while you go back to tweaking your strategy on the side. That's what the lock is for.</p><p>Each companion app carries a small icon that shows its state: a chain link when it's tied to the editor, a padlock when it's frozen. You click, the link turns into a padlock, and the window stays on its version no matter what you do next.</p><p>That's what makes comparing versions possible. You freeze one strategy's backtest, go back and change an indicator or a level, and run it again. On one side your new result, on the other the old one, still frozen, right there to compare. You unlock when you're done, and the window resyncs.</p><hr><p>At its core, 0.5.38 tears down the walls of the editor. Your chart, your results, and your strategy no longer fight over a single window: each gets its own, you organize them however makes sense to you, and everything stays connected to what you're building. Your second screen finally has a reason to exist, and running two ideas in parallel is no longer a window-juggling headache. Update to 0.5.38, pop your chart and results out, and give them some room at last ;)</p><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="KryllOS 0.5.38 update: your chart and backtest results become companion apps" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Join the Waitlist</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches]]></title><description><![CDATA[The KryllOS 0.5.35 update brings the Multi-Backtest app: build your list, launch it, and it clears itself across your available engines.]]></description><link>https://blog.kryll.io/kryllos-0-5-35-multi-backtest-batches/</link><guid isPermaLink="false">6a675358d9e60f88cb3b863c</guid><category><![CDATA[announcements]]></category><category><![CDATA[en]]></category><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Tue, 28 Jul 2026 12:37:48 GMT</pubDate><media:content url="https://blog.kryll.io/content/images/2026/07/MULTIBACKTEST-thumbnail.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/image-289.png" class="kg-image" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches"></figure><img src="https://blog.kryll.io/content/images/2026/07/MULTIBACKTEST-thumbnail.png" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches"><p>Version <a href="https://blog.kryll.io/kryllos-0-5-32-update-parallel-backtests-memory/">0.5.32</a> unlocked parallelism: multiple engines, each on its own core, plus slots to advance several backtests per engine. The idea was to launch a whole batch of backtests at once, without waiting for each one to finish before starting the next. What was missing was the tool to build that batch. You were still launching your backtests one at a time: open a tab, configure it, run it, then start over for every pair, every timeframe, every variant.</p><p>That's what 0.5.35 brings: the Multi-Backtest app. You build your list of backtests once, launch the whole thing, and it clears itself across the available engines while you work on something else.</p><hr><h2 id="the-multi-backtest-app">The Multi-Backtest app</h2><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/image-270.png" class="kg-image" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches"></figure><p>Multi-Backtest is a list of runs. Each row is a backtest ready to go, with its strategy, platform, pair, and timeframe. Nothing forces you to stick to a single strategy: you can stack the same one across ten pairs, ten different strategies, or any mix of the two. You build the list, you launch it, that's it.</p><hr><h3 id="adding-a-strategy-to-the-list">Adding a strategy to the list</h3><p>Two paths, depending on where you are :</p><p><strong>From the editor</strong>, the <code>Add to multi-backtest</code> button sends the open strategy to the list along with its current configuration platform, pair, and timeframe already set. Switch pairs, click again, and the row gets added to the list.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/image-272-1.png" class="kg-image" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches"></figure><p><strong>From the file manager</strong>, right-clicking a strategy offers the same <code>Add to multi-backtest</code> option. The difference: it arrives unconfigured, since you haven't opened it. You'll need to set it up before running it.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/image-275-1.png" class="kg-image" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches"></figure><p><strong>How to add a backtest to the list</strong></p><ul><li>From the editor, set your platform, pair, and timeframe, then click <code>Add to multi-backtest</code></li><li>Or right-click a strategy in the file manager, then <code>Add to multi-backtest</code></li><li>Repeat as many times as needed, each addition stacks onto the list</li></ul><hr><h3 id="configuring-and-duplicating-your-backtests">Configuring and duplicating your backtests</h3><p>A row can be edited at any time. Double-clicking it, or right-clicking and selecting <code>Edit</code>, opens its run settings: platform, pair, timeframe. Adjust, hit <code>Save</code>, and the row is ready.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/image-265.png" class="kg-image" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches"></figure><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/image-266.png" class="kg-image" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches"></figure><hr><p><code>Duplicate</code> is the move that saves the most time. Configure one row correctly, duplicate it, and on the copy only change what varies, the pair or the timeframe. One on ETH, one on Solana, one on last year. In a few clicks, you've built a full series without ever re-entering the same settings twice.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/image-263.png" class="kg-image" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches"></figure><p><strong>How to set up a series</strong></p><ul><li>Double-click a row (or right-click then <code>Edit</code>) to open its run settings</li><li>Set the platform, pair, and timeframe, then <code>Save</code></li><li>Right-click then <code>Duplicate</code> to copy the row</li><li>On the copy, only change what varies, the pair or the timeframe</li></ul><hr><h2 id="run-your-whole-list-in-one-click">Run your whole list in one click</h2><p>List ready? The <code>Run All</code> button launches everything. One click, and you no longer have to come back and trigger each backtest yourself: whatever can start right away does, and the rest waits its turn, kicking in automatically as engines free up. Your list clears itself.</p><p>In practice: testing ten pairs one at a time means ten round trips configure, launch, wait, repeat. With Multi-Backtest, it's one list built once and a single Run All. The time you used to spend clicking, you now spend analyzing.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/image-267.png" class="kg-image" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches"></figure><hr><h2 id="how-many-backtests-can-run-at-the-same-time-on-kryllos">How many backtests can run at the same time on KryllOS?</h2><p>That depends on what you've set in <code>Settings &gt; Performance</code>, under "Parallel backtests," with the two sliders introduced in 0.5.32:</p><ul><li><code>Backtest engines</code>: the number of engines running in parallel, each on its own core. This is the real speed lever, the more you have, the sooner your batch finishes. KryllOS detects your available cores and recommends a value suited to your machine.</li><li><code>Multiplexed slots</code>: several backtests sharing the same engine, each advancing in turn. None of them run faster, but they all progress together.</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/0.5.32-performances-1.png" class="kg-image" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches"></figure><p>The total follows the formula shown at the top of the panel: <code>moteurs × slots</code>. Two engines and two slots means four backtests running at once, with the rest of your list following behind. That's exactly what multiplexed slots were built for: launching a whole batch without waiting for each one to finish. Multi-Backtest is the tool that feeds those engines.</p><hr><h2 id="cleaning-up-the-multi-backtest-list">Cleaning up the Multi-Backtest list</h2><p>Each row shows its own progress bar, handy for longer strategies where a run takes a while. You can see at a glance what's running, what's waiting, and what's done.</p><p>Two buttons for wrapping up a series. <code>Clear</code> removes finished runs from the list and keeps the view tidy. <code>Cancel all</code> stops everything, including runs still in progress, and cleans up after itself.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/image-273.png" class="kg-image" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches"></figure><hr><h2 id="-backtest-files">.backtest files</h2><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/image-274.png" class="kg-image" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches"></figure><p>Every backtest produces a <code>.backtest</code>. Until now, it was on you to save it, using the floppy disk icon. Multi-Backtest does it automatically for every run in your list, under a default name that includes the strategy, the pair, and the timestamp. Your results are kept without you having to think about it, and you know which is which without opening them.</p><p>A <code>.backtest</code> file is self-contained: it holds the strategy, the run, and the logs, all in a single file.</p><h3 id="finding-your-backtests-in-the-file-manager">Finding your backtests in the file manager</h3><p>In the file manager, the <code>backtests</code> section groups together all your saved backtests, both from Multi-Backtest and the ones you save manually. The file manager now refreshes every time it's displayed, so whatever you just launched is already there, and its side navigation is freer to use.</p><hr><h2 id="opening-your-backtests-and-their-linked-strategy">Opening your backtests and their linked strategy</h2><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/image-287-1.png" class="kg-image" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches"></figure><p>A backtest can be reopened in the editor with its full results, exactly as they were at the end of the run. Since your strategy may have changed in the meantime, KryllOS handles the different cases:</p><ul><li>The tab is already open elsewhere: it takes you back to it instead of creating a duplicate.</li><li>You've moved a block since then: it still finds the right strategy.</li><li>You've edited the strategy: it opens a new tab with the version that was actually backtested, since it's no longer the same one.</li><li>The strategy is no longer on your drive: it asks whether you want to cancel, or open the version that was backtested.</li></ul><hr><h2 id="sharing-a-backtest">Sharing a backtest</h2><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/image-288.png" class="kg-image" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches"></figure><p>Since the file contains everything, you can hand it over. <code>Export to zip</code> packages the whole thing. On the other end, the person opens your strategy, reviews the backtest and its source code, and can rerun it themselves to verify. A result you're presenting is no longer a screenshot, it's a full test the other person can replay.</p><hr><p>0.5.35 brings two things: the Multi-Backtest app, which builds and runs your backtests in batches while you work on something else, and automatic saving of runs as organized, reopenable, shareable files. Update to 0.5.35, stack a few pairs into Multi-Backtest, and click <code>Run All</code>.</p><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="KryllOS 0.5.35 update: the Multi-Backtest app for running your backtests in batches" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Join the Waitlist</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[KryllOS 0.5.32 Update: Parallel Backtests and RAM Management]]></title><description><![CDATA[The KryllOS 0.5.32 update lets you run your backtests in parallel and puts you back in control of your RAM.]]></description><link>https://blog.kryll.io/kryllos-0-5-32-update-parallel-backtests-memory/</link><guid isPermaLink="false">6a5f77fcd9e60f88cb3b8547</guid><category><![CDATA[announcements]]></category><category><![CDATA[en]]></category><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Tue, 21 Jul 2026 14:03:56 GMT</pubDate><media:content url="https://blog.kryll.io/content/images/2026/07/concurrent-backtests-thumbnail-1.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/Frame-1000001793.png" class="kg-image" alt="KryllOS 0.5.32 Update: Parallel Backtests and RAM Management"></figure><img src="https://blog.kryll.io/content/images/2026/07/concurrent-backtests-thumbnail-1.png" alt="KryllOS 0.5.32 Update: Parallel Backtests and RAM Management"><p>Until now, a backtest on KryllOS ran on a single core, and only one at a time. No matter how many cores were available on your machine, it was impossible to launch a second one while the first was running. 0.5.32 changes that in a fundamental way: backtests can now run across multiple cores in parallel, so you can launch several at once. This release also brings better tracking and better RAM management.</p><hr><h2 id="parallel-backtests">Parallel backtests</h2><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/0.5.32-concurrent-backtest.png" class="kg-image" alt="KryllOS 0.5.32 Update: Parallel Backtests and RAM Management"></figure><p>With 0.5.32, you can finally run several backtests at the same time, each on its own core. Where you used to have to wait for one backtest to finish before starting the next, you can now open several tabs and run them simultaneously, a real time-saver when you're testing multiple versions of a strategy or several pairs in parallel.</p><h3 id="configuring-allocated-power">Configuring allocated power</h3><p>How many backtests you can actually run at once depends on the power of your machine, and more specifically on the number of cores available on your VPS. To make the most of it, head to <code>Settings &gt; Performance</code>, under "Parallel backtests," where two sliders give you control over this allocation.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/0.5.32-performances.png" class="kg-image" alt="KryllOS 0.5.32 Update: Parallel Backtests and RAM Management"></figure><ul><li><strong>Backtest engines</strong>: the number of active engines running in parallel, each on its own core. This is the real speed lever, more engines means more backtests moving at full speed at the same time. KryllOS automatically detects your available cores and recommends a value suited to your machine (it always keeps some in reserve for your live trading).</li><li><strong>Multiplexed slots</strong>: several backtests sharing a single engine, each taking its turn. They all progress "at the same time," but none of them runs any faster than if it were running alone, the total time for the batch stays the same, it's just split between them. The point isn't speed but convenience, launching a whole batch of backtests at once, without waiting for each one to finish before moving to the next.</li></ul><p>The total number of backtests you can launch follows the formula shown at the top of the panel: <strong>engines × slots</strong>. The panel also displays an estimate of the RAM required.</p><h3 id="how-to-set-up-your-parallel-backtests">How to set up your parallel backtests</h3><ul><li>Open <code>Settings</code>,then <code>Performance</code></li><li>Increase <code>Backtest engines</code> for real speed, within the recommended limit for your machine</li><li>Increase <code>Multiplexed slots</code> to move several backtests forward per engine, with no speed gain</li><li>Click <code>Apply</code></li></ul><p><em>*Reducing the number of engines never interrupts a backtest that's already running.</em></p><hr><h2 id="ram-under-control">RAM under control</h2><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/0.5.32-memory.png" class="kg-image" alt="KryllOS 0.5.32 Update: Parallel Backtests and RAM Management"></figure><p>The second panel, <code>Settings &gt; Memory</code>, gives you visibility into what KryllOS is actually consuming. You can see memory usage, engine by engine, and an alert warns you in real time when RAM or disk usage climbs too high.</p><p>KryllOS keeps candles and indicators in memory from one backtest to the next to stay fast, instead of reloading everything each time. That's a good trade-off, but over a long session, this memory builds up. KryllOS already cleans it up automatically past a certain threshold. And to take back control immediately, a "Clear RAM" button frees up memory on demand.</p><p>This cleanup never touches a backtest that's currently running. It only clears stopped engines. If two backtests are running, Clear RAM leaves them alone. If you stop one and then clean up, only that one gets cleared. If you restart it afterward, the data reloads and memory goes back up, that's normal, it's the cache doing its job again.</p><hr><h2 id="strategy-logs-on-demand">Strategy logs, on demand</h2><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/0.5.32-emit-logs.png" class="kg-image" alt="KryllOS 0.5.32 Update: Parallel Backtests and RAM Management"></figure><p>Still in the <code>Performance</code> panel, a useful setting: "Emit strategy logs." When enabled, KryllOS produces server-side logs. This is useful when an indicator isn't doing what you expect and you want to see, step by step, exactly when it's waiting and when it triggers.</p><p>When disabled, no lines are produced, not in memory, not in the stream, not on disk, and your backtest runs a bit lighter without that writing overhead. Turn it on when you're debugging, turn it off when you want to optimize for speed.</p><hr><h2 id="a-backtest-engine-that-cleans-up-after-itself">A backtest engine that cleans up after itself</h2><p>These settings hold up thanks to background work on the engine's memory consumption.</p><p>First, a new way of reading market data, organized in columns, which lowers a backtest's peak memory usage by about 36%. Each backtest leaves more room for the others, which means more of them can run before the machine gets saturated.</p><p>Next, engines no longer hold onto RAM when they're not in use. An idle engine frees its memory and shuts down automatically, then powers back up on demand as soon as a backtest is restarted. Memory is only consumed by what's actually working.</p><p>Finally, a backtest's results are no longer kept in memory once the run is finished. They're released, and to export them, KryllOS reads them back from disk.</p><hr><p>0.5.32 brings two things: real backtest parallelism, and visibility into RAM. Update to 0.5.32, take a look through Performance and Memory, then launch two backtests at once to see the difference.</p><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="KryllOS 0.5.32 Update: Parallel Backtests and RAM Management" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Join the Waitlist</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[KryllOS 0.5.29 Update: Backtests Up to 4× Faster]]></title><description><![CDATA[The KryllOS 0.5.29 update makes your backtests up to 4× faster. Test, tweak, retest, without ever losing your train of thought.]]></description><link>https://blog.kryll.io/kryllos-0-5-29-update-faster-backtests/</link><guid isPermaLink="false">6a54caf9d9e60f88cb3b8445</guid><category><![CDATA[announcements]]></category><category><![CDATA[en]]></category><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Mon, 13 Jul 2026 11:28:30 GMT</pubDate><media:content url="https://blog.kryll.io/content/images/2026/07/backtest-2.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/backtest.png" class="kg-image" alt="KryllOS 0.5.29 Update: Backtests Up to 4× Faster"></figure><img src="https://blog.kryll.io/content/images/2026/07/backtest-2.png" alt="KryllOS 0.5.29 Update: Backtests Up to 4× Faster"><p>Building a strategy is often a loop: you set a block, adjust a level, move a condition, and after every change the same question comes back, does it hold up? So you run a backtest, to ask the market's past what it thinks.</p><p>The problem is that every backtest has a cost in time. When waiting for a result takes several minutes, you become frugal: you only test the ideas you're already fairly sure about, and all the "what if I tried this" thoughts stay in a corner of your mind, never checked. Every one of those untested variants is a path you'll never actually know.</p><p>0.5.29 shifts that balance. As of this KryllOS version, backtests run much faster, fast enough that testing one more idea costs almost nothing, so there's no real reason to hold back anymore.</p><hr><h2 id="the-waiting-wall-comes-down">The waiting wall comes down</h2><p>KryllOS's backtesting engine was already fast: it ran 2 to 10 times faster than the old engine. 0.5.29 adds up to another 4x on top of that. Long periods that used to take several minutes now run in seconds, and you can chain tests together without losing track of what you set out to check.</p><hr><h2 id="the-cache-that-makes-technical-analysis-free">The cache that makes technical analysis free</h2><p>Where does this speed come from? Largely from a cache, a memory the engine builds up across runs so it never has to redo the same work twice.</p><p>Specifically, two things now persist from one backtest to the next. Candles, first: the engine no longer has to fetch them from disk on every run, it keeps them on hand. Your indicators, second: your RSI, your moving averages, your Supertrend are no longer recalculated every time, they're computed once and reused.</p><p>The result: after the first pass, your technical analysis costs your machine almost nothing. The engine no longer spends its time rebuilding your indicators; it spends it replaying prices and measuring how your strategy behaves.</p><p>That's also why the very first run is a bit slower than the ones that follow: it's the one filling the cache. If your first backtest isn't instant, that's normal. Run it again, and you'll feel the difference.</p><hr><h2 id="dead-time-compressed">Dead time, compressed</h2><p>Speed doesn't only come from the cache. The way the engine replays the market has changed too.</p><p>A market doesn't move at a steady pace: there are moments when everything moves, and long stretches where nothing happens. Before, the engine still advanced step by step through those quiet stretches. Now, it crosses them in one go: uneventful ticks are compressed, candles that don't change anything for your strategy are skipped, and the engine jumps straight to the next event that actually matters to you.</p><p>It's a bit like fast-forwarding through the boring parts, with a return to normal speed only where something is really happening.</p><hr><h2 id="precision-your-cursor-between-speed-and-detail">Precision: your cursor between speed and detail</h2><p>You can dial in this speed yourself with a setting in the top bar of the editor, just to the left of the Run button: Precision.</p><p>Precision defines the number of ticks the engine generates inside the candles, in other words, how finely it emulates price movement inside each candle. The lower you set it, the fewer points to simulate, the faster it runs; at 0, you're at maximum speed. The higher you set it, the more detail the engine works out inside each trade.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/precision.png" class="kg-image" alt="KryllOS 0.5.29 Update: Backtests Up to 4× Faster"></figure><p>This mainly affects your stop losses and your trailing orders: the exact point where the price passes inside the candle decides the moment your order triggers. On a simple strategy, though, your P&amp;L barely moves between a precision of 0 and 4.</p><p>In practice: lower the precision to prototype and chain through tests quickly, raise it back up when you want an accurate read on your stops and trailing orders before going live.</p><hr><h2 id="kryllos-onboarding-a-warm-welcome-to-get-you-started">KryllOS Onboarding: A Warm Welcome to Get You Started</h2><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/onboarding-1-1.png" class="kg-image" alt="KryllOS 0.5.29 Update: Backtests Up to 4× Faster"></figure><p>KryllOS now takes care of your very first minutes. The first time you launch the app, a quick welcome tour walks you through the essentials in five screens: what KryllOS is and what it gives you, your VPS profiles, the toolbar you summon with F10, and where to drop us a bug or an idea. No more being thrown in at the deep end, you know where to put your hands from the very first launch.</p><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="KryllOS 0.5.29 Update: Backtests Up to 4× Faster" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Join the Waitlist</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[KryllOS 0.5.26 Update: Technical Indicators Arrive On The Editor's Chart]]></title><description><![CDATA[The KryllOS 0.5.26 update now puts your technical indicators right on the editor's chart. Your technical analysis now lives where you build.]]></description><link>https://blog.kryll.io/kryllos-0-5-26-update-technical-indicators-chart/</link><guid isPermaLink="false">6a4cf831d9e60f88cb3b83c2</guid><category><![CDATA[announcements]]></category><category><![CDATA[en]]></category><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Tue, 07 Jul 2026 14:08:43 GMT</pubDate><media:content url="https://blog.kryll.io/content/images/2026/07/thumbnail.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/KryllOS-0.5.26-update_-technical-indicators-arrive-on-the-editor-s-chart.png" class="kg-image" alt="KryllOS 0.5.26 Update: Technical Indicators Arrive On The Editor's Chart"></figure><img src="https://blog.kryll.io/content/images/2026/07/thumbnail.png" alt="KryllOS 0.5.26 Update: Technical Indicators Arrive On The Editor's Chart"><p>In front of a chart, your eye never rests on price alone. It hunts for the moving average carrying the trend, the RSI starting to lose steam, or any other indicator traders swear by. Laid over the candles, they're what turn a column of numbers into a market you can actually read.</p><p>Except that, until now, the KryllOS editor's chart showed price, candles and volume, nothing more. Your indicators, meanwhile, ran inside your blocks without ever showing up on the candles.</p><p>That's over now. As of KryllOS 0.5.26, technical indicators appear directly on your editor's chart, right there among the candles, while your strategy takes shape.</p><hr><h2 id="the-resizable-chart">The resizable chart</h2><p>You could already open and collapse the chart above your strategy. What's new is that it now comes in two sizes. First a compact one, which leaves you enough room to keep wiring your blocks while keeping price in view. And a large one, which unfolds the chart and gives it more space for a real analysis session.</p><ul><li>Compact mode: you edit your blocks, the chart stays visible</li><li>Expanded mode: a bigger chart, room for analysis</li><li>Switch modes in one click</li></ul><h3 id="how-to-do-it">How to do it</h3><ol><li>Find the double chevron ⩔ in the center, right at the bottom of the chart</li><li>One click to expand it, another to go back to compact</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/chart-extend.png" class="kg-image" alt="KryllOS 0.5.26 Update: Technical Indicators Arrive On The Editor's Chart"></figure><hr><h2 id="adding-indicators">Adding indicators</h2><p>To add one, right-click on the chart and the list opens. You browse what's available or type its name to find it right away, you click, and it settles onto your candles. Nothing stops you from stacking several: a short moving average and a long one to watch for a cross, an RSI just below, a Supertrend over the price. The more you add, the more the chart's expanded mode becomes your friend.</p><ul><li>Search by name to go straight to it</li><li>As many indicators as you want, stacked on the price</li><li>Available indicators: Moving Average, RSI, MACD, Bollinger, Stochastic RSI, Supertrend, Ichimoku, Volume</li></ul><h3 id="how-to-do-it-1">How to do it</h3><ol><li>Right-click anywhere on the chart</li><li>In the list that opens, pick an indicator or type its name in the search</li><li>Click it, and it drops onto the price</li><li>Repeat to stack more</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/add-indicator-1.png" class="kg-image" alt="KryllOS 0.5.26 Update: Technical Indicators Arrive On The Editor's Chart"></figure><hr><h2 id="managing-and-cleaning-up-your-indicators">Managing and cleaning up your indicators</h2><p>A busy chart needs a bit of tidying. You can hide an indicator to get it out of view without losing it, then bring it back the moment you need it again. You can also delete just one, the one you no longer need. And the day you want to start from a blank canvas, there's no need to remove them one by one: right-click the chart, choose to remove them all, and every indicator disappears at once. Two clicks, and you're starting fresh.</p><ul><li>Hide / show an indicator without losing it</li><li>Delete a specific indicator</li><li>Remove them all at once: right-click, then "remove all indicators"</li></ul><h3 id="how-to-hide-an-indicator">How to hide an indicator</h3><ol><li>Hover over its name, at the top left of the chart</li><li>Click the ◉ icon to hide it. Click again to bring it back</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/hide-indicator-2.png" class="kg-image" alt="KryllOS 0.5.26 Update: Technical Indicators Arrive On The Editor's Chart"></figure><h3 id="how-to-remove-all-indicators">How to remove all indicators</h3><ol><li>Right-click on the chart</li><li>Click "remove all indicators". They all disappear at once</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/remove-indicators-3.png" class="kg-image" alt="KryllOS 0.5.26 Update: Technical Indicators Arrive On The Editor's Chart"></figure><hr><h2 id="customizing-each-indicator">Customizing each indicator</h2><p>Each indicator opens onto its own settings panel, and you really can tweak all of it. You lengthen or shorten its period to set it anywhere from short term to very long term, you switch its calculation method when it offers several, you adjust the line thickness and its color, and you even choose the price source it works from, whether it starts from the close, the open, or one of the classic combinations traders are used to. Nothing is set in stone. You set up each indicator exactly the way you read it in your head, with your own reference points and your own way of trading.</p><h3 id="how-to-do-it-2">How to do it</h3><ol><li>Hover over the indicator and click the gear ⚙</li><li>Adjust whatever you want in the panel (period, style, color, source...)</li><li>Changes apply directly on the chart</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/indicator-settings-1.png" class="kg-image" alt="KryllOS 0.5.26 Update: Technical Indicators Arrive On The Editor's Chart"></figure><hr><h2 id="reading-values-on-hover">Reading values on hover</h2><p>Move your mouse over the chart and your indicators hand you their numbers. A dot snaps onto the curve, and its exact value appears off to the side, at the precise moment you care about. Enough to read the value of your moving average or your Supertrend down to the exact candle, without ever drowning the chart in numbers.</p><h3 id="how-to-do-it-3">How to do it</h3><ol><li>Move your cursor over the chart</li><li>Each indicator's value appears at the point you're hovering over</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/data-survol-1.png" class="kg-image" alt="KryllOS 0.5.26 Update: Technical Indicators Arrive On The Editor's Chart"></figure><hr><p>In the end, all these settings and shortcuts come down to one simple idea: your technical analysis and your strategy now live in the same space. And that's the whole point: you no longer build your strategy by imagining what your indicators are doing, you build it from what you see. The rest is yours to write. Update to 0.5.26, open your editor, and drop your first indicator onto the price ;)</p><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="KryllOS 0.5.26 Update: Technical Indicators Arrive On The Editor's Chart" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Join the Waitlist</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[KryllOS VPS Installation Guide: Free Self-Hosted Trading Bot]]></title><description><![CDATA[Your complete KryllOS install guide: download the app, connect your VPS, and get your trading bots running 24/7. Beginner-friendly, no code.]]></description><link>https://blog.kryll.io/kryllos-installation-guide/</link><guid isPermaLink="false">6a3eac37d9e60f88cb3b8128</guid><category><![CDATA[tutorials]]></category><category><![CDATA[en]]></category><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Fri, 26 Jun 2026 18:30:23 GMT</pubDate><content:encoded><![CDATA[<p>If you're here, it's because you want to install KryllOS, and you've come to the right place. Even if words like "VPS," "Linux," or "SSH" barely mean anything to you, this guide will help you install KryllOS the easy way, step by step.</p><p>KryllOS is your self-hosted trading station: the app runs on your PC/Mac, the engine on your server, and you alone are in control.</p><p>Good news to kick things off: the installer does two things at once. It installs the KryllOS app on your computer (Windows or Mac), your interface, the place where you click; and it deploys the engine on your VPS, the server that runs your strategies 24/7, even when your computer is off.</p><hr><h2 id="what-you-ll-need">What you'll need</h2><p>Two machines, two roles:</p><ul><li><strong>A Windows or Mac computer</strong> to install the KryllOS app, your user interface, where you'll build and launch your trading strategies.</li><li><strong>A Linux VPS</strong> running <strong>Ubuntu 22.04+</strong> or <strong>Debian 12+</strong> to host the KryllOS engine, which runs around the clock.</li></ul><p>No VPS yet? <a href="https://blog.kryll.io/get-netcup-vps-for-kryllos/">We'll show you how to get one from Netcup right here.</a></p><hr><h2 id="download-the-app">Download the app</h2><p>Grab the latest version of KryllOS for your computer's system:</p><ul><li><strong>macOS</strong> → <code>.dmg</code> (Apple Silicon or Intel, depending on your Mac)</li><li><strong>Windows</strong> → <code>.exe</code></li></ul><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/image-148.png" class="kg-image"></figure><hr><h2 id="step-0-new-installation">Step 0: New installation</h2><p>Launch the app, then click <strong>"New installation."</strong></p><p>The other option, "Import an existing configuration," is for restoring a profile from an archive. For a first install, it doesn't concern you.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/0-EN.png" class="kg-image"></figure><hr><h2 id="step-1-choose-your-server">Step 1: Choose your server</h2><p>If you already have your VPS, click <strong>"I have a server."</strong></p><p>If you don't, KryllOS offers partner deals here (Budget or Recommended) so you can order one in two clicks. No VPS yet? <a href="https://blog.kryll.io/get-netcup-vps-for-kryllos/">We'll show you how to get one from Netcup right here.</a></p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/1-EN-1.png" class="kg-image"></figure><hr><h2 id="step-2-connect-to-your-server">Step 2: Connect to your server</h2><p>Three pieces of info to fill in:</p><ol><li><strong>The IP address</strong> of your VPS</li><li><strong>The root password</strong> (one-time use)</li><li><strong>The username for your VPS</strong> (leave it as <code>kryll</code> by default)</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/2-EN.png" class="kg-image"></figure><h3 id="where-do-i-find-my-ip-and-root-password"><strong>Where do I find my IP and root password?</strong></h3><p>It all happens in your VPS provider's interface:</p><ul><li><strong>The IP address</strong> is shown on your server's page, in your dashboard (look for "IPv4" or "IP address"). It's your machine's public identity.</li><li><strong>The root password</strong> is in the VPS's security / login settings. Most providers ask you to generate (or reset) it yourself.</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/image-156.png" class="kg-image"></figure><hr><h2 id="step-3-security-options">Step 3: Security options</h2><p>Just one option here: Port Knocking.</p><p>What's it for? Your server keeps its front door (SSH) closed and invisible. It only opens if you "knock" a secret sequence in the right order. The result: from the outside, your server looks like it has no door at all, so there's nothing to attack.</p><p>We recommend turning it on if you trade with real funds.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/3-EN-2.png" class="kg-image"></figure><hr><h2 id="step-4-check-before-deployment">Step 4: Check before deployment</h2><p>Last screen: the summary (IP, username, password, SSH key, port knocking). Click <strong>"Deploy"</strong> once you've reviewed the info.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/4-EN.png" class="kg-image"></figure><hr><h2 id="installation-kicks-off">Installation kicks off</h2><p>From here, KryllOS takes over and handles everything on its own: SSH connection, server validation, detection of existing services, configuration, installation, then final checks. Expect a few minutes depending on your VPS.</p><p>Good time to go grab yourself a coffee. (Or go check the charts, no judgment.)</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/5-EN.png" class="kg-image"></figure><hr><h2 id="welcome-to-kryllos-">Welcome to KryllOS!</h2><p>Once the installation is done, your app and your VPS are ready. You officially own your self-hosted trading station, all to yourself. Now have fun: open the editor, grab some blocks, and put together your first strategy!</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/kryllos-welcome.png" class="kg-image"></figure><hr><h2 id="got-a-question-stuck">Got a question? Stuck?</h2><p>Don't worry, you're not alone. Join our official Telegram group, where the KryllOS team and community answer your questions: <strong><a href="https://t.me/kryll_io">Join the Telegram →</a></strong></p><hr><h2 id="frequently-asked-questions">Frequently Asked Questions</h2><p>Before you dive in, or if you get stuck along the way, take a look here: we've rounded up the questions that come up most often.</p><h3 id="what-exactly-is-kryllos">What exactly is KryllOS?<br></h3><p>KryllOS is an automated trading solution that lets you create trading bots from a visual no-code editor, or launch community bots available on the marketplace. Self-hosted and open-source.</p><h3 id="is-kryllos-free">Is KryllOS free?</h3><p>KryllOS is 100% free. No subscription, no fees on your trades. The only possible costs: your VPS (a few €/month) and whatever you choose to buy on the marketplace.</p><h3 id="do-you-need-to-know-how-to-code-to-use-kryllos">Do you need to know how to code to use KryllOS?</h3><p>No. The installation is automated, and strategies are built with drag-and-drop by connecting blocks together. Zero lines of code.</p><h3 id="which-computers-does-the-kryllos-app-run-on">Which computers does the KryllOS app run on?</h3><p>Windows and macOS (Apple Silicon and Intel). You download the .exe or the .dmg depending on your machine.</p><h3 id="do-i-have-to-leave-my-computer-on-for-my-strategies-to-run">Do I have to leave my computer on for my strategies to run?</h3><p>No, and that's the whole point. Your strategies run on the VPS, 24/7. Your computer is only there to steer them. Turn it off, and the bots keep trading.</p><h3 id="what-s-a-vps-and-why-do-i-need-one">What's a VPS and why do I need one?</h3><p>A VPS (Virtual Private Server) is a server that runs nonstop in a datacenter, rented for a few euros a month. It's what executes your strategies while you sleep, without relying on your personal PC/Mac.</p><h3 id="how-much-does-a-vps-cost">How much does a VPS cost?</h3><p>A few euros a month. For reference, the deals offered in the installer start around €6/month (budget) and €10/month (recommended).</p><h3 id="what-are-the-minimum-specs-for-the-vps">What are the minimum specs for the VPS?</h3><p>A 2 vCore / 4 GB RAM / 40 GB disk config is enough to get started. To run several strategies comfortably, aim for 4 vCore / 8 GB RAM / 100 GB disk.</p><h3 id="where-do-i-find-my-vps-s-ip-and-root-password">Where do I find my VPS's IP and root password?</h3><p>In your provider's interface: the IP is on your server's page ("IPv4"), the root password in the security/login settings (often for you to generate yourself). The labels vary a bit from one provider to the next.</p><h3 id="my-vps-runs-a-different-os-what-do-i-do">My VPS runs a different OS, what do I do?</h3><p>Reinstall it with Ubuntu 22.04+ or Debian 12+ from your provider's panel (look for "Reinstall" / "Reinstall OS").</p><h3 id="does-kryll-have-access-to-my-funds-or-my-api-keys">Does Kryll have access to my funds or my API keys?</h3><p>No. KryllOS is self-hosted: your API keys stay local and Kryll never touches your funds. No custody, no middleman.</p><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="KryllOS — Join the Waitlist" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Join the Waitlist</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[Get a Netcup VPS for KryllOS: Beginner's Step-by-Step Guide]]></title><description><![CDATA[This beginner guide shows you how to get a Netcup VPS, then find your IP and root password, ready to run KryllOS 24/7.]]></description><link>https://blog.kryll.io/get-netcup-vps-for-kryllos/</link><guid isPermaLink="false">6a3eac4ad9e60f88cb3b812e</guid><category><![CDATA[tutorials]]></category><category><![CDATA[en]]></category><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Fri, 26 Jun 2026 18:30:07 GMT</pubDate><content:encoded><![CDATA[<p>If you're here, it's because you want to run KryllOS 24/7, which means you need a VPS. Good news: you're in the right place, and you don't need any technical skills to follow this guide.</p><p>We'll cover the whole journey, from A to Z:</p><ul><li><strong>Ordering</strong> your VPS on Netcup</li><li><strong>Paying</strong> for your order from your customer account</li><li><strong>Accessing</strong> your server's admin panel</li><li><strong>Grabbing</strong> your IP address and root password to launch the KryllOS install</li></ul><hr><h2 id="what-is-a-vps">What is a VPS?</h2><p>A VPS (Virtual Private Server) is a small computer that runs around the clock in a datacenter, which you rent for a few euros a month. It's what runs your strategies while you sleep. For this guide, we picked Netcup: a European host known for its excellent price-to-performance ratio, perfect for KryllOS.</p><hr><h2 id="which-netcup-vps-plan-should-you-choose-and-what-it-really-costs-">Which Netcup VPS plan should you choose? (and what it really costs)</h2><p>Netcup offers several tiers. For KryllOS, we recommend <strong>at least 2 vCPU and 4 GB of RAM</strong>. The smallest plan is plenty to get started; if you're planning to run lots of strategies in parallel or do a ton of backtests, aim for the next plan up.</p><p>Our advice: start with the VPS 500 G12. It's the ideal plan to get going on KryllOS: cheap, and more than enough. You can always move up to a bigger plan later if you need to.</p><hr><h2 id="part-1-ordering-your-vps">Part 1: Ordering your VPS</h2><h3 id="step-1-choose-your-plan">Step 1: Choose your plan</h3><p>To get started, head over to <a href="https://www.netcup.com/en/server/vps?ref=372611">Netcup's website</a> to browse their VPS plans. You'll see the three plans shown just above. Under the <strong>VPS 500 G12</strong>, click the <strong>"Order now"</strong> button.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/1-1.png" class="kg-image"></figure><hr><h3 id="step-2-configure-your-vps">Step 2: Configure your VPS</h3><p>You'll land on the configuration screen. Two settings matter here.</p><p>The commitment length :</p><ul><li><strong>"0 months"</strong> (no commitment): you pay monthly and can cancel whenever you want. Perfect for testing KryllOS at your own pace.</li><li><strong>"12 months, Save 14%"</strong>: like most hosts, committing for a year lowers your monthly cost. The right call if you already know you're staying. (Small bonus: if you go with an annual plan, we may be able to give you a promo code. Feel free to join our <a href="https://t.me/kryll_io">Telegram group</a> to ask for one.)</li></ul><p>The location : we recommend leaving "No preference Europe," shown at +€0.00. The other cities (Amsterdam, Vienna, Nuremberg, and so on) add a small surcharge, and Singapore is noticeably pricier. With "No preference Europe," your server will be placed in Europe with no extra charge.</p><p>Once your config is set, click <strong>"Add to shopping cart."</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/2-1.png" class="kg-image"></figure><hr><h3 id="step-3-skip-the-add-ons">Step 3: Skip the add-ons</h3><p>A window confirms your VPS was added, and Netcup takes the chance to offer you extra options (vLAN, an additional IPv4, a domain name, and so on). You don't need any of them for KryllOS.</p><p>Just click <strong>"Go to shopping cart."</strong></p><p></p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/3.png" class="kg-image"></figure><hr><h3 id="step-4-check-your-cart">Step 4: Check your cart</h3><p>Your cart shows your VPS 500 G12 with its price. You can see the breakdown: one-time setup fees and the monthly price.</p><p>Click <strong>"Continue to the order."</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/4.png" class="kg-image"></figure><hr><h3 id="step-5-enter-your-billing-address">Step 5: Enter your billing address</h3><p>This is the most important step to fill in correctly. Netcup verifies addresses (that's actually why a phone number is required). So give your real, complete address, exactly as it appears on an official document: a made-up address can block or delay your order.</p><p><em>Important: if you don't have a street number, just add a <code>0</code> at the start (e.g., <code>0 Your Addresse</code>). Without a number, your order may not be accepted.</em></p><p>Once everything is filled in, click <strong>"Save address."</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/5-4.png" class="kg-image"></figure><hr><h3 id="step-6-confirm-the-save">Step 6: Confirm the save</h3><p>A window confirms your address was saved. Click <strong>"Go to order."</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/6-1.png" class="kg-image"></figure><hr><h3 id="step-7-review-the-summary">Step 7: Review the summary</h3><p>You'll arrive at the order summary. Take 30 seconds to double-check your info: identity, address, and the product ordered (your VPS 500 G12).</p><p>You'll notice a "First receipt" line that's a bit higher than the monthly price: that's normal, it includes the one-time setup fees on top of the first month.</p><p>Before confirming, tick the two boxes at the bottom, then click <strong>"Order at charge."</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/7.png" class="kg-image"></figure><hr><h3 id="step-8-order-confirmed">Step 8: Order confirmed</h3><p>A "Thank you for your order!" message appears: your order is registered.</p><p><em>Important point: with Netcup, you don't pay right at checkout. Here's how it works: Netcup will email you your customer account credentials, and it's from that account that you'll pay your invoice. Once the payment goes through, you'll get access to your VPS.</em></p><p>So let's move on to Part 2: payment.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/8.png" class="kg-image"></figure><hr><h2 id="part-2-paying-for-your-order-from-your-customer-account">Part 2: Paying for your order from your customer account</h2><h3 id="step-1-get-your-username-and-password">Step 1: Get your username and password</h3><p>Keep an eye on your inbox. You'll get <strong>two emails</strong>:</p><ul><li><strong>A first email</strong> about payment that <strong>you can ignore</strong>.</li><li>Right after, an email titled <strong>"Your login credentials for the netcup CCP"</strong> <strong>→ that's the one that matters</strong>. Keep it handy: it holds your access to the customer account (the Customer Control Panel, or CCP).</li></ul><p>Inside, you'll find:</p><ul><li><strong>Customer number</strong> → your customer number (your login ID)</li><li><strong>Password</strong> → your password</li></ul><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.kryll.io/content/images/2026/06/9.png" class="kg-image"><figcaption>E-mail Netcup contenant les identifiants de connexion au Customer Control Panel (CCP)</figcaption></figure><hr><h3 id="step-2-log-in-to-your-customer-account">Step 2: Log in to your customer account</h3><p>Go to Netcup's official customer account site: <strong><a href="https://customercontrolpanel.de">customercontrolpanel.de</a></strong></p><p>Log in by copy-pasting the customer number and password you received by email, then click <strong>"Log in."</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/10.png" class="kg-image"></figure><hr><h3 id="step-3-confirm-the-security-code-2fa-">Step 3: Confirm the security code (2FA)</h3><p>Netcup will ask for a code (token) sent to your email address: it's their two-factor authentication (2FA) system, enabled by default, an extra layer of security to protect your account.</p><p>Grab the code from your inbox, paste it, then click <strong>"Confirm token."</strong> Need a new code? Click "Send token again."</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/12.png" class="kg-image"></figure><hr><h3 id="step-4-pay-your-invoice">Step 4: Pay your invoice</h3><p>You're now logged into your customer account. In the top right, under "Outstanding invoices," you'll see your order awaiting payment (in our example, €11.90).</p><p>Click the credit card or PayPal logo next to the invoice, then follow the prompts to complete the payment.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/13-2.png" class="kg-image"></figure><hr><h2 id="part-3-accessing-your-vps-admin-panel">Part 3: Accessing your VPS admin panel</h2><p>Once your invoice is paid, you can finally access your server.</p><p>Still on the same page of your customer account, find the "Log in to other panels" box and click the <strong>"SCP Auto-Login"</strong> button.</p><p>What's the SCP? The Server Control Panel (SCP) is the panel that lets you manage your VPS. The "SCP Auto-Login" button is the fastest way to connect, with no credentials to re-enter. Note that you can also log in manually with dedicated login/password credentials, sent in a separate email (these are different from your customer account credentials).</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/14-1.png" class="kg-image"></figure><p>You'll then land on the Server Control Panel, a separate platform dedicated to managing your VPS. To open your server's settings, click its name in the list, a long identifier that starts with <code>v22…</code> (e.g., <code>v2202506184293817445</code>).</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/15-2.png" class="kg-image"></figure><hr><h2 id="part-4-grabbing-your-ip-and-root-password">Part 4: Grabbing your IP and root password</h2><p>This is the home stretch: these two pieces of info are all KryllOS needs to install.</p><h3 id="step-1-finding-your-ip-address">Step 1: Finding your IP address</h3><p>After clicking your server's name (previous step), open the "General" tab. Scroll down to the "Network" section: your IP address is shown in the "IPv4" column (e.g., <code>159.195.193.127</code>).</p><p>This is your machine's public identity. Write it down somewhere safe, you'll need it during the KryllOS install.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/16-7.png" class="kg-image"></figure><hr><h3 id="step-2-setting-and-grabbing-your-root-password">Step 2: Setting and grabbing your root password</h3><p>Now go to the "Access" tab.</p><p>Netcup has already pre-generated a password for you (so the field isn't empty). Here's what to do:</p><ul><li>First, copy the displayed password (the <strong>"Copy"</strong> button) and paste it somewhere safe.</li><li>Then click <strong>"Set Password"</strong> to actually apply it to your server.</li></ul><p>This is the access key to your machine. Write it down somewhere safe, you'll need it during the KryllOS install.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/06/17-1.png" class="kg-image"></figure><hr><h2 id="and-there-you-go-you-re-ready-">And there you go, you're ready!</h2><p>You now have in hand:</p><ul><li><strong>Your VPS IP address</strong></li><li><strong>Your root password</strong></li></ul><p>All that's left is to launch the KryllOS install. We walk you through everything, step by step, in our dedicated guide: <strong><a href="https://blog.kryll.io/kryllos-installation-guide/">KryllOS Installation Guide →</a></strong></p><hr><h2 id="a-question-stuck">A question? Stuck?</h2><p>No worries, you're not alone. Join our official Telegram group, where the KryllOS team and community answer your questions: <strong><a href="https://t.me/kryll_io">Join the Telegram →</a></strong></p><hr><h2 id="frequently-asked-questions">Frequently Asked Questions</h2><h3 id="what-s-a-vps-and-why-do-i-need-one-for-kryllos">What's a VPS, and why do I need one for KryllOS?</h3><p>A VPS (Virtual Private Server) is a server that runs around the clock in a datacenter, rented for a few euros a month. KryllOS hosts its engine on it, which lets your strategies trade 24/7, even when your computer is off.</p><h3 id="why-netcup">Why Netcup?</h3><p>Netcup is a European host with a great price-to-performance ratio, fast NVMe VPS plans, and some of the lowest prices on the market. It's a solid, budget-friendly choice for running KryllOS.</p><h3 id="which-netcup-plan-should-i-choose-for-kryllos">Which Netcup plan should I choose for KryllOS?</h3><p>The VPS 500 G12 (2 vCore, 4 GB RAM, 128 GB NVMe) is plenty to get started. If you're planning to run lots of strategies in parallel or do many backtests, step up to the VPS 1000 G12 (4 vCore, 8 GB RAM). You can always upgrade later.</p><h3 id="what-does-it-really-cost">What does it really cost?</h3><p>From around €6/month for the VPS 500 G12. Heads up: the first invoice is a bit higher, because it includes one-time setup fees on top of the first month (in our example: €5.04 in fees + €6.86 = €11.90 total).</p><h3 id="0-month-or-12-month-commitment-which-do-i-pick">0-month or 12-month commitment, which do I pick?</h3><p>The "0 months" option (no commitment) lets you pay monthly and cancel whenever you want: ideal for testing. The "12 months" option saves you ~14% per month but locks you in for a year. To get started with peace of mind, no commitment is perfect.</p><h3 id="which-location-should-i-choose">Which location should I choose?</h3><p>Leave "No preference Europe": your server will be in Europe, with no surcharge. The other cities add a few euros per month for no real reason.</p><h3 id="where-do-i-find-my-netcup-vps-s-ip-and-root-password">Where do I find my Netcup VPS's IP and root password?</h3><p>In the Server Control Panel, after clicking your server's name: the IP is in the "General" tab (Network section → IPv4), and the root password in the "Access" tab (be sure to click "Set Password" to apply it).</p><h3 id="which-operating-system-for-kryllos">Which operating system for KryllOS?</h3><p>Ubuntu 22.04+ or Debian 12+. If your VPS runs a different OS, reinstall it from the Netcup panel before launching the KryllOS install.</p><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="KryllOS — Join the Waitlist" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Join the Waitlist</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[KryllOS Security: The Zero Trust Model Applied to Trading Bots]]></title><description><![CDATA[Why KryllOS chooses invisibility over fortress walls: Zero Trust, port knocking, cryptographic signatures. The complete security model, explained.]]></description><link>https://blog.kryll.io/kryllos-security-zero-trust/</link><guid isPermaLink="false">6a140522d9e60f88cb3b7cea</guid><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Mon, 25 May 2026 14:14:00 GMT</pubDate><media:content url="https://blog.kryll.io/content/images/2026/07/f0148de1-028f-4528-8529-d53742e64d1e-1.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/07/f0148de1-028f-4528-8529-d53742e64d1e.png" class="kg-image" alt="KryllOS Security: The Zero Trust Model Applied to Trading Bots"></figure><img src="https://blog.kryll.io/content/images/2026/07/f0148de1-028f-4528-8529-d53742e64d1e-1.png" alt="KryllOS Security: The Zero Trust Model Applied to Trading Bots"><p>KryllOS is a self-hosted product: you install it on your own server, and you are its sole user. No Kryll cloud holding your keys, no account to create, no password to manage.</p><p>This reality fundamentally changes the nature of the security model. The question is no longer <em>"how to protect a multi-tenant service,"</em> but <em>"how to protect a personal server that has no reason to be accessible from the outside."</em> KryllOS's model responds with a simple principle: robust where it matters, lean where it's enough.</p><hr><h2 id="a-solid-security-boundary">A solid security boundary</h2><p>KryllOS is only accessible by you, via an SSH tunnel whose port remains permanently closed. It only opens after a port knocking sequence known to you alone. To an attacker scanning the Internet, your server doesn't exist: no open ports, no response, no visible attack surface.</p><p>This invisible-before-authentication approach applies a model designed in 2007 by the Defense Information Systems Agency (DISA) of the U.S. Department of Defense. Known as Software Defined Perimeter, or <em>"Black Cloud,"</em> it was originally conceived to protect classified networks. It is today the foundation of Zero Trust architectures powering Cloudflare Access, Zscaler Private Access, and most modern ZTNA solutions.</p><hr><h2 id="no-unnecessary-friction-between-you-and-yourself">No unnecessary friction between you and yourself</h2><p>With a solid perimeter in place, the protections typically layered on the inside — HTTP authentication, sessions, rate limiting, local encryption of secrets — lose their purpose. If someone has crossed the SSH tunnel, it means they have your keys or a shell on your machine: from the system's perspective, they <em>are</em> you. Encrypting an API key with a decryption key stored right next to it doesn't change the cost of an attack.</p><p>KryllOS therefore chooses to be honest about what it actually protects, and to focus cryptography where it truly matters.</p><hr><h2 id="cryptographic-guarantees-where-they-count">Cryptographic guarantees where they count</h2><ul><li><strong>Signed plugins:</strong> cryptographic signature verified before each execution, with auditing for the official marketplace.</li><li><strong>Sandboxed filesystem:</strong> all file operations pass through a validation layer that prevents a plugin or API call from escaping its dedicated folder.</li><li><strong>Hash-pinned dependencies:</strong> KryllOS and its components are distributed with a cryptographic manifest that allows verification that downloaded third-party libraries are exactly those tested by the team. A compromise of PyPI or an upstream repository cannot silently slip into an update.</li><li><strong>Isolated exchange credentials:</strong> your API keys are stored in a local SQLite database, accessible only by the KryllOS process itself.</li></ul><hr><h2 id="best-practices-on-the-user-side">Best practices on the user side</h2><p>KryllOS handles what it can handle. The rest comes down to a few classic administration best practices:</p><ul><li>A strong SSH key (Ed25519, never passwordless) with a local passphrase.</li><li>A port knocking sequence you don't share, and that you change if it has leaked.</li><li>Exchange API keys created with minimal permissions (trading only, no fund withdrawal, IP restriction where the exchange allows it).</li><li>Extra vigilance with plugins installed outside the marketplace: a third-party plugin is code that runs with your server's privileges. The official marketplace exists precisely so you don't have to do that analysis yourself.</li></ul><hr><h2 id="a-model-suited-to-its-audience">A model suited to its audience</h2><p>This isn't Binance or Coinbase. KryllOS doesn't hold the funds of millions of users, isn't publicly exposed on the Internet, has no attack surface to defend against continuously scanning bots. It's a personal trading station that, from the Internet, simply doesn't exist.</p><p>At this scale, the challenge isn't to build a defensive fortress. It's to shrink the attack surface until it becomes invisible, and to focus cryptography on the points that remain.</p><hr><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="KryllOS Security: The Zero Trust Model Applied to Trading Bots" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Join the Waitlist</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[$KRL in KryllOS: Utility and Tokenomics]]></title><description><![CDATA[A fixed supply token, no new issuance, that distributes real yield and funds a completely free platform. How is that possible? We explain everything.]]></description><link>https://blog.kryll.io/krl-kryllos-utility-tokenomics/</link><guid isPermaLink="false">69fd8fc0d9e60f88cb3b7c16</guid><category><![CDATA[en]]></category><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Fri, 08 May 2026 14:58:12 GMT</pubDate><media:content url="https://blog.kryll.io/content/images/2026/05/KryllOS-KRL-flywheel-16-9-2.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/05/KryllOS-KRL-flywheel-16-9.png" class="kg-image" alt="$KRL in KryllOS: Utility and Tokenomics"></figure><img src="https://blog.kryll.io/content/images/2026/05/KryllOS-KRL-flywheel-16-9-2.png" alt="$KRL in KryllOS: Utility and Tokenomics"><p>KryllOS is more than an automated trading platform. It's an ecosystem: a visual no-code editor, a marketplace for bots and custom blocks, an AI layer for vibe-coding your strategies, and at the heart of it all, a token that serves as the economic backbone. KRL isn't a gimmick, it's the economic fuel that aligns users, creators, and the platform.</p><hr><h2 id="token-basics">Token Basics</h2><p>KRL is the native utility token of the Kryll ecosystem. Launched via ICO in early 2018, it raised $2.2M and laid the project's foundations. Eight years later, it's back at the center of the action with KryllOS.</p><p>A few fundamentals to keep in mind:</p><ul><li>Standard: ERC-20</li><li>Max supply: 49,417,348 KRL</li><li>Multi-chain: natively deployed on Ethereum, Base, Arbitrum, and Optimism</li><li>Availability: traded on Coinbase, KuCoin, Gate.io, Crypto.com, MEXC, CoinEx, and accessible on DEX via Uniswap V3</li></ul><p>One important point: all KRL currently in circulation is fully unlocked. There is no active vesting, no upcoming unlock schedule. The supply is fixed and non-mintable, a clean, predictable foundation for everything that follows.</p><hr><h2 id="the-marketplace-s-single-currency">The Marketplace's Single Currency</h2><p>Every transaction on the KryllOS marketplace is designed to go through KRL. Whether you're buying a ready-to-use trading strategy, a custom block, an app, or a skill for your AI agent, you pay in KRL. The publisher receives KRL.</p><p>No fiat, no stablecoins, no alternatives. A single rail, simple and predictable. This unification has a direct consequence: every transaction feeds the same economy. The more volume the marketplace generates, the more sustained demand builds around KRL.</p><hr><h2 id="how-a-single-purchase-powers-an-entire-ecosystem">How a Single Purchase Powers an Entire Ecosystem</h2><p>With every marketplace purchase, the KRL spent is distributed among three beneficiaries:</p><ul><li><strong>The Publisher</strong><br>The creator of the bot, block, or application receives their share. This is the foundation of a real creator economy: the more useful content you publish and the more it gets used, the more you earn. The original Kryll marketplace already proved this model works, top creators generated genuine passive income from it. KryllOS takes that further, adding custom blocks and an AI layer that dramatically lowers the barrier to publishing.</li><li><strong>Kryll</strong><br>A share goes to the team to fund development, infrastructure, and operations. This is what keeps the product free: no subscriptions, no trading fees, no custody. The marketplace funds the platform instead of billing the end user.</li><li><strong>Stakers</strong><br>A share is redistributed to holders who have actively staked their KRL, in the form of real yield paid out by actual marketplace activity. This is an intentional, participatory mechanism: simply holding KRL in a wallet doesn't earn you anything. It's the deliberate act of staking that opts you into the revenue-sharing engine.</li></ul><hr><h2 id="real-yield-not-disguised-inflation">Real Yield, Not Disguised Inflation</h2><p>The word "yield" is overused in crypto. Most projects that promise it operate through inflationary emission: new tokens are minted to pay stakers. The result is that non-staking holders get diluted, and the displayed APY reflects no real value creation.</p><p>KRL works in the opposite direction. The supply is fixed: 49,417,348 tokens, full stop, no minting possible. The yield distributed to stakers doesn't come from emission, it comes from real purchases made on the marketplace by real users. It's closer to a corporate dividend than a synthetic APY.</p><p>In practice: the yield is sustainable because it's backed by actual economic activity. And staking holders capture their share without diluting those who don't stake.</p><p><em>A path worth considering: Burn &amp; Buyback</em><br><em>A portion of the KRL collected through the marketplace could be burned, mechanically reducing the circulating supply. Additionally, in cases where the platform generates revenue in fiat or currencies other than KRL, a buyback mechanism could be considered, repurchasing KRL on the open market to redistribute or burn it, creating structural buying pressure on the token.</em></p><hr><h2 id="publication-collateral">Publication Collateral</h2><p>For a marketplace to stay healthy, publishers need a direct incentive to be serious. One option being strongly considered: requiring a KRL deposit as collateral in order to publish on the marketplace.</p><p>This collateral would serve as an integrity guarantee, a publisher who releases defective or fraudulent content loses all or part of their deposit. Conversely, an active and honest publisher sees their collateral grow over time, with a portion of their earnings automatically reinvested into it.</p><p>When a publisher decides to leave the ecosystem, they recover their full accumulated collateral. It's a mechanic that creates genuine long-term stakes without imposing excessive friction at the point of entry.</p><hr><h2 id="the-self-reinforcing-loop">The Self-Reinforcing Loop</h2><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/05/KryllOS-KRL-flywheel-no-bg-3.png" class="kg-image" alt="$KRL in KryllOS: Utility and Tokenomics"></figure><p>Put together, these mechanics create a virtuous cycle, a flywheel, that strengthens itself over time.</p><p>More users on KryllOS → More marketplace volume → More buying pressure on KRL → Greater attractiveness and visibility → Repeat</p><p>Every participant benefits from everyone else's success. Users want a rich marketplace. Creators want a large user base. Stakers want both sides of the market to grow. And Kryll, as the platform, lives off the same flow. Nobody is playing against anyone else, the exact opposite of classic SaaS models where the platform extracts rent at users' expense.</p><hr><h2 id="what-krl-makes-possible-that-nothing-else-could-fund">What KRL Makes Possible That Nothing Else Could Fund</h2><p>Kryll makes strong product choices that set it apart: open source, self-hostable, free, non-custodial. Kryll never touches user funds and takes nothing from their trades. No subscriptions, no paywalls, no friction.</p><p>In that context, one might wonder why have a token at all. The answer comes down to one word: alignment.</p><p>With KRL, the ecosystem finances its own growth. The platform stays free because the marketplace funds development. Creators earn a living because users buy their work. And holders who believe in the project capture a direct share through real yield.</p><p>KRL isn't a financial layer bolted onto the product. It's what makes the product possible in its current form: open, free, sovereign, and viable for the long term.</p><hr><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="$KRL in KryllOS: Utility and Tokenomics" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Join the Waitlist</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[Installing KryllOS: the installer that turns 2 hours of configuration into 5 minutes]]></title><description><![CDATA[KryllOS installs in 5 minutes: the installer guides every step, automatically secures your VPS and gives you full sovereignty over your trading data.]]></description><link>https://blog.kryll.io/install-kryllos-wizard-self-hosting/</link><guid isPermaLink="false">69f3689fd9e60f88cb3b7b1a</guid><category><![CDATA[en]]></category><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Fri, 01 May 2026 07:55:27 GMT</pubDate><media:content url="https://blog.kryll.io/content/images/2026/04/kryllos-wizard-thumbnail-2.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/04/kryllos-wizard-thumbnail.png" class="kg-image" alt="Installing KryllOS: the installer that turns 2 hours of configuration into 5 minutes"></figure><img src="https://blog.kryll.io/content/images/2026/04/kryllos-wizard-thumbnail-2.png" alt="Installing KryllOS: the installer that turns 2 hours of configuration into 5 minutes"><p>Self-hosting has a beautiful promise: your keys, your data, your rules. And it comes with a very real price. You need to configure a VPS, properly set up an SSH tunnel, navigate Linux command lines, and make a series of configuration decisions without making mistakes, all while carrying the nagging anxiety of breaking something along the way. This is often where the promise meets reality.</p><p>When preparing the reboot of Kryll, we asked the community directly. 58% said they were ready to self-host their instance, provided they had guidance. In other words, for nearly six out of ten people, the installation process was not just a technical step.</p><p>The KryllOS installer was designed exactly for these people. Three steps. Five minutes. A fully operational instance, already secured.</p><hr><h2 id="why-an-installation-wizard-for-a-self-hosted-trading-bot">Why an installation wizard for a self-hosted trading bot?</h2><p>KryllOS is deliberately self-hosted. Your API keys stay on your machine, your trading data never leaves to any third-party cloud, and nobody holds custody of your funds. It's a choice of total sovereignty, but it's also a choice that traditionally requires users to have some technical knowledge.</p><p>We refuse that compromise. The idea behind KryllOS is the power of a professional tool with the simplicity of a consumer app. The installation wizard embodies exactly this philosophy: it automates what an experienced sysadmin would do by hand, and it does it better than a copy-pasted tutorial, because it bakes in security best practices by default.</p><p>Concretely, the KryllOS installer handles three tasks for you:</p><ul><li><strong>SSH connection</strong> to your VPS (no more juggling your terminal and private key)</li><li><strong>Security hardening</strong>, with the creation of a dedicated Linux user, firewall configuration, and remote connection rules, plus, optionally, port-knocking</li><li><strong>Deployment of KryllOS</strong> on your VPS and configuration of the KryllOS app on your computer</li></ul><p>You click three times, wait five minutes, and you trade.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/04/kryllos-installer-full-done-watermark.png" class="kg-image" alt="Installing KryllOS: the installer that turns 2 hours of configuration into 5 minutes"></figure><hr><h2 id="the-3-steps-of-the-kryllos-wizard">The 3 steps of the KryllOS wizard</h2><h3 id="step-1-connect-your-vps-to-kryllos">Step 1: Connect your VPS to KryllOS</h3><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/04/kryllos-installer-close-1-watermark.png" class="kg-image" alt="Installing KryllOS: the installer that turns 2 hours of configuration into 5 minutes"></figure><p>On the first screen, the wizard asks for three pieces of information:</p><ul><li>Your VPS IP address</li><li>The root password for that VPS</li><li>A username to create for KryllOS</li></ul><p>The choice to create a dedicated user, rather than running KryllOS with root privileges, is not a minor detail. It's the principle of least privilege: even in the unlikely scenario where a vulnerability were to affect the application, the attacker would find themselves confined to an account with limited rights, far from the absolute power that root provides.</p><hr><h3 id="step-2-choose-your-installation-mode-native-or-docker">Step 2: Choose your installation mode: Native or Docker</h3><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/04/kryllos-installer-close-2-watermark.png" class="kg-image" alt="Installing KryllOS: the installer that turns 2 hours of configuration into 5 minutes"></figure><p>The KryllOS installer offers two installation options:</p><ul><li><strong>Native installation:</strong> if your VPS is dedicated to KryllOS, this is the simplest and most direct choice. KryllOS installs directly on the system, without any additional layer.</li><li><strong>Dockerized installation:</strong> this is the option for advanced users who already have an active VPS running other services. Think of Docker as a sealed box sitting on your server. KryllOS runs inside it, completely isolated from the rest of the system. No conflicts with your other software, no interference in either direction.</li></ul><hr><p>On this same screen, you'll find a checkbox that may look minor but is worth its weight in gold: <strong>port-knocking</strong>.</p><h3 id="port-knocking-or-the-art-of-making-your-server-invisible">Port-knocking, or the art of making your server invisible</h3><p>Port-knocking is a somewhat forgotten but diabolically effective security mechanism. It makes your server completely invisible, no ports are open. To an automated scanner looking for vulnerable VPS machines, your server simply doesn't exist.</p><p><strong>But how does it actually work?</strong><br>Picture a secret door in a wall that, on the surface, has no visible entrance. For the door to open, you must knock in a precise sequence: three times, then twice, then five times. Anyone who doesn't know the code sees nothing but a smooth wall.</p><p>Port-knocking works on exactly this principle. A server has thousands of "doors" called ports, and connections pass through these ports. Normally, certain ports remain permanently open, like the SSH port, which enables remote connections. These open ports are precisely what hackers and their bots scan relentlessly, looking for a vulnerability.</p><p>With port-knocking, no port is open by default. Instead, the server quietly listens for connection attempts on a specific sequence of ports, say, 1200, then 3456, then 7890, in the right order and within a limited timeframe. This sequence is the "secret knock." If you know it and send it correctly, the server dynamically opens the SSH port, just long enough for your connection, then closes it immediately. To everyone else, the door never existed.</p><p>How can a hacker compromise a machine that doesn't even appear to exist from their perspective? That's exactly the point. KryllOS already stacks several security layers, dedicated user, Docker isolation, hardened SSH, and port-knocking adds the final touch: an invisibility layer. One checkbox, and your VPS disappears from the map.</p><hr><h3 id="step-3-summary-and-deployment">Step 3: Summary and deployment</h3><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/04/kryllos-installer-close-3-watermark.png" class="kg-image" alt="Installing KryllOS: the installer that turns 2 hours of configuration into 5 minutes"></figure><p>The final screen summarizes all the choices you've made. You review them, click deploy, and the installer takes over.</p><p>Behind the scenes, it runs through a precise sequence:</p><ol><li>Secure connection to the VPS</li><li>System compatibility check</li><li>Environment configuration</li><li>KryllOS installation</li><li>Final checks to ensure everything is running correctly</li></ol><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/04/kryllos-installer-full-watermark.png" class="kg-image" alt="Installing KryllOS: the installer that turns 2 hours of configuration into 5 minutes"></figure><p>In under five minutes, KryllOS is up and running. The application is directly accessible on your local machine, already connected to your VPS.</p><hr><h2 id="what-remains-in-your-hands-after-installation">What remains in your hands after installation</h2><p>The installation ends, and you find yourself with far more than a simple configured instance. Behind the scenes, the wizard has been running two parallel workstreams.</p><p>On one side, on your VPS: KryllOS is deployed, the server is hardened, the environment is isolated, and your API keys will never leave that machine.</p><p>On the other side, on your computer: the KryllOS application has been configured locally. This becomes your control station. It establishes a secure SSH tunnel to your VPS and gives you access to the full KryllOS interface from a native app, without ever going through a browser or a third-party service. The VPS runs the engine. The application on your machine holds the wheel.</p><p>The old crypto adage "not your keys, not your coins" extends here to automated trading. Your strategies run on your machine, for you. And your only point of contact with all of this is an interface built to be used, not feared.</p><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="Installing KryllOS: the installer that turns 2 hours of configuration into 5 minutes" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Join the Waitlist</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[The KryllOS Marketplace: your unified store for automated trading]]></title><description><![CDATA[The KryllOS Marketplace brings together strategies, blocks, apps and AI skills to power your automated trading. One store, one currency, one ecosystem.]]></description><link>https://blog.kryll.io/kryllos-marketplace-automated-trading/</link><guid isPermaLink="false">69f2151dd9e60f88cb3b7ac9</guid><category><![CDATA[en]]></category><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Wed, 29 Apr 2026 14:31:15 GMT</pubDate><media:content url="https://blog.kryll.io/content/images/2026/04/marketplace-2.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/04/marketplace.png" class="kg-image" alt="The KryllOS Marketplace: your unified store for automated trading"></figure><img src="https://blog.kryll.io/content/images/2026/04/marketplace-2.png" alt="The KryllOS Marketplace: your unified store for automated trading"><p>KryllOS without its Marketplace would be like a Mac without the App Store: powerful, but limited to what was originally designed and shipped. An OS that can't expand after launch is an OS that stagnates. The Marketplace is what turns KryllOS into a living platform, an ecosystem that grows continuously through community contributions, not just the decisions of a central product team.</p><hr><h2 id="why-a-marketplace-in-an-os">Why a marketplace in an OS</h2><p>Kryll isn't a website with menus and pages. It's a multi-window, modular, self-hosted OS running on your VPS. Instead of being stuck with features hard-coded by a distant product team, you compose your own automated trading environment yourself.</p><p>And where there's an OS, there's a store. The Marketplace is the nerve center where everything converges: one place, one currency, one unified experience, whether you're looking for a complete strategy, a custom editor block, an app, or a skill for your AI agent.</p><p>One number that says it all: in the community survey run before launch, <strong>58% of respondents</strong> said they prefer downloading ready-to-use strategies rather than building them from scratch. The Marketplace isn't a nice-to-have, it's a core need.</p><hr><h2 id="what-you-can-download">What you can download</h2><p>Four content categories, from the most plug-and-play to the most advanced.</p><p><strong>Complete trading strategies:</strong> download a bot, connect your exchange, hit go. No need to touch the editor. Perfect if you don't have time to build from scratch, or if you want to learn from someone better than you. And since Kryll is open source, these strategies aren't black boxes, you can open them, dissect them, fork them. The Marketplace becomes a learning ground too.</p><p><strong>Custom editor blocks:</strong> building your own strategies but want superpowers? An exotic indicator, advanced logic, a connector to a third-party API. Install it, and the block appears in your library just like a native block.</p><p><strong>KryllOS apps:</strong> one level up, these aren't editor building blocks, they're OS extensions. Custom dashboards, market scanners, trading journals, external integrations. Each app opens in its own window, right alongside your editor or performance tracker. This is what takes Kryll beyond "bot factory" and into a full trading suite.</p><p><strong>Agent skills:</strong> the augmented AI layer to extend your agent's action capabilities. Every installed skill becomes a permanent capability of your agent, activatable on demand.</p><hr><h2 id="for-creators-a-wider-playing-field-an-audience-already-there">For creators: a wider playing field, an audience already there</h2><p>Everything above was about what you can download. The other side of the Marketplace is what you can sell.</p><p>If you can design a strategy that holds up, build a block others would kill to have, or imagine an app that changes a trader's daily workflow, your expertise becomes a monetizable asset, paid in KRL with every sale.</p><p>Three reasons to go for it now:</p><ul><li><strong>Four surfaces instead of one:</strong> Strategies, custom blocks, apps, agent skills. Whatever your profile, trader, dev, crypto ops, there's a category where what you already know how to do has real value, without switching careers.</li><li><strong>The audience is already there:</strong> The majority of KryllOS users arrive with the explicit intent to consume community content. No need to build an audience before you sell, just be good and visible in the store.</li><li><strong>Publishing is more accessible than anywhere else:</strong> KryllOS is open source and self-hosted: no proprietary stack to master, no app review, no gatekeeper. You build with the same tools as your future customers, and you publish.</li></ul><hr><h2 id="the-economic-engine-triple-split-and-flywheel">The economic engine: triple split and flywheel</h2><p>The Marketplace runs on a single currency: KRL, Kryll's native ecosystem token. Complete strategy, editor block, KryllOS app, or agent skill, everything bought in the store is settled in KRL. This unifies the buying experience for users, and directly connects the Marketplace to the rest of the tokenomics.</p><p>When a purchase is made, the KRL is split three ways.</p><ul><li><strong>The publisher gets their cut</strong>, making quality content creation economically viable and keeping the best creators motivated to keep producing.</li><li><strong>Kryll takes a commission</strong> that funds product development, infrastructure, and operations.</li><li><strong>KRL stakers receive a redistribution:</strong> this is the real yield mechanism. Staking KRL earns you a share of Marketplace volume, generated by real economic activity, not token inflation.</li></ul><hr><p>The Marketplace isn't a module sitting beside the Kryll product. It's the engine that turns an automated trading OS into a complete ecosystem, one that grows every day from what its community brings to it.</p><p>Whether you're here to download and run your bots without reinventing the wheel, or to publish your work and build a passive income stream in KRL, the Marketplace is probably your first entry point into KryllOS. And it might just be the reflex worth building: before opening the editor to a blank page, go see what the community has already put on the table.</p><hr><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="The KryllOS Marketplace: your unified store for automated trading" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Join the Waitlist</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item><item><title><![CDATA[How KryllOS Revolutionizes Trading Bot Backtesting]]></title><description><![CDATA[KryllOS new backtest engine: 16-tick precision, MultiBT parallel runs, self-hosted & open source. Faster, sharper, fully private.]]></description><link>https://blog.kryll.io/how-kryllos-revolutionizes-trading-bot-backtesting-2/</link><guid isPermaLink="false">69e62305d9e60f88cb3b7845</guid><category><![CDATA[en]]></category><dc:creator><![CDATA[Svein]]></dc:creator><pubDate>Fri, 24 Apr 2026 13:49:11 GMT</pubDate><media:content url="https://blog.kryll.io/content/images/2026/04/backtest-7.png" medium="image"/><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/04/backtest-6.png" class="kg-image" alt="How KryllOS Revolutionizes Trading Bot Backtesting"></figure><img src="https://blog.kryll.io/content/images/2026/04/backtest-7.png" alt="How KryllOS Revolutionizes Trading Bot Backtesting"><p>Before risking capital on a strategy, you test it on historical data. That's the principle behind backtesting. Simple in concept, but the quality of the results depends entirely on the tool you use.</p><p>In KryllOS, we rebuilt the engine from the ground up. Here's what that means.</p><h2 id="more-accurate-and-much-faster-">More accurate. And much faster.</h2><p>The new backtest engine uses a 16-tick-per-candle interpolation system that produces results significantly closer to what would happen in live trading.</p><p>But accuracy is only half the story. The other half is speed. The new engine is radically faster than the old one. That speed gain genuinely changes the way you work: you iterate more, test more, validate faster.</p><h2 id="run-multiple-backtests-at-the-same-time">Run multiple backtests at the same time</h2><p>With MultiBT, you no longer run backtests one after another. You run them all at once.</p><p>This opens up concrete possibilities: testing a strategy across multiple time periods to verify it holds up over time, validating it on several pairs or assets simultaneously, or comparing multiple configurations of the same system in a single run.</p><p>What used to take an hour of sequential testing now runs in parallel. More comparisons, in less time, with a far more complete picture of what your strategy is actually worth.</p><figure class="kg-card kg-image-card"><img src="https://blog.kryll.io/content/images/2026/04/kryllos-backtest-2.png" class="kg-image" alt="How KryllOS Revolutionizes Trading Bot Backtesting"></figure><h2 id="your-backtests-stay-with-you">Your backtests stay with you</h2><p>KryllOS is self-hosted. Backtests run entirely on your machine, and no data leaves it, not your strategies, not your results, not the pairs you're testing. On a cloud platform, you're entrusting your ideas to a third party. With KryllOS, they truly belong to you.</p><h2 id="an-engine-you-can-read">An engine you can read</h2><p>KryllOS is open source. The backtest engine is too. You can read exactly how the calculations are made, verify the interpolation logic, and make sure there are no hidden biases in the results.</p><p>In a field where trust in the tool matters as much as the tool itself, that's far from a minor detail.</p><hr><!--kg-card-begin: html--><div id="kryll-wl-banner-2026">
<style>
  @property --kwl-a {
    syntax: "<angle>";
    inherits: false;
    initial-value: 0deg;
  }

  #kryll-wl-banner-2026,
  #kryll-wl-banner-2026 *,
  #kryll-wl-banner-2026 *::before,
  #kryll-wl-banner-2026 *::after {
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box !important;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;
  }

  #kryll-wl-banner-2026 .kwl-o {
    position: relative !important;
    width: 100% !important;
    max-width: 780px !important;
    margin: 2rem auto !important;
    padding: 3px !important;
    border-radius: 24px !important;
    overflow: hidden !important;
    isolation: isolate !important;
    box-shadow: none !important;
  }

  #kryll-wl-banner-2026 .kwl-o::before {
    content: '' !important;
    position: absolute !important;
    inset: -150% !important;
    background: conic-gradient(
      from var(--kwl-a),
      transparent 0%,
      #6a45e7 10%,
      #926efc 20%,
      #b68dff 30%,
      #926efc 40%,
      transparent 50%,
      transparent 100%
    ) !important;
    animation: kwl-s 3s linear infinite !important;
    z-index: -1 !important;
  }

  #kryll-wl-banner-2026 .kwl-i {
    position: relative !important;
    display: block !important;
    border-radius: 21px !important;
    overflow: hidden !important;
    background: #0d0b1a !important;
    line-height: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-i img {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    max-width: 100% !important;
    object-fit: contain !important;
    pointer-events: none !important;
    user-select: none !important;
    border: none !important;
    border-radius: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c {
    position: absolute !important;
    right: 7% !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 2 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a {
    display: inline-block !important;
    padding: 14px 36px !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: .3px !important;
    color: #fff !important;
    text-decoration: none !important;
    background: linear-gradient(135deg, #6a45e7, #926efc) !important;
    border: none !important;
    border-radius: 12px !important;
    cursor: pointer !important;
    position: relative !important;
    overflow: hidden !important;
    transition: transform .25s cubic-bezier(.4, 0, .2, 1), box-shadow .3s ease !important;
    box-shadow: 0 4px 20px rgba(106, 69, 231, .45) !important;
    width: auto !important;
    height: auto !important;
    max-width: none !important;
    min-width: 0 !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    border-radius: inherit !important;
    background: linear-gradient(120deg, rgba(255,255,255,0) 30%, rgba(255,255,255,.18) 50%, rgba(255,255,255,0) 70%) !important;
    background-size: 200% 100% !important;
    animation: kwl-sh 3s ease-in-out infinite !important;
  }

  #kryll-wl-banner-2026 .kwl-c a::after {
    content: '' !important;
    position: absolute !important;
    inset: -4px !important;
    border-radius: 16px !important;
    border: 2px solid rgba(146, 110, 252, .4) !important;
    animation: kwl-p 2.5s ease-in-out infinite !important;
    pointer-events: none !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:hover {
    transform: scale(1.07) !important;
    color: #fff !important;
    box-shadow: 0 6px 32px rgba(106, 69, 231, .6), 0 0 24px rgba(146, 110, 252, .35) !important;
  }

  #kryll-wl-banner-2026 .kwl-c a:active {
    transform: scale(.97) !important;
    box-shadow: 0 2px 12px rgba(106, 69, 231, .5) !important;
  }

  @keyframes kwl-s {
    to { --kwl-a: 360deg; }
  }

@keyframes kwl-sh { 0% { background-position: 200% 0 } to { background-position: -200% 0 } }
  @keyframes kwl-p  { 0%, 100% { opacity: .3; transform: scale(1) } 50% { opacity: .8; transform: scale(1.04) } }

  @media (max-width: 600px) {
    #kryll-wl-banner-2026 .kwl-c { right: 4% !important }
    #kryll-wl-banner-2026 .kwl-c a { padding: 10px 22px !important; font-size: 13px !important; border-radius: 10px !important }
  }
</style>

<div class="kwl-o">
  <div class="kwl-i">
    <img src="https://blog.kryll.io/content/images/2026/04/kryllOS-join-waitlist-banner-2.png" alt="How KryllOS Revolutionizes Trading Bot Backtesting" loading="lazy" decoding="async">
    <div class="kwl-c">
      <a href="https://os.kryll.io/#waitlist" target="_blank" rel="noopener noreferrer">Join the Waitlist</a>
    </div>
  </div>
</div>
</div><!--kg-card-end: html--><!--kg-card-begin: html--><style>
ul li::marker {
    color: #7774FF;
    font-size: 1.2em;
}

ol li::marker {
    color: #7774FF;
    font-size: 1em;
    font-weight: bold;
}

.single-post .post-content a {
    color: #7774FF !important;
}

code {
    color: #7774FF;
    background-color: #EDEDFF;
    padding: 2px 4px;
    border-radius: 4px;
    font-family: monospace;
}
</style>
<!--kg-card-end: html-->]]></content:encoded></item></channel></rss>