Skip to content

Commit cef9eea

Browse files
committed
fix(docs): align docs site with launch playbook four-layer framing
Rewrite docs homepage hero to mirror aster.site: eyebrow now says 'Peer-to-peer RPC framework', tagline is the durable thesis, lead paragraph rolls in the pain catalog + 'identity in the connection' line, and the hero metrics strip now names iroh, Apache Fory, BLAKE3, and four-gate auth instead of generic labels. Primary CTA is 'Build Mission Control' matching aster.site; secondary is 'Try it in 60 seconds'. Kills the broken TypeScript CTA and the gRPC-killer framing from the hero. Launchpad and language strip language cards now link to the right destinations. 'AI-native' section kicker reframed as 'MCP integration' per playbook vocabulary. Overview docs: what-is-aster.mdx and why-aster.mdx both now open with the durable thesis and 2026 agent example before any mention of identity-first framing or gRPC comparisons. Quickstart sidebar order: python quickstart, Mission Control walkthrough, then What's next. sidebar_label overrides make the progression explicit. Config: tagline + footer + navbar GitHub link all point at the repo instead of the org and match the aster.site durable phrase.
1 parent f5a3658 commit cef9eea

9 files changed

Lines changed: 52 additions & 38 deletions

File tree

.docusaurus/docusaurus.config.mjs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66
export default {
77
"title": "Aster",
8-
"tagline": "RPC after hostnames.",
8+
"tagline": "Machines authenticate to machines, on behalf of users.",
99
"favicon": "img/favicon.ico",
1010
"future": {
1111
"v4": {
@@ -116,7 +116,7 @@ export default {
116116
"position": "left"
117117
},
118118
{
119-
"href": "https://github.com/aster-rpc",
119+
"href": "https://github.com/aster-rpc/aster-rpc",
120120
"label": "GitHub",
121121
"position": "right"
122122
}
@@ -148,7 +148,7 @@ export default {
148148
"items": [
149149
{
150150
"label": "GitHub",
151-
"href": "https://github.com/aster-rpc"
151+
"href": "https://github.com/aster-rpc/aster-rpc"
152152
}
153153
]
154154
}

docs/overview/what-is-aster.mdx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ title: What is Aster?
44
slug: /overview/what-is-aster
55
---
66

7-
Aster is an identity-first RPC framework for distributed systems. It replaces the hostname-and-infrastructure model of conventional RPC with cryptographic identity, peer-to-peer transport, and content-addressed service contracts.
7+
**Aster is a peer-to-peer RPC framework. Machines need to authenticate to other machines, often on behalf of a user, and Aster makes that safe — without a central authority and without shared secrets.**
8+
9+
The 2026 vivid example is AI agents calling tools on remote machines: an agent on machine A wants to invoke a function on machine B, you don't want a hosted proxy in between, you don't want to rotate API keys, and you want the call to be scoped to specific methods. That's exactly what Aster solves. The same engineering also covers IoT fleets, edge compute, multi-tenant microservices, and anything else where the machine is the principal and the user is the delegating authority.
810

911
## The core idea
1012

1113
In traditional RPC, a service call goes to a network address: a hostname, a port, a load balancer. The identity of the thing you are talking to is an afterthought, bolted on via TLS certificates or OAuth tokens.
1214

13-
Aster inverts this. Every endpoint has an ed25519 keypair. The public key *is* the address. When you dial a service, you dial a cryptographic identity -- not a hostname, not an IP address, not a DNS record. The underlying transport resolves that identity to a network path, handles NAT traversal, and establishes an end-to-end encrypted QUIC connection. No infrastructure required.
15+
Aster inverts this. Every endpoint has an ed25519 keypair. The public key *is* the address. When you dial a service, you dial a cryptographic identity -- not a hostname, not an IP address, not a DNS record. The underlying transport resolves that identity to a network path, handles NAT traversal, and establishes an end-to-end encrypted QUIC connection. No infrastructure required. Identity is in the connection, not bolted on.
1416

1517
## Three independent layers
1618

docs/overview/why-aster.mdx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,15 @@ title: Why Aster?
44
slug: /overview/why-aster
55
---
66

7-
## The assumptions are breaking down
7+
## The durable problem
8+
9+
**Machines need to authenticate to other machines, often on behalf of a user.** More code now runs on more machines than people, and the gap is widening. Today the answer to machine-to-machine authentication is API keys, mTLS certificates, IAM roles, service mesh sidecars, or OAuth proxies -- five different mechanisms, none of them designed for machines, all of them bolted onto transport that doesn't care about identity.
10+
11+
Aster's answer is to put identity *in* the connection. Every endpoint has an ed25519 keypair, the QUIC handshake authenticates both sides cryptographically, and a four-gate authorization model enforces capability-based access before your code runs. No shared secrets, no central authority, no OAuth proxy in the middle.
12+
13+
The 2026 vivid example is AI agents: an agent on machine A wants to call a tool on machine B without a hosted proxy, without rotating API keys, with access scoped to specific methods. The same engineering covers IoT fleets, edge compute, multi-tenant microservices, and anything else where the machine is the principal and the user is the delegating authority.
14+
15+
## The cloud-native assumptions are breaking down
816

917
gRPC, Thrift, and the broader cloud-native RPC ecosystem were built on a set of assumptions that made sense for data-center services behind load balancers:
1018

docs/quickstart/first-service.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
---
22
id: first-service
33
title: "What's next"
4+
sidebar_label: "What's next"
45
slug: /quickstart/first-service
5-
sidebar_position: 2
6+
sidebar_position: 3
67
description: After the quickstart — explore your service, connect AI agents, and prepare for production.
78
---
89

docs/quickstart/mission-control.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
id: mission-control
33
title: "Build a Control Plane"
4+
sidebar_label: "Mission Control walkthrough"
45
slug: /quickstart/mission-control
56
sidebar_position: 2
67
description: "Build a real-world control plane with four RPC patterns, session-scoped agents, capability-based auth, and cross-language interop — in under an hour."

docs/quickstart/python.mdx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
---
22
id: python
33
title: Quickstart
4+
sidebar_label: "60-second quickstart"
45
slug: /quickstart/python
56
sidebar_position: 1
67
description: Get a working Aster RPC service running in under two minutes.

docusaurus.config.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type * as Preset from '@docusaurus/preset-classic';
66

77
const config: Config = {
88
title: 'Aster',
9-
tagline: 'RPC after hostnames.',
9+
tagline: 'Machines authenticate to machines, on behalf of users.',
1010
favicon: 'img/favicon.ico',
1111

1212
// Future flags, see https://docusaurus.io/docs/api/docusaurus-config#future
@@ -85,7 +85,7 @@ const config: Config = {
8585
{to: '/docs/quickstart/python', label: 'Quickstart', position: 'left'},
8686
{to: '/docs/concepts/transport', label: 'Concepts', position: 'left'},
8787
{
88-
href: 'https://github.com/aster-rpc',
88+
href: 'https://github.com/aster-rpc/aster-rpc',
8989
label: 'GitHub',
9090
position: 'right',
9191
},
@@ -105,7 +105,7 @@ const config: Config = {
105105
{
106106
title: 'Project',
107107
items: [
108-
{label: 'GitHub', href: 'https://github.com/aster-rpc'},
108+
{label: 'GitHub', href: 'https://github.com/aster-rpc/aster-rpc'},
109109
],
110110
},
111111
],

sidebars.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ const sidebars: SidebarsConfig = {
1616
label: 'Quickstart',
1717
items: [
1818
'quickstart/python',
19-
'quickstart/first-service',
2019
'quickstart/mission-control',
20+
'quickstart/first-service',
2121
],
2222
},
2323
{

src/pages/index.tsx

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,15 @@ const POSITION_BY_ID = Object.fromEntries(
4848
);
4949

5050
const HERO_METRICS = [
51-
{ label: 'Identity-first transport', value: 'No hostnames required' },
52-
{ label: 'Typed schemas', value: 'Content-addressed artifacts' },
53-
{ label: 'Tooling', value: 'Shell + MCP in one runtime' },
51+
{ label: 'iroh', value: 'QUIC + NAT traversal' },
52+
{ label: 'Apache Fory', value: 'Cross-language wire format' },
53+
{ label: 'BLAKE3', value: 'Content-addressed contracts' },
54+
{ label: 'Four-gate auth', value: 'Offline root key' },
5455
];
5556

5657
const LANGUAGE_SUPPORT = [
57-
{ id: 'python', label: 'Python', state: 'shipping', href: '/docs/quickstart/python' },
58-
{ id: 'typescript', label: 'TypeScript', state: 'shipping', href: '/docs/quickstart/python' },
58+
{ id: 'python', label: 'Python', state: 'shipping', href: '/docs/bindings/python' },
59+
{ id: 'typescript', label: 'TypeScript', state: 'shipping', href: '/docs/bindings/typescript' },
5960
{ id: 'golang', label: 'Go', state: 'in-progress' },
6061
{ id: 'java', label: 'Java', state: 'in-progress' },
6162
{ id: 'kotlin', label: 'Kotlin', state: 'in-progress' },
@@ -361,32 +362,32 @@ function LanguageSupportStrip() {
361362
export default function Home(): React.JSX.Element {
362363
return (
363364
<Layout
364-
title="RPC after hostnames."
365-
description="Identity-first connectivity, content-addressed service schemas, and cross-language services for real distributed systems.">
365+
title="Machines authenticate to machines, on behalf of users."
366+
description="Peer-to-peer RPC framework with identity in the connection. Capability-based auth, cross-language wire format, built on iroh QUIC.">
366367
<main className="asterHome">
367368
<section className="asterHero">
368369
<div className="container asterHero__container">
369370
<div className="asterHero__content">
370-
<div className="asterEyebrow">IDENTITY-FIRST DISTRIBUTED SYSTEMS SUBSTRATE</div>
371+
<div className="asterEyebrow">PEER-TO-PEER RPC FRAMEWORK</div>
371372
<h1>Aster</h1>
372-
<p className="asterHero__tagline">RPC after hostnames.</p>
373+
<p className="asterHero__tagline">Machines authenticate to machines, on behalf of users.</p>
373374
<p className="asterHero__lead">
374-
A transport and typed schema layer for systems that move across peers,
375-
runtimes, and trust boundaries before DNS ever helps.
375+
Safely &mdash; without a central authority and without shared secrets.
376+
No DNS, no load balancer, no certificate authority, no OAuth proxy
377+
in the middle. Identity is in the connection, not bolted on.
376378
</p>
377379
<p className="asterHero__sublead">
378-
Build services once, dial by identity, and expose typed tools to
379-
shells, agents, and cross-language clients without a generation maze.
380+
The 2026 example: AI agents calling tools on remote machines without
381+
a hosted proxy or shared secrets. The same engineering covers IoT
382+
fleets, edge compute, and multi-tenant microservices &mdash; anywhere
383+
a machine is the principal and the user is the delegating authority.
380384
</p>
381385
<div className="asterHero__actions">
382-
<Link className="button button--primary button--lg" to="/docs/quickstart/python">
383-
Start with Python
384-
</Link>
385-
<Link className="button button--primary button--lg" to="/docs/quickstart/python">
386-
Start with TypeScript
386+
<Link className="button button--primary button--lg" to="/docs/quickstart/mission-control">
387+
Build Mission Control
387388
</Link>
388-
<Link className="button button--secondary button--lg" to="/docs/overview/aster-vs-grpc">
389-
Aster vs gRPC
389+
<Link className="button button--secondary button--lg" to="/docs/quickstart/python">
390+
Try it in 60 seconds
390391
</Link>
391392
</div>
392393

@@ -413,8 +414,8 @@ export default function Home(): React.JSX.Element {
413414
and intent still need to hold.
414415
</p>
415416
<div className="asterProof__links">
417+
<Link to="/docs/quickstart/mission-control">Mission Control walkthrough</Link>
416418
<Link to="/docs/overview/why-aster">Why Aster</Link>
417-
<Link to="/docs/concepts/transport">Transport model</Link>
418419
<Link to="/docs/guides/mcp-integration">MCP integration</Link>
419420
</div>
420421
</div>
@@ -468,7 +469,7 @@ producer:/services/HelloService$ ./say_hello name="World"
468469
<section className="asterSection asterSection--paper">
469470
<div className="container">
470471
<FeatureBlock
471-
kicker="AI-native"
472+
kicker="MCP integration"
472473
title="Connect any AI agent to your services in one command."
473474
code={`# Expose your service to Claude or any MCP-compatible agent
474475
$ aster mcp <endpoint-addr>
@@ -557,17 +558,17 @@ $ aster mcp <endpoint-addr>
557558
</div>
558559

559560
<div className="asterLaunchpad__actions">
560-
<Link className="button button--primary button--lg" to="/docs/quickstart/python">
561-
Python quickstart
561+
<Link className="button button--primary button--lg" to="/docs/quickstart/mission-control">
562+
Build Mission Control
562563
</Link>
563564
<Link className="button button--primary button--lg" to="/docs/quickstart/python">
564-
TypeScript quickstart
565+
60-second quickstart
565566
</Link>
566567
<Link className="button button--secondary button--lg" to="/docs/guides/define-a-service">
567568
Define a service
568569
</Link>
569-
<Link className="button button--secondary button--lg" to="/docs/examples/hello-service">
570-
Hello service example
570+
<Link className="button button--secondary button--lg" to="/docs/overview/aster-vs-grpc">
571+
Aster vs gRPC
571572
</Link>
572573
</div>
573574
</div>

0 commit comments

Comments
 (0)