Skip to content

Commit 135c35b

Browse files
Slide edits for formatting and switch over to svgs for images
1 parent bbfcd61 commit 135c35b

11 files changed

Lines changed: 714 additions & 18 deletions
-123 KB
Binary file not shown.

slides/assets/tailscale/aperture-architecture.svg

Lines changed: 122 additions & 0 deletions
Loading
-194 KB
Binary file not shown.

slides/assets/tailscale/identity-layer3-mesh.svg

Lines changed: 183 additions & 0 deletions
Loading
-225 KB
Binary file not shown.

slides/assets/tailscale/vpn-hub-pain.svg

Lines changed: 277 additions & 0 deletions
Loading

slides/slides.md

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ info: |
77
Tailscale networking and Aperture API gateway, powered by Temporal.
88
author: Mason Egger & Kartik Bharath
99
keywords: temporal,tailscale,aperture,ai,agents
10-
colorSchema: dark
10+
colorSchema: light
1111
fonts:
1212
sans: 'Inter'
1313
mono: 'Noto Sans Mono'
@@ -31,11 +31,13 @@ that's secured end-to-end by Tailscale networking.
3131
-->
3232

3333
---
34-
layout: two-cols
34+
layout: two-cols-header
3535
---
3636

3737
# About Us
3838

39+
::left::
40+
3941
### Mason Egger
4042
Senior Solutions Architect, **Temporal**
4143

@@ -47,12 +49,12 @@ PSF Fellow. President of the PyTexas Foundation.
4749

4850
::right::
4951

50-
<br><br>
51-
5252
### Kartik Bharath
53-
*[Title]*, **Tailscale**
53+
Solutions Engineer, **Tailscale**
5454

55-
*[Kartik bio]*
55+
"Computers should go brrr. If they don't, I
56+
enjoy figuring out why and how we can collectively
57+
share knowledge to make them go brrr better."
5658

5759
<!--
5860
Quick intros. We'll keep it brief since we have a lot to build today.
@@ -159,7 +161,7 @@ layout: section
159161
# It's too easy to put private things on the public internet.
160162

161163
---
162-
layout: two-cols
164+
layout: two-cols-figure
163165
---
164166

165167
# So you hide it behind a VPN
@@ -177,7 +179,7 @@ layout: two-cols
177179

178180
::right::
179181

180-
<img src="./assets/tailscale/vpn-hub-pain.png" alt="Traditional VPN hub with gateways, approved users, and unapproved users" class="tailscale-figure" />
182+
<img src="./assets/tailscale/vpn-hub-pain.svg" alt="Traditional VPN hub with gateways, approved users, and unapproved users" class="tailscale-figure" />
181183

182184
---
183185

@@ -199,7 +201,7 @@ Tailscale brings identity and **WireGuard** all the way down to **Layer 3 — th
199201
</v-clicks>
200202

201203
---
202-
layout: two-cols
204+
layout: two-cols-figure
203205
---
204206

205207
# Everything connects on one network
@@ -216,7 +218,7 @@ Once devices join the tailnet, nodes reach each other directly over encrypted Wi
216218

217219
::right::
218220

219-
<img src="./assets/tailscale/identity-layer3-mesh.png" alt="Identity provider authenticating into a Layer-3 mesh network of devices" class="tailscale-figure" />
221+
<img src="./assets/tailscale/identity-layer3-mesh.svg" alt="Identity provider authenticating into a Layer-3 mesh network of devices" class="tailscale-figure" />
220222

221223
---
222224

@@ -225,7 +227,7 @@ Once devices join the tailnet, nodes reach each other directly over encrypted Wi
225227
<v-clicks>
226228

227229
- **API gateway** that sits between your code and external APIs
228-
- **Shared key management** - one OpenAI key, many users, nobody sees the key
230+
- **Shared key management** - one key per LLM provider, many users, nobody sees the key
229231
- **Identity-aware** - uses your Tailscale identity, no extra auth tokens
230232
- **Rate limiting** - per-user quotas so no one burns the whole budget
231233

@@ -240,7 +242,7 @@ Your LLM calls go to Aperture's endpoint instead of `api.openai.com`. Aperture f
240242
</v-click>
241243

242244
---
243-
layout: two-cols
245+
layout: two-cols-figure
244246
---
245247

246248
# Aperture by Tailscale
@@ -257,7 +259,7 @@ A **centralized gateway** for your AI tools. No API keys in developer hands.
257259

258260
::right::
259261

260-
<img src="./assets/tailscale/aperture-architecture.png" alt="Aperture sitting between users, agents, and LLM APIs" class="tailscale-figure" />
262+
<img src="./assets/tailscale/aperture-architecture.svg" alt="Aperture sitting between users, agents, and LLM APIs" class="tailscale-figure" />
261263

262264
---
263265

@@ -515,9 +517,9 @@ tailscale down
515517

516518
<v-clicks>
517519

518-
- **`--auth-key`** - non-interactive auth. Without it, `up` opens a browser for SSO.
520+
- **`--auth-key`** - non-interactive auth, suited for machine identity. Without it, `up` opens a browser for SSO assuming you are a human user registering/connecting your device (like a laptop or phone).
519521
- **`--hostname`** - what this node shows up as in `tailscale status` and `whois`. Uniqueness matters on a shared tailnet.
520-
- **`tailscale down`** - leaves the tailnet. The node stays registered; a future `up` reuses its identity.
522+
- **`tailscale down`** - disconnect from the tailnet. The node stays registered; a future `up` reuses its identity.
521523

522524
</v-clicks>
523525

@@ -1130,4 +1132,4 @@ layout: end
11301132

11311133
**Mason Egger**, mason.egger@temporal.io
11321134

1133-
**Kartik Bharath**, *[email]*
1135+
**Kartik Bharath**, kartik@tailscale.com

slides/theme-tailscale/layouts/end.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import TailscaleLogo from '../components/TailscaleLogo.vue'
3636
}
3737
.end-content {
3838
align-self: flex-start;
39-
max-width: 28ch;
39+
max-width: 22ch;
4040
}
4141
.end :deep(h1) {
4242
font-size: 3.2rem;
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<!--
2+
Two-column layout optimised for a diagram/figure in the right column.
3+
Left column: 40% (text/bullets). Right column: 60% (image, vertically centered).
4+
Markdown:
5+
---
6+
layout: two-cols-figure
7+
---
8+
## Left column
9+
::right::
10+
<img … class="tailscale-figure" />
11+
-->
12+
<script setup lang="ts">
13+
import TailscaleFooter from '../components/TailscaleFooter.vue'
14+
</script>
15+
16+
<template>
17+
<div class="slidev-layout two-cols-figure bg-grid">
18+
<div class="two-cols-grid">
19+
<div class="col col-left"><slot /></div>
20+
<div class="col col-right"><slot name="right" /></div>
21+
</div>
22+
<TailscaleFooter />
23+
</div>
24+
</template>
25+
26+
<style scoped>
27+
.two-cols-figure {
28+
display: flex;
29+
flex-direction: column;
30+
height: 100%;
31+
}
32+
.two-cols-grid {
33+
flex: 1 1 auto;
34+
min-height: 0;
35+
display: grid;
36+
grid-template-columns: 2fr 3fr;
37+
gap: 2rem;
38+
align-items: stretch;
39+
overflow: hidden;
40+
}
41+
.two-cols-figure :deep(h1) {
42+
font-size: 2.2rem;
43+
margin-bottom: 0.6rem;
44+
}
45+
.two-cols-figure :deep(.col) p,
46+
.two-cols-figure :deep(.col) li {
47+
font-size: 1.3rem;
48+
line-height: 1.35;
49+
}
50+
.two-cols-figure :deep(.col-right) {
51+
display: flex;
52+
align-items: center;
53+
justify-content: center;
54+
}
55+
.two-cols-figure :deep(.col-right) img {
56+
width: 100%;
57+
height: auto;
58+
max-height: 100%;
59+
max-width: 100%;
60+
}
61+
</style>
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<!--
2+
Two-column layout with a full-width header row above both columns.
3+
Markdown:
4+
---
5+
layout: two-cols-header
6+
---
7+
# Title spanning both columns
8+
::left::
9+
Left column content
10+
::right::
11+
Right column content
12+
-->
13+
<script setup lang="ts">
14+
import TailscaleFooter from '../components/TailscaleFooter.vue'
15+
</script>
16+
17+
<template>
18+
<div class="slidev-layout two-cols-header bg-grid">
19+
<div class="header"><slot name="default" /></div>
20+
<div class="two-cols-grid">
21+
<div class="col col-left"><slot name="left" /></div>
22+
<div class="col col-right"><slot name="right" /></div>
23+
</div>
24+
<TailscaleFooter />
25+
</div>
26+
</template>
27+
28+
<style scoped>
29+
.two-cols-header {
30+
display: flex;
31+
flex-direction: column;
32+
height: 100%;
33+
}
34+
.header {
35+
flex: 0 0 auto;
36+
}
37+
.two-cols-grid {
38+
flex: 1 1 auto;
39+
min-height: 0;
40+
display: grid;
41+
grid-template-columns: 1fr 1fr;
42+
gap: 2.5rem;
43+
align-items: start;
44+
overflow: hidden;
45+
}
46+
.two-cols-header :deep(.col) p,
47+
.two-cols-header :deep(.col) li {
48+
font-size: 1.3rem;
49+
line-height: 1.35;
50+
}
51+
</style>

0 commit comments

Comments
 (0)