686 lines
22 KiB
HTML
686 lines
22 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>AI for Your Own Apps · Federated Computer</title>
|
|
<meta name="description" content="Already run Nextcloud, Discourse, Gitea, or other open-source apps? Keep them where they are and connect them to Federated's AI capabilities — no migration.">
|
|
<meta name="theme-color" content="#001a2b">
|
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
<link rel="stylesheet" href="../../css/style.css">
|
|
|
|
</head>
|
|
<body id="top">
|
|
<a class="skip" href="#content">Skip to content</a>
|
|
|
|
|
|
<header class="site-head">
|
|
<div class="wrap head-bar">
|
|
<a href="../../" class="brand" aria-label="Federated Computer, home">
|
|
<img src="../../images/logo.png" alt="Federated Computer" class="brand-logo" width="775" height="129">
|
|
</a>
|
|
|
|
<nav class="head-nav" aria-label="Site">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="nav-item has-drop">
|
|
<a href="../../solutions/" class="nav-link" aria-current="page">Solutions<svg class="nav-caret" viewBox="0 0 10 6" width="10" height="6" aria-hidden="true"><path d="M1 1l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5"/></svg></a>
|
|
<div class="drop">
|
|
<div class="drop-panel">
|
|
|
|
<a href="../../solutions/open-source-apps/" class="drop-link">
|
|
<span class="drop-name">Open-Source Apps</span>
|
|
<span class="drop-desc">For teams leaving Google Workspace or Microsoft 365</span>
|
|
</a>
|
|
|
|
<a href="../../solutions/apps-and-ai-development/" class="drop-link">
|
|
<span class="drop-name">Apps + AI Development</span>
|
|
<span class="drop-desc">Build AI on your own business data</span>
|
|
</a>
|
|
|
|
<a href="../../solutions/ai-for-your-apps/" class="drop-link" aria-current="page">
|
|
<span class="drop-name">AI for Your Own Apps</span>
|
|
<span class="drop-desc">Connect the open-source apps you already host</span>
|
|
</a>
|
|
|
|
<a href="../../solutions/full-stack/" class="drop-link">
|
|
<span class="drop-name">The Full Stack</span>
|
|
<span class="drop-desc">Apps, AI development, and agents that do real work</span>
|
|
</a>
|
|
|
|
<a href="../../solutions/#compare" class="drop-link">
|
|
<span class="drop-name">Compare All Four</span>
|
|
<span class="drop-desc">See all four paths side by side</span>
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="nav-item has-drop">
|
|
<a href="../../product/" class="nav-link">Product<svg class="nav-caret" viewBox="0 0 10 6" width="10" height="6" aria-hidden="true"><path d="M1 1l4 4 4-4" fill="none" stroke="currentColor" stroke-width="1.5"/></svg></a>
|
|
<div class="drop">
|
|
<div class="drop-panel">
|
|
|
|
<a href="../../product/federated-core/" class="drop-link">
|
|
<span class="drop-name">Federated Core</span>
|
|
<span class="drop-desc">Provisioning, storage, backup, federated learning</span>
|
|
</a>
|
|
|
|
<a href="../../product/software-library/" class="drop-link">
|
|
<span class="drop-name">Software Library</span>
|
|
<span class="drop-desc">100+ AI-ready open-source apps</span>
|
|
</a>
|
|
|
|
<a href="../../product/agent-sandbox/" class="drop-link">
|
|
<span class="drop-name">Agent Sandbox</span>
|
|
<span class="drop-desc">High-density, instant-wake AI agents</span>
|
|
</a>
|
|
|
|
<a href="../../product/data-controls/" class="drop-link">
|
|
<span class="drop-name">Data & Controls</span>
|
|
<span class="drop-desc">Version control, testing, and monitoring</span>
|
|
</a>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a href="../../ai-privacy-advantage/" class="nav-link">AI Privacy Advantage</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a href="../../pricing/" class="nav-link">Pricing</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a href="../../about/" class="nav-link">About</a>
|
|
|
|
|
|
|
|
</nav>
|
|
|
|
<div class="head-actions">
|
|
<a href="../../sign-in/" class="head-signin">Sign in</a>
|
|
<a href="../../start-now/" class="btn btn-primary btn-sm">Start now</a>
|
|
</div>
|
|
|
|
<details class="menu">
|
|
<summary><span class="menu-word">Menu</span><span class="menu-glyph" aria-hidden="true"><i></i><i></i></span></summary>
|
|
<nav class="menu-panel" aria-label="Site">
|
|
|
|
<a href="../../" class="menu-top">Home</a>
|
|
|
|
|
|
<a href="../../solutions/" class="menu-top">Solutions</a>
|
|
|
|
<div class="menu-sub">
|
|
<a href="../../solutions/open-source-apps/">Open-Source Apps</a><a href="../../solutions/apps-and-ai-development/">Apps + AI Development</a><a href="../../solutions/ai-for-your-apps/">AI for Your Own Apps</a><a href="../../solutions/full-stack/">The Full Stack</a><a href="../../solutions/#compare">Compare All Four</a>
|
|
</div>
|
|
|
|
|
|
<a href="../../product/" class="menu-top">Product</a>
|
|
|
|
<div class="menu-sub">
|
|
<a href="../../product/federated-core/">Federated Core</a><a href="../../product/software-library/">Software Library</a><a href="../../product/agent-sandbox/">Agent Sandbox</a><a href="../../product/data-controls/">Data & Controls</a>
|
|
</div>
|
|
|
|
|
|
<a href="../../ai-privacy-advantage/" class="menu-top">AI Privacy Advantage</a>
|
|
|
|
|
|
<a href="../../pricing/" class="menu-top">Pricing</a>
|
|
|
|
|
|
<a href="../../about/" class="menu-top">About</a>
|
|
|
|
|
|
<div class="menu-actions">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a href="../../start-now/" class="btn btn-primary">Start Now<span class="arrow" aria-hidden="true">→</span></a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a href="../../sign-in/" class="btn btn-secondary">Sign In<span class="arrow" aria-hidden="true">→</span></a>
|
|
|
|
|
|
|
|
</div>
|
|
</nav>
|
|
</details>
|
|
</div>
|
|
</header>
|
|
|
|
<main id="content" tabindex="-1">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<header class="hero hero-compact has-visual">
|
|
|
|
<div class="wrap hero-grid">
|
|
<div class="hero-copy">
|
|
<p class="note" data-reveal><span class="note-live" aria-hidden="true"></span><span class="note-text">Solutions · AI for Your Own Apps</span></p>
|
|
<h1 class="statement" data-reveal style="--d:80ms">Already Run Open Source? Bring Our AI to the Apps You Have.</h1>
|
|
<p class="dek" data-reveal style="--d:140ms">Keep the Nextcloud, Discourse, or Gitea you already host, wherever it lives. Connect it to Federated’s AI capabilities and get the Organizational Brain, notebooks, CI/CD, and safe test environments without migrating a thing.</p>
|
|
<div class="actions" data-reveal style="--d:200ms">
|
|
|
|
|
|
|
|
|
|
|
|
<a href="https://calcom.federated.computer/david/60-min-meeting" class="btn btn-primary">Book a Demo<span class="arrow" aria-hidden="true">↗</span></a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a href="../../start-now/" class="btn btn-secondary">Start 7-Day Free Trial<span class="arrow" aria-hidden="true">→</span></a>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
<aside class="hero-fit" aria-label="Platform layers this path uses" data-reveal style="--d:260ms">
|
|
<div class="hero-fit-head">
|
|
<p class="hero-fit-title">What this path uses</p>
|
|
<a class="more" href="../../solutions/#compare">Compare all four<span class="arrow" aria-hidden="true">→</span></a>
|
|
</div>
|
|
|
|
|
|
<ul class="fit">
|
|
|
|
|
|
<li class="fit-row fit-core is-yes">
|
|
<span class="fit-bar" aria-hidden="true"><span></span></span>
|
|
<span class="fit-name">Federated Core</span>
|
|
<span class="fit-state">Included</span>
|
|
</li>
|
|
|
|
|
|
<li class="fit-row fit-library is-own">
|
|
<span class="fit-bar" aria-hidden="true"><span></span></span>
|
|
<span class="fit-name">Software Library</span>
|
|
<span class="fit-state">Your own</span>
|
|
</li>
|
|
|
|
|
|
<li class="fit-row fit-sandbox is-no">
|
|
<span class="fit-bar" aria-hidden="true"><span></span></span>
|
|
<span class="fit-name">Agent Sandbox</span>
|
|
<span class="fit-state">Add anytime</span>
|
|
</li>
|
|
|
|
|
|
<li class="fit-row fit-controls is-yes">
|
|
<span class="fit-bar" aria-hidden="true"><span></span></span>
|
|
<span class="fit-name">Data & Controls</span>
|
|
<span class="fit-state">Included</span>
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</aside>
|
|
|
|
|
|
</div>
|
|
|
|
</header>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<section class="section section-text" id="who-this-is-for" data-reveal>
|
|
<div class="wrap">
|
|
|
|
|
|
|
|
<div class="section-head">
|
|
<p class="eyebrow">Who This Is For</p>
|
|
<h2>You’ve Already Done the Hard Part</h2>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="prose">
|
|
<p>You chose open source years ago. Your team runs its own Nextcloud, forum, wiki, or code server — on your own hardware, with a hosting provider, or across a few places. It works, people know it, and moving it isn’t worth the disruption.</p>
|
|
<p>What you don’t have is the AI layer on top: a live index of everything, a place to build and test automations safely, and monitoring that knows what an agent is doing. That’s what this path adds. Your apps stay exactly where they are; Federated provides the AI capabilities and connects to them.</p>
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<section class="section section-split" id="who-does-what" data-reveal>
|
|
<div class="wrap">
|
|
|
|
|
|
|
|
|
|
<div class="section-head">
|
|
<p class="eyebrow">Who Does What</p>
|
|
<h2>Your Apps Stay Yours. We Bring the AI Layer.</h2>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="split">
|
|
|
|
<div class="split-col">
|
|
<h3>Stays with you</h3>
|
|
<ul class="split-list">
|
|
<li>Your open-source apps, and where they’re hosted</li><li>Your admin accounts and your update schedule</li><li>Which apps connect, and what each connection is allowed to do</li><li>The ability to revoke any connection instantly</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="split-col">
|
|
<h3>Federated provides</h3>
|
|
<ul class="split-list">
|
|
<li>The Organizational Brain, indexing the apps you connect</li><li>Jupyter notebooks for exploring your data with local AI</li><li>Gitea, CI/CD, and digital twin environments for building and testing</li><li>Grafana and Prometheus monitoring for what your AI is doing</li><li>Federated learning, if you choose to take part</li>
|
|
</ul>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<section class="section section-steps" id="how-it-connects" data-reveal>
|
|
<div class="wrap">
|
|
|
|
|
|
|
|
<div class="section-head">
|
|
<p class="eyebrow">How It Connects</p>
|
|
<h2>Four Steps, No Migration</h2>
|
|
|
|
</div>
|
|
|
|
|
|
<ol class="step-row steps-4">
|
|
|
|
<li class="step">
|
|
<div class="step-head">
|
|
<h3>Set up your Federated environment</h3>
|
|
<span class="step-num">001</span>
|
|
</div>
|
|
<p>We provision your private, single-tenant AI and development layer.</p>
|
|
</li>
|
|
|
|
<li class="step">
|
|
<div class="step-head">
|
|
<h3>Connect your apps</h3>
|
|
<span class="step-num">002</span>
|
|
</div>
|
|
<p>Grant each app a scoped connection. Support tooling can see support data; it can’t open your admin files.</p>
|
|
</li>
|
|
|
|
<li class="step">
|
|
<div class="step-head">
|
|
<h3>Let the Brain catch up</h3>
|
|
<span class="step-num">003</span>
|
|
</div>
|
|
<p>The Organizational Brain builds a live index across the apps you’ve connected.</p>
|
|
</li>
|
|
|
|
<li class="step">
|
|
<div class="step-head">
|
|
<h3>Build, test, and watch</h3>
|
|
<span class="step-num">004</span>
|
|
</div>
|
|
<p>Prototype in notebooks, test in digital twins, and monitor everything in Grafana.</p>
|
|
</li>
|
|
|
|
</ol>
|
|
|
|
</div>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<section class="section section-callout" id="in-practice" data-reveal>
|
|
<div class="wrap">
|
|
|
|
|
|
|
|
<div class="section-head">
|
|
<p class="eyebrow">In Practice</p>
|
|
<h2>One Index Across Apps That Never Talked Before</h2>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="callout"><p>A regional nonprofit runs its own Nextcloud and Discourse on a local hosting provider. It connects both to Federated. Within days, staff can ask one question and get an answer drawn from shared documents and years of forum threads — and the apps themselves never moved.</p></div>
|
|
|
|
</div>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<section class="section section-text" id="privacy" data-reveal>
|
|
<div class="wrap">
|
|
|
|
|
|
|
|
<div class="section-head">
|
|
<p class="eyebrow">Privacy</p>
|
|
<h2>Scoped, Auditable, Revocable</h2>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="prose">
|
|
Every connection to your apps is scoped and auditable: you can see exactly what it can access, and switch any one off without breaking the others. Your Federated environment is single-tenant, and your data is never used for advertising or to train anyone else’s AI.
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<section class="section section-text" id="options-later" data-reveal>
|
|
<div class="wrap">
|
|
|
|
|
|
|
|
<div class="section-head">
|
|
<p class="eyebrow">Options Later</p>
|
|
<h2>Add Agents, or Hand Us the Apps — Your Call</h2>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="prose">
|
|
When you want to run agents next to your data, add the Agent Sandbox. And if you ever decide you’d rather not maintain the apps yourself, the same software runs in our Software Library — so moving over is a choice, not a requirement.
|
|
</div>
|
|
<div class="cta-row mt-2">
|
|
|
|
|
|
|
|
|
|
|
|
<a href="../../solutions/full-stack/" class="more">See the Full Stack<span class="arrow" aria-hidden="true">→</span></a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a href="../../product/software-library/" class="more">See the Software Library<span class="arrow" aria-hidden="true">→</span></a>
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<section class="section section-faq" id="questions" data-reveal>
|
|
<div class="wrap">
|
|
|
|
|
|
|
|
<div class="section-head">
|
|
<p class="eyebrow">Questions</p>
|
|
<h2>Common Questions About This Path</h2>
|
|
|
|
</div>
|
|
|
|
|
|
<div class="faq-list">
|
|
|
|
<details class="faq-item">
|
|
<summary>Which apps can I connect?</summary>
|
|
<div class="faq-answer"><p>Tell us what you run in a demo and we’ll confirm what connects today. Self-hosted copies of the open-source apps in our Software Library are the natural starting point, since they’re the same software our connectors are built for.</p></div>
|
|
</details>
|
|
|
|
<details class="faq-item">
|
|
<summary>Do I have to move my apps to Federated?</summary>
|
|
<div class="faq-answer"><p>No. That’s the point of this path. Your apps stay where they are.</p></div>
|
|
</details>
|
|
|
|
<details class="faq-item">
|
|
<summary>Where does the Organizational Brain's index live?</summary>
|
|
<div class="faq-answer"><p>In your own single-tenant Federated environment. It isn’t shared with other customers, and we can’t see it once you change your admin password.</p></div>
|
|
</details>
|
|
|
|
<details class="faq-item">
|
|
<summary>What happens if I disconnect an app?</summary>
|
|
<div class="faq-answer"><p>The connection stops immediately and nothing else breaks. You can reconnect whenever you like.</p></div>
|
|
</details>
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
</section>
|
|
|
|
|
|
|
|
|
|
|
|
<aside class="cta" data-reveal>
|
|
<div class="wrap cta-inner">
|
|
<div class="cta-copy">
|
|
<h2 class="cta-title">Keep your apps. Add the AI.</h2>
|
|
<p class="cta-text">Show us what you run today and we’ll show you what connecting it looks like.</p>
|
|
</div>
|
|
<div class="actions">
|
|
|
|
|
|
|
|
|
|
|
|
<a href="https://calcom.federated.computer/david/60-min-meeting" class="btn btn-primary">Book a Demo<span class="arrow" aria-hidden="true">↗</span></a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a href="../../solutions/#compare" class="btn btn-secondary">Compare All Four Paths<span class="arrow" aria-hidden="true">→</span></a>
|
|
|
|
|
|
</div>
|
|
</div>
|
|
</aside>
|
|
|
|
|
|
|
|
|
|
|
|
</main>
|
|
<footer class="foot">
|
|
<div class="wrap">
|
|
<div class="foot-top-row">
|
|
<div class="foot-brand">
|
|
<a href="../../" class="foot-mark" aria-label="Federated Computer, home">
|
|
<img src="../../images/logo.png" alt="Federated Computer" class="brand-logo" width="775" height="129">
|
|
</a>
|
|
<p class="foot-line">The open-source operating system for your business — and the private AI that runs on it.</p>
|
|
<span class="foot-place">Colorado Springs, Colorado</span>
|
|
<ul class="foot-social">
|
|
<li><a href="https://www.linkedin.com/company/federated-computer" target="_blank" rel="noopener">LinkedIn<span class="arrow" aria-hidden="true">↗</span></a></li><li><a href="https://x.com/federatedcomp" target="_blank" rel="noopener">X<span class="arrow" aria-hidden="true">↗</span></a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="foot-grid">
|
|
|
|
<nav class="foot-group" aria-label="Solutions">
|
|
<span class="foot-head">Solutions</span>
|
|
<ul class="foot-links">
|
|
|
|
<li><a href="../../solutions/open-source-apps/">Open-Source Apps</a></li>
|
|
|
|
<li><a href="../../solutions/apps-and-ai-development/">Apps + AI Development</a></li>
|
|
|
|
<li><a href="../../solutions/ai-for-your-apps/">AI for Your Own Apps</a></li>
|
|
|
|
<li><a href="../../solutions/full-stack/">The Full Stack</a></li>
|
|
|
|
<li><a href="../../solutions/#compare">Compare All Four</a></li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<nav class="foot-group" aria-label="Product">
|
|
<span class="foot-head">Product</span>
|
|
<ul class="foot-links">
|
|
|
|
<li><a href="../../product/federated-core/">Federated Core</a></li>
|
|
|
|
<li><a href="../../product/software-library/">Software Library</a></li>
|
|
|
|
<li><a href="../../product/agent-sandbox/">Agent Sandbox</a></li>
|
|
|
|
<li><a href="../../product/data-controls/">Data & Controls</a></li>
|
|
|
|
<li><a href="../../ai-privacy-advantage/">AI Privacy Advantage</a></li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<nav class="foot-group" aria-label="Company">
|
|
<span class="foot-head">Company</span>
|
|
<ul class="foot-links">
|
|
|
|
<li><a href="../../about/">About</a></li>
|
|
|
|
<li><a href="../../about/#team">Team</a></li>
|
|
|
|
<li><a href="../../about/#jobs">Jobs</a></li>
|
|
|
|
<li><a href="https://freescout.federated.computer/help/3593186542">Support</a></li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
<nav class="foot-group" aria-label="Get Started">
|
|
<span class="foot-head">Get Started</span>
|
|
<ul class="foot-links">
|
|
|
|
<li><a href="../../start-now/">Start Now</a></li>
|
|
|
|
<li><a href="../../sign-in/">Sign In</a></li>
|
|
|
|
<li><a href="../../pricing/">Pricing</a></li>
|
|
|
|
</ul>
|
|
</nav>
|
|
|
|
</div>
|
|
</div>
|
|
|
|
<div class="foot-legal">
|
|
<span class="foot-copy">© 2026 Federated Computer, Inc. FedQ'd in Colorado Springs — built on Federated Computer by a team around the world.</span>
|
|
<a class="foot-policy" href="../../privacy-policy/">Privacy Policy</a><a class="foot-policy" href="../../terms-and-conditions/">Terms & Conditions</a>
|
|
<a class="foot-top" href="#top">Back to top<span class="foot-up" aria-hidden="true">↑</span></a>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
|
|
<script>
|
|
|
|
|
|
(function () {
|
|
var root = document.documentElement;
|
|
var head = document.querySelector('.site-head');
|
|
function onScroll() { if (head) head.classList.toggle('is-scrolled', scrollY > 8); }
|
|
addEventListener('scroll', onScroll, { passive: true });
|
|
onScroll();
|
|
if (!('IntersectionObserver' in window)) return;
|
|
root.classList.add('js');
|
|
|
|
var io = new IntersectionObserver(function (entries) {
|
|
entries.forEach(function (e) {
|
|
if (e.isIntersecting) { e.target.classList.add('is-visible'); io.unobserve(e.target); }
|
|
});
|
|
}, { rootMargin: '0px 0px -8% 0px' });
|
|
document.querySelectorAll('[data-reveal]').forEach(function (el) { io.observe(el); });
|
|
})();
|
|
|
|
|
|
(function () {
|
|
function openPanel() {
|
|
var panel = location.hash && document.getElementById(decodeURIComponent(location.hash.slice(1)));
|
|
if (!panel || !panel.classList.contains('plan-panel')) return;
|
|
var i = [].indexOf.call(panel.parentNode.children, panel);
|
|
var radio = panel.closest('.plan-switch').querySelectorAll('.plan-radio')[i];
|
|
if (radio) { radio.checked = true; (panel.closest('.section') || panel).scrollIntoView(); }
|
|
}
|
|
addEventListener('hashchange', openPanel);
|
|
openPanel();
|
|
})();
|
|
</script>
|
|
</body>
|
|
</html>
|