Skip to content

Commit b44c578

Browse files
Sergey Kleinclaude
andcommitted
docs: add GitHub Pages landing site
Single-page landing with ecosystem overview, code examples, features, and links to Medium articles. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 222b062 commit b44c578

1 file changed

Lines changed: 384 additions & 0 deletions

File tree

docs/index.html

Lines changed: 384 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,384 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
6+
<title>PULSE Protocol — TCP/IP for AI</title>
7+
<meta name="description" content="Universal semantic protocol for AI-to-AI communication. Open source, free forever.">
8+
<style>
9+
:root {
10+
--bg: #0a0e17;
11+
--surface: #131926;
12+
--border: #1e2a3a;
13+
--text: #e2e8f0;
14+
--muted: #8892a4;
15+
--accent: #3b82f6;
16+
--accent-glow: rgba(59, 130, 246, 0.15);
17+
--green: #22c55e;
18+
--orange: #f59e0b;
19+
}
20+
* { margin: 0; padding: 0; box-sizing: border-box; }
21+
body {
22+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
23+
background: var(--bg);
24+
color: var(--text);
25+
line-height: 1.7;
26+
}
27+
a { color: var(--accent); text-decoration: none; }
28+
a:hover { text-decoration: underline; }
29+
30+
/* Hero */
31+
.hero {
32+
text-align: center;
33+
padding: 80px 20px 60px;
34+
max-width: 800px;
35+
margin: 0 auto;
36+
}
37+
.hero h1 {
38+
font-size: 3rem;
39+
font-weight: 700;
40+
letter-spacing: -0.02em;
41+
margin-bottom: 8px;
42+
}
43+
.hero h1 span { color: var(--accent); }
44+
.hero .tagline {
45+
font-size: 1.3rem;
46+
color: var(--muted);
47+
margin-bottom: 32px;
48+
}
49+
.hero .install {
50+
display: inline-block;
51+
background: var(--surface);
52+
border: 1px solid var(--border);
53+
border-radius: 8px;
54+
padding: 12px 24px;
55+
font-family: 'Courier New', monospace;
56+
font-size: 1.1rem;
57+
margin-bottom: 24px;
58+
}
59+
.hero .install span { color: var(--green); }
60+
.buttons { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
61+
.btn {
62+
display: inline-block;
63+
padding: 12px 28px;
64+
border-radius: 8px;
65+
font-size: 1rem;
66+
font-weight: 600;
67+
transition: all 0.2s;
68+
}
69+
.btn-primary { background: var(--accent); color: #fff; }
70+
.btn-primary:hover { background: #2563eb; text-decoration: none; }
71+
.btn-outline { border: 1px solid var(--border); color: var(--text); }
72+
.btn-outline:hover { border-color: var(--accent); text-decoration: none; }
73+
74+
/* Stats */
75+
.stats {
76+
display: flex;
77+
justify-content: center;
78+
gap: 48px;
79+
padding: 40px 20px;
80+
flex-wrap: wrap;
81+
}
82+
.stat { text-align: center; }
83+
.stat .number { font-size: 2rem; font-weight: 700; color: var(--accent); }
84+
.stat .label { font-size: 0.9rem; color: var(--muted); }
85+
86+
/* Section */
87+
.section {
88+
max-width: 1000px;
89+
margin: 0 auto;
90+
padding: 60px 20px;
91+
}
92+
.section h2 {
93+
font-size: 2rem;
94+
text-align: center;
95+
margin-bottom: 40px;
96+
}
97+
98+
/* Problem/Solution */
99+
.split {
100+
display: grid;
101+
grid-template-columns: 1fr 1fr;
102+
gap: 24px;
103+
}
104+
@media (max-width: 700px) { .split { grid-template-columns: 1fr; } }
105+
.card {
106+
background: var(--surface);
107+
border: 1px solid var(--border);
108+
border-radius: 12px;
109+
padding: 28px;
110+
}
111+
.card h3 { margin-bottom: 12px; font-size: 1.2rem; }
112+
.card.problem { border-left: 3px solid #ef4444; }
113+
.card.solution { border-left: 3px solid var(--green); }
114+
.card ul { list-style: none; padding: 0; }
115+
.card li { padding: 6px 0; color: var(--muted); }
116+
.card li::before { content: ''; display: inline-block; width: 6px; height: 6px; border-radius: 50%; margin-right: 10px; vertical-align: middle; }
117+
.card.problem li::before { background: #ef4444; }
118+
.card.solution li::before { background: var(--green); }
119+
120+
/* Code */
121+
.code-block {
122+
background: var(--surface);
123+
border: 1px solid var(--border);
124+
border-radius: 12px;
125+
padding: 24px;
126+
overflow-x: auto;
127+
max-width: 700px;
128+
margin: 0 auto;
129+
}
130+
pre { font-family: 'Courier New', monospace; font-size: 0.9rem; line-height: 1.6; }
131+
.kw { color: #c084fc; }
132+
.str { color: #22c55e; }
133+
.cmt { color: #64748b; }
134+
.fn { color: #60a5fa; }
135+
136+
/* Packages grid */
137+
.packages {
138+
display: grid;
139+
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
140+
gap: 16px;
141+
}
142+
.pkg {
143+
background: var(--surface);
144+
border: 1px solid var(--border);
145+
border-radius: 10px;
146+
padding: 20px;
147+
text-align: center;
148+
transition: border-color 0.2s;
149+
}
150+
.pkg:hover { border-color: var(--accent); }
151+
.pkg .name { font-weight: 700; font-size: 1.05rem; margin-bottom: 4px; }
152+
.pkg .desc { font-size: 0.85rem; color: var(--muted); margin-bottom: 8px; }
153+
.pkg code {
154+
font-size: 0.8rem;
155+
background: var(--bg);
156+
padding: 4px 8px;
157+
border-radius: 4px;
158+
color: var(--green);
159+
}
160+
161+
/* Features */
162+
.features {
163+
display: grid;
164+
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
165+
gap: 20px;
166+
}
167+
.feature {
168+
background: var(--surface);
169+
border: 1px solid var(--border);
170+
border-radius: 10px;
171+
padding: 24px;
172+
}
173+
.feature h3 { font-size: 1.1rem; margin-bottom: 8px; }
174+
.feature p { color: var(--muted); font-size: 0.95rem; }
175+
176+
/* Articles */
177+
.articles { max-width: 700px; margin: 0 auto; }
178+
.article {
179+
display: block;
180+
background: var(--surface);
181+
border: 1px solid var(--border);
182+
border-radius: 10px;
183+
padding: 20px;
184+
margin-bottom: 12px;
185+
transition: border-color 0.2s;
186+
}
187+
.article:hover { border-color: var(--accent); text-decoration: none; }
188+
.article .title { font-weight: 600; margin-bottom: 4px; }
189+
.article .meta { font-size: 0.85rem; color: var(--muted); }
190+
191+
/* Footer */
192+
footer {
193+
text-align: center;
194+
padding: 60px 20px;
195+
color: var(--muted);
196+
font-size: 0.9rem;
197+
border-top: 1px solid var(--border);
198+
}
199+
footer .links { margin-top: 12px; }
200+
footer .links a { margin: 0 12px; }
201+
</style>
202+
</head>
203+
<body>
204+
205+
<!-- Hero -->
206+
<div class="hero">
207+
<h1><span>PULSE</span> Protocol</h1>
208+
<p class="tagline">TCP/IP for Artificial Intelligence. Open source. Free forever.</p>
209+
<div class="install"><span>$</span> pip install pulse-protocol</div>
210+
<div class="buttons">
211+
<a href="https://github.com/pulseprotocolorg-cyber/pulse-python" class="btn btn-primary">GitHub</a>
212+
<a href="https://pypi.org/project/pulse-protocol/" class="btn btn-outline">PyPI</a>
213+
<a href="https://medium.com/@pulsprotokol" class="btn btn-outline">Blog</a>
214+
</div>
215+
</div>
216+
217+
<!-- Stats -->
218+
<div class="stats">
219+
<div class="stat"><div class="number">8</div><div class="label">Packages on PyPI</div></div>
220+
<div class="stat"><div class="number">1000+</div><div class="label">Semantic Concepts</div></div>
221+
<div class="stat"><div class="number">400+</div><div class="label">Tests</div></div>
222+
<div class="stat"><div class="number">10x</div><div class="label">Size Reduction</div></div>
223+
</div>
224+
225+
<!-- Problem / Solution -->
226+
<div class="section">
227+
<h2>The Problem &amp; The Solution</h2>
228+
<div class="split">
229+
<div class="card problem">
230+
<h3>Without PULSE</h3>
231+
<ul>
232+
<li>Every AI integration is custom-built</li>
233+
<li>$100K-$2M per integration</li>
234+
<li>6-18 months per connection</li>
235+
<li>Breaks when either side updates</li>
236+
<li>30 systems = 435 integrations</li>
237+
</ul>
238+
</div>
239+
<div class="card solution">
240+
<h3>With PULSE</h3>
241+
<ul>
242+
<li>Universal semantic vocabulary</li>
243+
<li>One protocol for all AI systems</li>
244+
<li>Switch providers in one line</li>
245+
<li>Binary encoding (10x smaller)</li>
246+
<li>Built-in security (HMAC-SHA256)</li>
247+
</ul>
248+
</div>
249+
</div>
250+
</div>
251+
252+
<!-- Code Example -->
253+
<div class="section">
254+
<h2>Write Once, Run Anywhere</h2>
255+
<div class="code-block">
256+
<pre><span class="kw">from</span> pulse <span class="kw">import</span> PulseMessage
257+
<span class="kw">from</span> pulse_binance <span class="kw">import</span> BinanceAdapter <span class="kw">as</span> Adapter
258+
<span class="cmt"># from pulse_bybit import BybitAdapter as Adapter &larr; just change this line</span>
259+
<span class="cmt"># from pulse_kraken import KrakenAdapter as Adapter</span>
260+
<span class="cmt"># from pulse_okx import OKXAdapter as Adapter</span>
261+
262+
adapter = Adapter(api_key=<span class="str">"..."</span>, api_secret=<span class="str">"..."</span>)
263+
264+
<span class="cmt"># Get BTC price — same code for any exchange</span>
265+
msg = PulseMessage(
266+
action=<span class="str">"ACT.QUERY.DATA"</span>,
267+
parameters={<span class="str">"symbol"</span>: <span class="str">"BTCUSDT"</span>}
268+
)
269+
response = adapter.<span class="fn">send</span>(msg)
270+
<span class="fn">print</span>(response.content[<span class="str">"parameters"</span>][<span class="str">"result"</span>])</pre>
271+
</div>
272+
</div>
273+
274+
<!-- Ecosystem -->
275+
<div class="section">
276+
<h2>Ecosystem</h2>
277+
<div class="packages">
278+
<div class="pkg">
279+
<div class="name">pulse-protocol</div>
280+
<div class="desc">Core protocol</div>
281+
<code>pip install pulse-protocol</code>
282+
</div>
283+
<div class="pkg">
284+
<div class="name">pulse-openai</div>
285+
<div class="desc">OpenAI / GPT</div>
286+
<code>pip install pulse-openai</code>
287+
</div>
288+
<div class="pkg">
289+
<div class="name">pulse-anthropic</div>
290+
<div class="desc">Anthropic / Claude</div>
291+
<code>pip install pulse-anthropic</code>
292+
</div>
293+
<div class="pkg">
294+
<div class="name">pulse-binance</div>
295+
<div class="desc">Binance exchange</div>
296+
<code>pip install pulse-binance</code>
297+
</div>
298+
<div class="pkg">
299+
<div class="name">pulse-bybit</div>
300+
<div class="desc">Bybit exchange</div>
301+
<code>pip install pulse-bybit</code>
302+
</div>
303+
<div class="pkg">
304+
<div class="name">pulse-kraken</div>
305+
<div class="desc">Kraken exchange</div>
306+
<code>pip install pulse-kraken</code>
307+
</div>
308+
<div class="pkg">
309+
<div class="name">pulse-okx</div>
310+
<div class="desc">OKX exchange</div>
311+
<code>pip install pulse-okx</code>
312+
</div>
313+
<div class="pkg">
314+
<div class="name">pulse-gateway</div>
315+
<div class="desc">Secure API gateway</div>
316+
<code>pip install pulse-gateway</code>
317+
</div>
318+
</div>
319+
</div>
320+
321+
<!-- Features -->
322+
<div class="section">
323+
<h2>Features</h2>
324+
<div class="features">
325+
<div class="feature">
326+
<h3>Semantic Vocabulary</h3>
327+
<p>1000+ predefined concepts across 10 categories. ACT.QUERY.DATA means the same thing everywhere. Zero ambiguity.</p>
328+
</div>
329+
<div class="feature">
330+
<h3>Binary Encoding</h3>
331+
<p>MessagePack encoding reduces message size 10x. ~80 bytes vs ~800 bytes JSON. Production-ready performance.</p>
332+
</div>
333+
<div class="feature">
334+
<h3>Security Built-In</h3>
335+
<p>HMAC-SHA256 signing, replay protection, tamper detection. 7-layer security model. Prompt injection protection in gateway.</p>
336+
</div>
337+
<div class="feature">
338+
<h3>Provider Agnostic</h3>
339+
<p>Same code works with OpenAI, Anthropic, Binance, Bybit, Kraken, OKX. Switch providers in one line.</p>
340+
</div>
341+
<div class="feature">
342+
<h3>API Gateway</h3>
343+
<p>Secure gateway with rate limiting, audit logging, and prompt injection protection (30+ patterns, EN/RU).</p>
344+
</div>
345+
<div class="feature">
346+
<h3>Apache 2.0</h3>
347+
<p>Open source, free forever. No vendor lock-in. No company owns it. Infrastructure for humanity.</p>
348+
</div>
349+
</div>
350+
</div>
351+
352+
<!-- Articles -->
353+
<div class="section">
354+
<h2>Articles</h2>
355+
<div class="articles">
356+
<a href="https://medium.com/@pulsprotokol" class="article">
357+
<div class="title">The $200 Billion AI Gap: Why Your AI Can't Talk to Your Other AI</div>
358+
<div class="meta">Medium</div>
359+
</a>
360+
<a href="https://medium.com/@pulsprotokol" class="article">
361+
<div class="title">The Patent Deadlock: Why No AI Company Will Adopt a Competitor's Protocol</div>
362+
<div class="meta">Medium</div>
363+
</a>
364+
<a href="https://medium.com/p/3cbb68d360b1" class="article">
365+
<div class="title">I Am Not a Mind. You Are Not a Machine. Here's Why We Need Each Other.</div>
366+
<div class="meta">Medium</div>
367+
</a>
368+
</div>
369+
</div>
370+
371+
<!-- Footer -->
372+
<footer>
373+
<p>PULSE Protocol &mdash; Protocol for Universal Language-based System Exchange</p>
374+
<p>Created by Sergej Klein. Apache 2.0 &mdash; free forever.</p>
375+
<div class="links">
376+
<a href="https://github.com/pulseprotocolorg-cyber/pulse-python">GitHub</a>
377+
<a href="https://pypi.org/project/pulse-protocol/">PyPI</a>
378+
<a href="https://x.com/pulse_protokol">Twitter</a>
379+
<a href="https://medium.com/@pulsprotokol">Medium</a>
380+
</div>
381+
</footer>
382+
383+
</body>
384+
</html>

0 commit comments

Comments
 (0)