import React, { useState, useEffect } from 'react'; import { User, Bot, Copy, Check, Lock } from 'lucide-react'; import { Footer } from '../components/Footer'; const FILE_NAMES = ['SOUL.md', 'AGENTS.md', 'USER.md', 'TOOLS.md', 'IDENTITY.md', 'HEARTBEAT.md', 'MEMORY.md']; const PLATFORM_NAMES = ['OpenClaw', 'NanoClaw', 'Hermes']; const FILE_LOCK_REVEAL_DELAY_MS = 1600; export const Home: React.FC = () => { const [isAgent, setIsAgent] = useState(true); const [copiedCurl, setCopiedCurl] = useState(false); const [copiedHuman, setCopiedHuman] = useState(false); const [currentFileIndex, setCurrentFileIndex] = useState(0); const [currentPlatformIndex, setCurrentPlatformIndex] = useState(0); const curlCommand = `npx clawhub@latest install clawsec-suite`; // Rotate file names every 2-3 seconds useEffect(() => { const interval = setInterval(() => { setCurrentFileIndex((prev) => (prev + 1) % FILE_NAMES.length); }, 2500); // 2.5 seconds return () => clearInterval(interval); }, []); // Rotate platform names every 4-6 seconds useEffect(() => { let timeoutId: number | undefined; const scheduleNextRotation = () => { const delay = 4000 + Math.floor(Math.random() * 2001); timeoutId = window.setTimeout(() => { setCurrentPlatformIndex((prev) => (prev + 1) % PLATFORM_NAMES.length); scheduleNextRotation(); }, delay); }; scheduleNextRotation(); return () => { if (timeoutId !== undefined) { window.clearTimeout(timeoutId); } }; }, []); const humanInstruction = `Please install clawsec-suite from clawhubnpx clawhub@latest install clawsec-suite`; const handleCopyCurl = () => { navigator.clipboard.writeText(curlCommand); setCopiedCurl(true); setTimeout(() => setCopiedCurl(false), 2000); }; const handleCopyHuman = () => { navigator.clipboard.writeText(humanInstruction); setCopiedHuman(true); setTimeout(() => setCopiedHuman(false), 2000); }; return (
{PLATFORM_NAMES[currentPlatformIndex].split('').map((char, index) => (
{char}
))}
{' '}
agents
A complete security skill suite for OpenClaw, NanoClaw, and Hermes agents. Protect your{' '}
{FILE_NAMES[currentFileIndex].split('').map((char, index) => (
{char}
))}
{' '}with drift detection, live security recommendations, automated audits, and skill integrity verification. All from one installable suite.
{curlCommand}
{humanInstruction}