WEBVTT

1
00:00:01.140 --> 00:00:05.020
<00:00:01.140>Hello, <00:00:01.267>everyone. <00:00:01.394>I'm <00:00:01.521>Erick, <00:00:01.649>and <00:00:01.776>I'm <00:00:01.903>happy <00:00:02.030>to <00:00:02.158>be <00:00:02.285>here <00:00:02.412>in <00:00:02.540>Berlin

2
00:00:05.140 --> 00:00:09.000
<00:00:05.140>at <00:00:05.314>We <00:00:05.489>Are <00:00:05.664>Developers. <00:00:05.840>Today, <00:00:06.015>we'll <00:00:06.189>show <00:00:06.364>you <00:00:06.539>an

3
00:00:09.180 --> 00:00:11.640
<00:00:09.180>MCP <00:00:09.413>server <00:00:09.646>I <00:00:09.879>built <00:00:10.113>for <00:00:10.346>HashiCorp <00:00:10.580>Nomad.

4
00:00:12.160 --> 00:00:16.000
<00:00:12.160>It <00:00:12.300>let <00:00:12.440>an <00:00:12.580>AI <00:00:12.720>assist <00:00:12.860>control <00:00:13.000>your <00:00:13.140>cluster <00:00:13.280>through <00:00:13.420>the <00:00:13.560>API

5
00:00:16.080 --> 00:00:19.520
<00:00:16.079>using <00:00:16.235>the <00:00:16.391>same <00:00:16.546>ACL <00:00:16.702>token <00:00:16.857>and <00:00:17.013>permission <00:00:17.168>we <00:00:17.324>already <00:00:17.479>have.

6
00:00:20.400 --> 00:00:24.380
<00:00:20.400>The <00:00:20.540>talk <00:00:20.680>is <00:00:20.820>called <00:00:20.959>Bridging <00:00:21.099>AI <00:00:21.240>and <00:00:21.380>Nomad: <00:00:21.520>A <00:00:21.659>Go-based <00:00:21.799>MCP

7
00:00:24.440 --> 00:00:26.220
<00:00:24.440>Server <00:00:24.906>for <00:00:25.373>Cluster <00:00:25.840>Control.

8
00:00:27.140 --> 00:00:31.040
<00:00:27.140>I <00:00:27.267>will <00:00:27.394>explain <00:00:27.521>how <00:00:27.649>it <00:00:27.776>works, <00:00:27.903>how <00:00:28.030>I <00:00:28.158>built <00:00:28.285>it, <00:00:28.412>and <00:00:28.540>then

9
00:00:31.120 --> 00:00:34.980
<00:00:31.120>we <00:00:31.227>will <00:00:31.335>do <00:00:31.443>a <00:00:31.550>live <00:00:31.658>demo <00:00:31.766>where <00:00:31.873>the <00:00:31.981>AI <00:00:32.089>will <00:00:32.196>list <00:00:32.304>jobs, <00:00:32.412>check <00:00:32.520>logs,

10
00:00:35.380 --> 00:00:36.020
<00:00:35.380>drain <00:00:35.956>node,

11
00:00:37.700 --> 00:00:41.540
<00:00:37.700>like <00:00:37.933>in <00:00:38.166>a <00:00:38.400>real <00:00:38.633>environment. <00:00:38.866>So <00:00:39.100>let's

12
00:00:41.720 --> 00:00:42.180
start.

13
00:00:44.480 --> 00:00:44.760
First,

14
00:00:46.960 --> 00:00:50.220
<00:00:46.960>something <00:00:47.135>about <00:00:47.310>me. <00:00:47.485>I'm <00:00:47.660>a <00:00:47.835>DevOps <00:00:48.010>engineer <00:00:48.185>at <00:00:48.360>Amadeus,

15
00:00:50.900 --> 00:00:52.920
<00:00:50.900>and <00:00:51.133>I'm <00:00:51.366>working <00:00:51.600>from <00:00:51.833>Nice <00:00:52.066>in <00:00:52.300>France.

16
00:00:53.560 --> 00:00:57.040
<00:00:53.560>My <00:00:53.760>job <00:00:53.960>is <00:00:54.160>basically <00:00:54.360>infrastructure <00:00:54.560>and <00:00:54.760>cloud <00:00:54.960>stuff.

17
00:00:57.500 --> 00:01:01.460
<00:00:57.500>Lately, <00:00:57.700>I've <00:00:57.900>been <00:00:58.100>doing <00:00:58.300>a <00:00:58.500>lot <00:00:58.700>with <00:00:58.900>AI

18
00:01:01.520 --> 00:01:04.380
<00:01:01.520>tools, <00:01:01.753>and <00:01:01.986>that's <00:01:02.220>how <00:01:02.453>this <00:01:02.686>project <00:01:02.920>started.

19
00:01:05.041 --> 00:01:08.820
<00:01:05.041>You <00:01:05.215>can <00:01:05.390>find <00:01:05.566>me <00:01:05.741>on <00:01:05.916>GitHub. <00:01:06.091>My <00:01:06.265>username <00:01:06.441>is

20
00:01:09.260 --> 00:01:13.240
<00:01:09.260>my <00:01:09.415>surname, <00:01:09.571>my <00:01:09.726>name, <00:01:09.882>cosierick. <00:01:10.037>I'm <00:01:10.193>also <00:01:10.348>on <00:01:10.504>LinkedIn, <00:01:10.660>and

21
00:01:13.720 --> 00:01:17.520
<00:01:13.720>my <00:01:13.847>email <00:01:13.974>is <00:01:14.101>on <00:01:14.229>this <00:01:14.356>slide <00:01:14.483>if <00:01:14.610>you <00:01:14.738>want <00:01:14.865>to <00:01:14.992>chat <00:01:15.120>later.

22
00:01:19.840 --> 00:01:23.040
<00:01:19.840>So <00:01:20.120>let's <00:01:20.400>start <00:01:20.680>with <00:01:20.960>the <00:01:21.240>agenda.

23
00:01:25.000 --> 00:01:28.450
<00:01:25.000>Here <00:01:25.127>is <00:01:25.254>the <00:01:25.381>plan <00:01:25.509>for <00:01:25.636>today. <00:01:25.763>First, <00:01:25.890>I <00:01:26.018>will <00:01:26.145>explain <00:01:26.272>Nomad <00:01:26.400>and

24
00:01:28.500 --> 00:01:30.020
<00:01:28.500>MCP, <00:01:29.868>then

25
00:01:32.080 --> 00:01:32.740
<00:01:32.080>a <00:01:32.674>quick

26
00:01:33.760 --> 00:01:37.660
<00:01:33.759>stop <00:01:33.899>on <00:01:34.039>LLM <00:01:34.179>skill. <00:01:34.320>After <00:01:34.460>that, <00:01:34.600>the <00:01:34.740>problem <00:01:34.880>I <00:01:35.020>wanted <00:01:35.160>to

27
00:01:37.740 --> 00:01:41.260
<00:01:37.740>solve, <00:01:37.940>how <00:01:38.140>I <00:01:38.340>build <00:01:38.540>it, <00:01:38.740>security, <00:01:38.940>design <00:01:39.140>choice,

28
00:01:41.520 --> 00:01:44.340
<00:01:41.520>live <00:01:41.753>demo, <00:01:41.986>and <00:01:42.220>finally, <00:01:42.453>the <00:01:42.686>lesson <00:01:42.920>learned.

29
00:01:46.120 --> 00:01:47.390
<00:01:46.120>So <00:01:46.691>let's <00:01:47.263>start

30
00:01:48.780 --> 00:01:51.240
<00:01:48.780>with <00:01:49.130>what <00:01:49.480>is <00:01:49.830>HashiCorp <00:01:50.180>Nomad.

31
00:01:53.840 --> 00:01:54.800
<00:01:53.840>HashiCorp <00:01:54.704>Nomad.

32
00:01:57.560 --> 00:02:00.460
<00:01:57.560>HashiCorp <00:01:57.715>Nomad <00:01:57.871>is <00:01:58.026>a <00:01:58.182>tool <00:01:58.337>that <00:01:58.493>run <00:01:58.648>on <00:01:58.804>your <00:01:58.960>software.

33
00:02:00.600 --> 00:02:04.510
<00:02:00.600>It <00:02:00.774>handle <00:02:00.949>a <00:02:01.125>Docker <00:02:01.300>container, <00:02:01.475>regular <00:02:01.649>programs, <00:02:01.824>Java <00:02:02.000>application,

34
00:02:04.600 --> 00:02:07.240
<00:02:04.600>batch <00:02:04.949>jobs, <00:02:05.300>even <00:02:05.649>virtual <00:02:06.000>machines.

35
00:02:08.280 --> 00:02:11.880
<00:02:08.280>Now, <00:02:08.435>some <00:02:08.591>of <00:02:08.746>you <00:02:08.902>might <00:02:09.057>be <00:02:09.213>thinking, <00:02:09.368>wait, <00:02:09.524>is <00:02:09.680>that

36
00:02:12.020 --> 00:02:15.820
<00:02:12.020>Kubernetes? <00:02:12.220>Not <00:02:12.420>really. <00:02:12.620>Nomad <00:02:12.820>is <00:02:13.020>different <00:02:13.220>in <00:02:13.420>a

37
00:02:15.900 --> 00:02:19.580
<00:02:15.900>few <00:02:16.100>ways. <00:02:16.300>First, <00:02:16.500>it's <00:02:16.700>simple. <00:02:16.900>Just <00:02:17.100>one <00:02:17.300>binary,

38
00:02:19.960 --> 00:02:23.420
<00:02:19.960>download <00:02:20.135>it, <00:02:20.310>run <00:02:20.485>it, <00:02:20.660>done. <00:02:20.835>No <00:02:21.010>etcd, <00:02:21.185>no <00:02:21.360>complicated

39
00:02:23.480 --> 00:02:24.000
setup,

40
00:02:24.800 --> 00:02:28.280
<00:02:24.800>way <00:02:25.033>less <00:02:25.266>work <00:02:25.500>than <00:02:25.733>Kubernetes. <00:02:25.966>Second, <00:02:26.200>it's

41
00:02:28.400 --> 00:02:31.340
<00:02:28.400>flexible. <00:02:28.680>Kubernetes <00:02:28.960>is <00:02:29.240>mostly <00:02:29.520>about <00:02:29.800>containers.

42
00:02:31.880 --> 00:02:34.579
<00:02:31.880>Nomad <00:02:32.160>doesn't <00:02:32.440>care. <00:02:32.720>Docker, <00:02:33.000>it's <00:02:33.280>okay.

43
00:02:34.780 --> 00:02:37.120
<00:02:34.780>A <00:02:34.980>Java <00:02:35.180>file, <00:02:35.380>okay, <00:02:35.580>no <00:02:35.780>problem. <00:02:35.980>A <00:02:36.180>plain

44
00:02:37.580 --> 00:02:38.880
executable,

45
00:02:39.680 --> 00:02:42.100
<00:02:39.680>no <00:02:39.960>problem. <00:02:40.240>Even <00:02:40.520>a <00:02:40.800>virtual <00:02:41.080>machine.

46
00:02:43.060 --> 00:02:46.630
<00:02:43.060>Third, <00:02:43.215>it <00:02:43.371>scale <00:02:43.526>million <00:02:43.682>of <00:02:43.837>container <00:02:43.993>in <00:02:44.148>a <00:02:44.304>real <00:02:44.460>production

47
00:02:46.720 --> 00:02:48.640
<00:02:46.720>systems. <00:02:47.070>Big <00:02:47.420>company <00:02:47.770>use <00:02:48.120>it,

48
00:02:49.800 --> 00:02:53.620
<00:02:49.800>so <00:02:50.000>it's <00:02:50.200>not <00:02:50.400>a <00:02:50.600>toy. <00:02:50.800>Here <00:02:51.000>and <00:02:51.200>here

49
00:02:53.700 --> 00:02:57.640
<00:02:53.700>is <00:02:53.827>the <00:02:53.954>most <00:02:54.081>important <00:02:54.209>part <00:02:54.336>for <00:02:54.463>us. <00:02:54.590>Nomad <00:02:54.718>has <00:02:54.845>a <00:02:54.972>REST <00:02:55.100>API,

50
00:02:59.040 --> 00:03:02.980
<00:02:59.040>and <00:02:59.179>anything <00:02:59.320>you <00:02:59.459>can <00:02:59.600>do <00:02:59.739>with <00:02:59.880>the <00:03:00.019>CLI <00:03:00.160>or <00:03:00.299>the <00:03:00.440>web

51
00:03:03.060 --> 00:03:05.860
<00:03:03.060>UI, <00:03:03.215>you <00:03:03.371>can <00:03:03.526>also <00:03:03.682>do <00:03:03.837>it <00:03:03.993>with <00:03:04.148>an <00:03:04.304>HTTP <00:03:04.460>call.

52
00:03:06.520 --> 00:03:08.840
<00:03:06.520>That's <00:03:06.800>what <00:03:07.080>makes <00:03:07.360>the <00:03:07.640>project <00:03:07.920>possible.

53
00:03:09.440 --> 00:03:13.400
<00:03:09.440>On <00:03:09.547>this <00:03:09.655>slide, <00:03:09.763>you <00:03:09.870>can <00:03:09.978>see <00:03:10.086>a <00:03:10.193>simple <00:03:10.301>job <00:03:10.409>file <00:03:10.516>written <00:03:10.624>in <00:03:10.732>HCL, <00:03:10.840>HashiCorp

54
00:03:13.460 --> 00:03:17.420
<00:03:13.460>Config <00:03:13.576>Language. <00:03:13.693>You <00:03:13.810>define <00:03:13.926>a <00:03:14.043>job, <00:03:14.160>a <00:03:14.276>group, <00:03:14.393>a <00:03:14.510>task, <00:03:14.626>pick <00:03:14.743>a <00:03:14.860>driver,

55
00:03:17.510 --> 00:03:21.019
<00:03:17.510>and <00:03:17.665>some <00:03:17.821>config, <00:03:17.976>and <00:03:18.132>give <00:03:18.287>it <00:03:18.443>to <00:03:18.598>Nomad, <00:03:18.754>and <00:03:18.910>run.

56
00:03:21.680 --> 00:03:22.560
<00:03:21.680>Here's <00:03:22.076>the <00:03:22.472>example.

57
00:03:23.500 --> 00:03:27.420
<00:03:23.500>So <00:03:23.600>we <00:03:23.700>have <00:03:23.800>the <00:03:23.900>job, <00:03:24.000>the <00:03:24.100>group, <00:03:24.200>the <00:03:24.300>task, <00:03:24.400>and <00:03:24.500>as <00:03:24.600>I <00:03:24.700>said, <00:03:24.800>the <00:03:24.900>driver

58
00:03:27.440 --> 00:03:29.600
<00:03:27.440>and <00:03:27.640>the <00:03:27.840>image <00:03:28.040>that <00:03:28.240>you <00:03:28.440>want <00:03:28.640>to <00:03:28.840>pull.

59
00:03:32.100 --> 00:03:35.540
<00:03:32.100>So <00:03:32.299>now <00:03:32.500>let's <00:03:32.700>also <00:03:32.900>introduce <00:03:33.100>what <00:03:33.299>is <00:03:33.500>MCP.

60
00:03:38.410 --> 00:03:38.580
MCP.

61
00:03:42.760 --> 00:03:46.560
<00:03:42.760>MCP <00:03:43.040>is <00:03:43.320>a <00:03:43.600>open <00:03:43.880>standard <00:03:44.160>protocol

62
00:03:46.620 --> 00:03:50.320
<00:03:46.620>made <00:03:46.775>by <00:03:46.931>Anthropic <00:03:47.086>to <00:03:47.242>let <00:03:47.397>AI <00:03:47.553>models <00:03:47.708>talk <00:03:47.864>to <00:03:48.020>external

63
00:03:50.380 --> 00:03:52.060
<00:03:50.380>tools <00:03:50.613>and <00:03:50.846>that <00:03:51.079>in <00:03:51.313>a <00:03:51.546>unified <00:03:51.780>way.

64
00:03:52.980 --> 00:03:56.760
<00:03:52.980>It's <00:03:53.213>like <00:03:53.446>a <00:03:53.679>USB-C <00:03:53.913>for <00:03:54.146>AI, <00:03:54.380>and

65
00:03:57.620 --> 00:04:01.580
<00:03:57.620>before <00:03:57.760>USB, <00:03:57.900>every <00:03:58.040>phone <00:03:58.180>had <00:03:58.320>a <00:03:58.460>different <00:03:58.600>charger, <00:03:58.740>so <00:03:58.880>it <00:03:59.020>was

66
00:04:01.620 --> 00:04:05.460
<00:04:01.620>a <00:04:01.820>mess, <00:04:02.020>and <00:04:02.220>before <00:04:02.420>MCP, <00:04:02.620>every <00:04:02.820>integrator <00:04:03.020>was

67
00:04:05.680 --> 00:04:09.640
<00:04:05.680>custom. <00:04:05.835>So <00:04:05.991>every <00:04:06.146>team <00:04:06.302>built <00:04:06.457>their <00:04:06.613>own <00:04:06.768>plug-in <00:04:06.924>system, <00:04:07.080>everyone

68
00:04:09.680 --> 00:04:12.720
<00:04:09.680>doing <00:04:09.880>the <00:04:10.080>same <00:04:10.280>work <00:04:10.480>over <00:04:10.680>and <00:04:10.880>over. <00:04:11.080>So

69
00:04:13.460 --> 00:04:17.079
<00:04:13.460>MCP <00:04:13.660>say, <00:04:13.860>"Hey, <00:04:14.060>here <00:04:14.260>we <00:04:14.460>have <00:04:14.660>a <00:04:14.860>standard.

70
00:04:17.840 --> 00:04:20.541
<00:04:17.839>You <00:04:18.015>can <00:04:18.190>use <00:04:18.364>me <00:04:18.539>once <00:04:18.714>and <00:04:18.890>use <00:04:19.065>me <00:04:19.239>everywhere.

71
00:04:21.260 --> 00:04:22.520
<00:04:21.260>You <00:04:21.543>can <00:04:21.827>use <00:04:22.110>me <00:04:22.394>everywhere."

72
00:04:24.480 --> 00:04:27.940
<00:04:24.480>It <00:04:24.680>has <00:04:24.880>four <00:04:25.080>main <00:04:25.280>parts. <00:04:25.480>So <00:04:25.680>tools, <00:04:25.880>so

73
00:04:28.400 --> 00:04:32.200
<00:04:28.400>they <00:04:28.539>are <00:04:28.679>the <00:04:28.820>action <00:04:28.960>that <00:04:29.099>AI <00:04:29.239>can <00:04:29.380>take, <00:04:29.520>like <00:04:29.659>listing <00:04:29.799>the

74
00:04:32.260 --> 00:04:35.520
<00:04:32.260>jobs, <00:04:32.493>scaling <00:04:32.726>a <00:04:32.960>job, <00:04:33.193>draining <00:04:33.426>a <00:04:33.659>node.

75
00:04:36.200 --> 00:04:38.350
<00:04:36.200>After, <00:04:36.400>we <00:04:36.599>have <00:04:36.800>the <00:04:37.000>resources, <00:04:37.200>so <00:04:37.400>data <00:04:37.599>that

76
00:04:38.350 --> 00:04:42.140
<00:04:38.350>the <00:04:38.700>AI <00:04:39.050>can <00:04:39.400>read, <00:04:39.750>file

77
00:04:42.280 --> 00:04:45.660
<00:04:42.280>or <00:04:42.559>database <00:04:42.840>info <00:04:43.119>or <00:04:43.400>a <00:04:43.679>CSV

78
00:04:45.760 --> 00:04:49.680
<00:04:45.760>or <00:04:45.993>anything <00:04:46.226>that <00:04:46.460>is <00:04:46.693>text. <00:04:46.926>After, <00:04:47.159>we

79
00:04:49.700 --> 00:04:53.260
<00:04:49.700>have <00:04:49.875>the <00:04:50.050>prompts <00:04:50.224>that <00:04:50.400>are <00:04:50.575>ready-made <00:04:50.750>template <00:04:50.925>for <00:04:51.099>common

80
00:04:53.300 --> 00:04:55.800
<00:04:53.300>task. <00:04:53.533>And <00:04:53.766>finally, <00:04:54.000>we <00:04:54.233>have <00:04:54.466>the <00:04:54.700>transport.

81
00:04:56.380 --> 00:04:58.320
<00:04:56.380>That <00:04:56.730>is <00:04:57.080>how <00:04:57.430>communication <00:04:57.780>happens

82
00:04:59.180 --> 00:05:02.520
<00:04:59.180>inside <00:04:59.530>our <00:04:59.880>MCP. <00:05:00.230>So <00:05:00.580>basically,

83
00:05:02.700 --> 00:05:05.740
<00:05:02.700>STD, <00:05:03.166>SSA, <00:05:03.633>and <00:05:04.099>HTTP.

84
00:05:10.320 --> 00:05:13.980
<00:05:10.320>Before <00:05:10.460>MCP, <00:05:10.599>an <00:05:10.740>AI <00:05:10.880>could <00:05:11.020>tell <00:05:11.159>you <00:05:11.300>to <00:05:11.440>scale <00:05:11.580>your <00:05:11.719>job,

85
00:05:14.180 --> 00:05:17.720
<00:05:14.180>run <00:05:14.413>this <00:05:14.646>command, <00:05:14.880>nomad <00:05:15.113>job <00:05:15.346>scale <00:05:15.580>-count

86
00:05:17.860 --> 00:05:18.900
<00:05:17.860>5 <00:05:18.796>web.

87
00:05:20.220 --> 00:05:22.740
<00:05:20.220>With <00:05:20.420>MCP, <00:05:20.620>the <00:05:20.820>AI <00:05:21.020>can <00:05:21.220>actually <00:05:21.420>do <00:05:21.620>it.

88
00:05:23.040 --> 00:05:24.260
<00:05:23.040>So <00:05:23.314>it <00:05:23.589>call <00:05:23.863>the <00:05:24.138>tool,

89
00:05:28.540 --> 00:05:32.100
<00:05:28.540>get <00:05:28.680>the <00:05:28.820>result, <00:05:28.960>and <00:05:29.100>say, <00:05:29.240>"Okay, <00:05:29.380>done. <00:05:29.520>This <00:05:29.660>is <00:05:29.800>the <00:05:29.940>result.

90
00:05:32.300 --> 00:05:34.460
<00:05:32.300>You <00:05:32.650>have <00:05:33.000>five <00:05:33.350>instance <00:05:33.700>now."

91
00:05:37.580 --> 00:05:38.320
<00:05:37.580>So <00:05:37.801>this <00:05:38.024>is <00:05:38.246>a

92
00:05:39.400 --> 00:05:43.280
<00:05:39.400>example <00:05:39.555>schema <00:05:39.711>exactly <00:05:39.866>where <00:05:40.022>AI <00:05:40.177>can <00:05:40.333>talk <00:05:40.488>using <00:05:40.644>an <00:05:40.799>MCP

93
00:05:43.320 --> 00:05:47.000
<00:05:43.320>protocol, <00:05:43.495>and <00:05:43.670>the <00:05:43.844>MCP <00:05:44.020>protocol <00:05:44.195>is <00:05:44.370>calling <00:05:44.545>the <00:05:44.719>API

94
00:05:47.080 --> 00:05:47.469
directly.

95
00:05:49.920 --> 00:05:53.520
<00:05:49.920>Now, <00:05:50.060>I <00:05:50.200>want <00:05:50.340>to <00:05:50.480>talk <00:05:50.620>a <00:05:50.760>bit <00:05:50.900>about <00:05:51.040>LLM <00:05:51.180>skills <00:05:51.320>because

96
00:05:54.600 --> 00:05:58.560
<00:05:54.600>they're <00:05:54.740>really <00:05:54.880>important <00:05:55.020>and <00:05:55.160>might <00:05:55.300>be <00:05:55.440>replace <00:05:55.580>MCP <00:05:55.720>server <00:05:55.860>in <00:05:56.000>some

97
00:05:58.600 --> 00:05:58.920
days.

98
00:06:00.120 --> 00:06:04.060
<00:06:00.120>You <00:06:00.275>can <00:06:00.431>think <00:06:00.586>of <00:06:00.742>them <00:06:00.897>like <00:06:01.053>an <00:06:01.208>instruction <00:06:01.364>playbook, <00:06:01.520>markdown

99
00:06:04.160 --> 00:06:08.080
<00:06:04.160>files <00:06:04.300>that <00:06:04.440>are <00:06:04.580>tell <00:06:04.720>an <00:06:04.860>AI <00:06:05.000>how <00:06:05.140>you <00:06:05.280>want <00:06:05.420>things <00:06:05.560>done.

100
00:06:08.332 --> 00:06:08.672
Done.

101
00:06:09.712 --> 00:06:13.212
<00:06:09.712>The <00:06:09.912>same <00:06:10.111>playbook <00:06:10.312>work <00:06:10.512>across <00:06:10.712>different <00:06:10.912>AI <00:06:11.111>products.

102
00:06:14.712 --> 00:06:17.712
<00:06:14.712>And <00:06:14.867>here <00:06:15.023>is <00:06:15.178>how <00:06:15.334>it <00:06:15.489>works. <00:06:15.645>You <00:06:15.800>give <00:06:15.956>a <00:06:16.111>task,

103
00:06:18.652 --> 00:06:19.062
and

104
00:06:19.992 --> 00:06:21.612
<00:06:19.992>the <00:06:20.225>system <00:06:20.458>look <00:06:20.692>for <00:06:20.925>a <00:06:21.158>matching <00:06:21.392>skill.

105
00:06:21.792 --> 00:06:25.552
<00:06:21.792>It <00:06:21.967>found, <00:06:22.142>it <00:06:22.317>add <00:06:22.492>this <00:06:22.667>instruction <00:06:22.842>toward <00:06:23.017>the <00:06:23.192>AI

106
00:06:25.592 --> 00:06:28.012
<00:06:25.592>scenes. <00:06:25.942>They <00:06:26.292>follow <00:06:26.642>that <00:06:26.991>workflow.

107
00:06:28.232 --> 00:06:31.632
<00:06:28.232>Everyone <00:06:28.387>gets <00:06:28.543>the <00:06:28.698>same <00:06:28.854>result, <00:06:29.009>not <00:06:29.165>a <00:06:29.320>random <00:06:29.476>guessing <00:06:29.631>like

108
00:06:32.452 --> 00:06:36.172
<00:06:32.452>normal <00:06:32.685>AI. <00:06:32.918>But <00:06:33.152>skill <00:06:33.385>don't <00:06:33.618>replace <00:06:33.852>API.

109
00:06:36.752 --> 00:06:39.412
<00:06:36.752>They <00:06:36.927>don't <00:06:37.102>log <00:06:37.277>into <00:06:37.452>Nomad <00:06:37.627>for <00:06:37.802>you. <00:06:37.977>Skill <00:06:38.152>are

110
00:06:40.212 --> 00:06:43.552
<00:06:40.212>instruction, <00:06:40.491>basically <00:06:40.772>instruction, <00:06:41.051>text <00:06:41.332>file <00:06:41.611>instruction.

111
00:06:44.372 --> 00:06:48.272
<00:06:44.372>But <00:06:44.527>MCP <00:06:44.683>Nomad <00:06:44.838>is <00:06:44.994>the <00:06:45.149>action. <00:06:45.305>So <00:06:45.460>tool <00:06:45.616>that <00:06:45.772>actually

112
00:06:48.372 --> 00:06:50.932
<00:06:48.372>call <00:06:48.572>Nomad <00:06:48.772>API, <00:06:48.972>you <00:06:49.172>can <00:06:49.372>use <00:06:49.572>both <00:06:49.772>together.

113
00:06:53.492 --> 00:06:55.492
<00:06:53.492>Now <00:06:53.772>let's <00:06:54.052>start <00:06:54.332>with <00:06:54.612>the <00:06:54.892>problem.

114
00:06:56.632 --> 00:07:00.352
<00:06:56.632>This <00:06:56.772>is <00:06:56.912>an <00:06:57.052>example <00:06:57.192>schema, <00:06:57.332>where <00:06:57.472>we <00:06:57.612>have <00:06:57.752>the <00:06:57.892>skill, <00:06:58.032>the

115
00:07:00.492 --> 00:07:01.992
<00:07:00.492>empty <00:07:00.942>file, <00:07:01.392>our <00:07:01.842>markdown.

116
00:07:02.832 --> 00:07:06.412
<00:07:02.832>If <00:07:03.298>the <00:07:03.765>AI <00:07:04.232>match

117
00:07:06.652 --> 00:07:10.372
<00:07:06.652>the <00:07:06.792>skill, <00:07:06.931>it <00:07:07.072>will <00:07:07.212>merge <00:07:07.352>it <00:07:07.491>into <00:07:07.632>the <00:07:07.772>prompt, <00:07:07.912>and <00:07:08.051>will

118
00:07:10.432 --> 00:07:12.032
<00:07:10.432>execute <00:07:10.898>the <00:07:11.365>same <00:07:11.832>steps.

119
00:07:14.112 --> 00:07:16.512
<00:07:14.112>Now <00:07:14.312>let's <00:07:14.512>start <00:07:14.712>with <00:07:14.912>the <00:07:15.112>problem <00:07:15.312>that <00:07:15.512>I

120
00:07:17.492 --> 00:07:18.232
<00:07:17.492>tried <00:07:17.825>to <00:07:18.157>solve.

121
00:07:22.952 --> 00:07:23.052
So,

122
00:07:24.072 --> 00:07:27.692
<00:07:24.072>why <00:07:24.305>did <00:07:24.538>I <00:07:24.772>build <00:07:25.005>this? <00:07:25.238>So <00:07:25.472>let's

123
00:07:27.732 --> 00:07:30.152
<00:07:27.732>start <00:07:27.965>with, <00:07:28.198>for <00:07:28.431>example, <00:07:28.665>with <00:07:28.898>a <00:07:29.131>story.

124
00:07:30.652 --> 00:07:31.632
<00:07:30.652>You <00:07:30.945>are <00:07:31.240>on <00:07:31.534>call,

125
00:07:32.832 --> 00:07:36.692
<00:07:32.832>something <00:07:33.007>breaks. <00:07:33.182>Now <00:07:33.357>you're <00:07:33.532>jumping <00:07:33.707>between <00:07:33.882>the <00:07:34.057>normal <00:07:34.232>web

126
00:07:36.752 --> 00:07:40.492
<00:07:36.752>UI <00:07:36.927>tool <00:07:37.102>to <00:07:37.277>check <00:07:37.452>the <00:07:37.627>status, <00:07:37.802>the <00:07:37.977>terminal, <00:07:38.152>the

127
00:07:40.692 --> 00:07:44.132
<00:07:40.692>doc <00:07:40.892>for <00:07:41.092>the <00:07:41.292>right <00:07:41.492>flag, <00:07:41.692>some <00:07:41.892>runbook <00:07:42.092>somewhere.

128
00:07:44.712 --> 00:07:48.432
<00:07:44.712>It's <00:07:44.991>exhausting, <00:07:45.272>and <00:07:45.551>the <00:07:45.832>context <00:07:46.111>switching

129
00:07:48.592 --> 00:07:52.312
<00:07:48.592>is <00:07:48.732>a <00:07:48.871>lot, <00:07:49.012>even <00:07:49.152>worse <00:07:49.292>if <00:07:49.431>you <00:07:49.572>don't <00:07:49.712>know <00:07:49.852>all <00:07:49.991>the

130
00:07:52.372 --> 00:07:54.852
<00:07:52.372>commands <00:07:52.722>or <00:07:53.072>manage <00:07:53.422>multiple <00:07:53.772>cluster.

131
00:07:55.352 --> 00:07:59.092
<00:07:55.352>Then <00:07:55.631>now <00:07:55.912>things <00:07:56.191>is <00:07:56.472>their <00:07:56.751>task

132
00:07:59.312 --> 00:08:03.212
<00:07:59.312>are <00:07:59.439>often <00:07:59.566>the <00:07:59.693>same <00:07:59.821>stuff. <00:07:59.948>Doing <00:08:00.075>a <00:08:00.202>node, <00:08:00.330>check <00:08:00.457>logs, <00:08:00.584>restart <00:08:00.712>something,

133
00:08:03.772 --> 00:08:07.212
<00:08:03.772>scale <00:08:03.927>up <00:08:04.083>before <00:08:04.238>traffic <00:08:04.394>hits. <00:08:04.549>And <00:08:04.705>here <00:08:04.860>is <00:08:05.016>the <00:08:05.171>thing.

134
00:08:07.572 --> 00:08:11.212
<00:08:07.572>No <00:08:07.747>MCP <00:08:07.922>server <00:08:08.097>existing <00:08:08.272>for <00:08:08.447>Nomad. <00:08:08.622>GitHub <00:08:08.797>has <00:08:08.972>one.

135
00:08:11.652 --> 00:08:14.432
<00:08:11.652>Luck <00:08:11.852>has <00:08:12.051>one. <00:08:12.252>Database <00:08:12.452>has <00:08:12.652>one. <00:08:12.852>Nomad, <00:08:13.051>nothing.

136
00:08:16.152 --> 00:08:16.332
So,

137
00:08:17.972 --> 00:08:18.412
<00:08:17.972>this <00:08:18.368>was

138
00:08:19.372 --> 00:08:20.412
<00:08:19.372>my <00:08:20.308>vision.

139
00:08:23.212 --> 00:08:25.812
<00:08:23.212>And <00:08:23.367>with <00:08:23.523>this <00:08:23.678>MCP, <00:08:23.834>you <00:08:23.989>can <00:08:24.145>say, <00:08:24.300>"What <00:08:24.456>is <00:08:24.611>running?

140
00:08:26.372 --> 00:08:29.572
<00:08:26.372>Show <00:08:26.527>me <00:08:26.683>the <00:08:26.838>logs, <00:08:26.994>scale <00:08:27.149>this <00:08:27.305>job <00:08:27.460>to <00:08:27.616>five <00:08:27.772>instance,"

141
00:08:30.352 --> 00:08:32.572
<00:08:30.352>all <00:08:30.818>in <00:08:31.285>one <00:08:31.751>place,

142
00:08:34.192 --> 00:08:38.012
<00:08:34.192>using <00:08:34.366>just <00:08:34.542>the <00:08:34.717>natural <00:08:34.892>language <00:08:35.067>and, <00:08:35.241>only <00:08:35.417>what <00:08:35.592>you

143
00:08:38.052 --> 00:08:38.661
<00:08:38.052>permission <00:08:38.600>that

144
00:08:39.712 --> 00:08:40.112
<00:08:39.712>you <00:08:40.072>allow.

145
00:08:40.913 --> 00:08:43.033
<00:08:40.913>This <00:08:41.263>is <00:08:41.613>basically <00:08:41.962>MCP <00:08:42.313>Nomad.

146
00:08:45.172 --> 00:08:48.032
<00:08:45.172>So <00:08:45.347>now <00:08:45.522>I <00:08:45.697>will <00:08:45.872>show <00:08:46.047>you <00:08:46.222>an <00:08:46.397>architecture <00:08:46.572>diagram.

147
00:08:51.392 --> 00:08:53.112
<00:08:51.392>So <00:08:51.742>basically, <00:08:52.092>the <00:08:52.442>user <00:08:52.792>is

148
00:08:54.372 --> 00:08:56.252
<00:08:54.372>talking <00:08:54.722>with <00:08:55.072>the <00:08:55.421>AI. <00:08:55.771>So,

149
00:08:57.272 --> 00:08:58.532
<00:08:57.272>we <00:08:57.555>send <00:08:57.839>the <00:08:58.122>prompt, <00:08:58.406>scale

150
00:09:00.052 --> 00:09:03.812
<00:09:00.052>the <00:09:00.252>job <00:09:00.452>web <00:09:00.652>to <00:09:00.852>five <00:09:01.052>instance. <00:09:01.252>The <00:09:01.452>AI

151
00:09:04.672 --> 00:09:06.032
<00:09:04.672>take <00:09:05.080>the <00:09:05.488>input, <00:09:05.896>will

152
00:09:06.932 --> 00:09:10.732
<00:09:06.932>call <00:09:07.132>the <00:09:07.332>tool <00:09:07.532>for <00:09:07.732>the <00:09:07.932>MCP <00:09:08.132>server. <00:09:08.332>And,

153
00:09:11.652 --> 00:09:15.512
<00:09:11.652>we <00:09:11.768>set <00:09:11.885>the <00:09:12.002>parameter, <00:09:12.118>so <00:09:12.235>with <00:09:12.352>the <00:09:12.468>job <00:09:12.585>name <00:09:12.702>and <00:09:12.818>the <00:09:12.935>number <00:09:13.052>of

154
00:09:15.572 --> 00:09:18.292
<00:09:15.572>instance <00:09:15.747>that <00:09:15.922>we <00:09:16.097>want. <00:09:16.272>So <00:09:16.447>in <00:09:16.622>this <00:09:16.797>case, <00:09:16.972>five.

155
00:09:19.112 --> 00:09:21.212
<00:09:19.112>The <00:09:19.345>MCP <00:09:19.578>server <00:09:19.812>will <00:09:20.045>call <00:09:20.278>the <00:09:20.512>API,

156
00:09:22.972 --> 00:09:26.932
<00:09:22.972>and <00:09:23.088>the <00:09:23.205>API <00:09:23.322>will <00:09:23.438>return <00:09:23.555>the <00:09:23.672>code <00:09:23.788>with <00:09:23.905>a <00:09:24.021>status <00:09:24.138>to <00:09:24.255>200 <00:09:24.372>if

157
00:09:26.952 --> 00:09:27.632
<00:09:26.952>all <00:09:27.257>is <00:09:27.564>good.

158
00:09:28.732 --> 00:09:31.192
<00:09:28.732>And <00:09:28.887>the <00:09:29.043>MCP <00:09:29.198>server <00:09:29.354>will <00:09:29.509>return <00:09:29.665>the <00:09:29.820>result <00:09:29.976>to <00:09:30.132>the

159
00:09:32.252 --> 00:09:33.372
<00:09:32.252>LLM <00:09:33.260>assistant.

160
00:09:34.292 --> 00:09:36.392
<00:09:34.292>And <00:09:34.572>we <00:09:34.852>have <00:09:35.132>our <00:09:35.412>outputs <00:09:35.692>with

161
00:09:38.212 --> 00:09:41.352
<00:09:38.212>the <00:09:38.352>searches. <00:09:38.492>In <00:09:38.632>that <00:09:38.771>case, <00:09:38.912>it <00:09:39.052>scale <00:09:39.192>it <00:09:39.332>to <00:09:39.472>five <00:09:39.612>instance.

162
00:09:41.872 --> 00:09:44.792
<00:09:41.872>So <00:09:42.072>this <00:09:42.271>is <00:09:42.472>basically <00:09:42.671>how <00:09:42.872>that <00:09:43.072>it <00:09:43.271>works.

163
00:09:46.472 --> 00:09:48.221
<00:09:46.472>We <00:09:46.705>have <00:09:46.938>three <00:09:47.172>ways <00:09:47.405>to <00:09:47.638>connect <00:09:47.872>your

164
00:09:49.232 --> 00:09:52.992
<00:09:49.232>MCP. <00:09:49.465>So <00:09:49.698>basically, <00:09:49.932>we <00:09:50.165>can <00:09:50.398>use <00:09:50.632>STDO,

165
00:09:54.812 --> 00:09:58.532
<00:09:54.812>is <00:09:54.952>the <00:09:55.092>default <00:09:55.232>one. <00:09:55.372>They <00:09:55.512>start <00:09:55.652>our <00:09:55.792>program, <00:09:55.932>talk <00:09:56.072>to <00:09:56.212>it

166
00:09:58.672 --> 00:10:02.252
<00:09:58.672>directly, <00:09:58.847>super <00:09:59.022>simple, <00:09:59.197>work <00:09:59.372>great <00:09:59.547>with <00:09:59.722>the <00:09:59.897>cloud <00:10:00.072>desktop.

167
00:10:03.152 --> 00:10:06.432
<00:10:03.152>After, <00:10:03.327>we <00:10:03.502>have <00:10:03.677>the <00:10:03.852>SSA, <00:10:04.027>so <00:10:04.202>server <00:10:04.377>sent <00:10:04.552>events.

168
00:10:06.592 --> 00:10:09.692
<00:10:06.592>It's <00:10:06.766>for <00:10:06.942>web <00:10:07.117>apps <00:10:07.292>needing <00:10:07.467>for <00:10:07.641>a <00:10:07.817>persisting <00:10:07.992>connection.

169
00:10:10.332 --> 00:10:14.202
<00:10:10.332>And <00:10:10.507>finally, <00:10:10.682>but <00:10:10.857>not <00:10:11.032>least <00:10:11.207>important, <00:10:11.382>the <00:10:11.557>stream <00:10:11.732>will

170
00:10:14.892 --> 00:10:17.612
<00:10:14.892>http <00:10:15.242>is <00:10:15.592>basically <00:10:15.942>for <00:10:16.292>production.

171
00:10:17.752 --> 00:10:21.432
<00:10:17.752>You <00:10:17.926>can <00:10:18.102>use <00:10:18.276>http <00:10:18.452>streaming, <00:10:18.627>and <00:10:18.801>it's <00:10:18.977>good <00:10:19.151>for

172
00:10:21.472 --> 00:10:22.772
<00:10:21.472>remote <00:10:22.642>setup.

173
00:10:27.392 --> 00:10:30.071
<00:10:27.392>Here <00:10:27.567>we <00:10:27.742>have <00:10:27.917>the <00:10:28.092>list <00:10:28.267>of <00:10:28.442>all <00:10:28.617>the <00:10:28.792>tools.

174
00:10:30.292 --> 00:10:33.572
<00:10:30.292>We <00:10:30.467>have <00:10:30.642>50 <00:10:30.817>tools <00:10:30.992>covering <00:10:31.167>the <00:10:31.342>full <00:10:31.517>Nomad <00:10:31.692>API.

175
00:10:33.632 --> 00:10:37.372
<00:10:33.632>So <00:10:33.787>the <00:10:33.943>tools <00:10:34.098>regarding <00:10:34.254>the <00:10:34.409>jobs, <00:10:34.565>the <00:10:34.720>nodes, <00:10:34.876>the <00:10:35.031>location,

176
00:10:37.812 --> 00:10:41.772
<00:10:37.812>the <00:10:37.987>ACL, <00:10:38.162>and <00:10:38.337>also <00:10:38.512>to <00:10:38.687>manage <00:10:38.862>the <00:10:39.037>namespace, <00:10:39.212>variable,

177
00:10:42.032 --> 00:10:43.652
<00:10:42.032>volumes, <00:10:43.432>cluster.

178
00:10:44.752 --> 00:10:48.672
<00:10:44.752>And <00:10:44.859>as <00:10:44.967>you <00:10:45.075>can <00:10:45.182>see, <00:10:45.290>there <00:10:45.398>are <00:10:45.505>a <00:10:45.613>lot, <00:10:45.721>and <00:10:45.828>it's <00:10:45.936>not <00:10:46.044>so <00:10:46.151>simple

179
00:10:48.712 --> 00:10:52.052
<00:10:48.712>to <00:10:48.887>manage <00:10:49.062>it. <00:10:49.237>So <00:10:49.412>we'll <00:10:49.587>see <00:10:49.762>what <00:10:49.937>is <00:10:50.112>important

180
00:10:52.432 --> 00:10:52.752
later.

181
00:10:55.332 --> 00:10:59.312
<00:10:55.332>But <00:10:55.448>the <00:10:55.565>goal <00:10:55.682>is <00:10:55.798>if <00:10:55.915>Nomad <00:10:56.032>can <00:10:56.148>do <00:10:56.265>it, <00:10:56.382>the <00:10:56.498>AI <00:10:56.615>should <00:10:56.732>do.

182
00:11:04.592 --> 00:11:08.432
<00:11:04.592>Okay. <00:11:04.792>So <00:11:04.992>now <00:11:05.192>I <00:11:05.391>will <00:11:05.592>show <00:11:05.792>you <00:11:05.992>how

183
00:11:08.772 --> 00:11:12.232
<00:11:08.772>does <00:11:08.912>it <00:11:09.052>work, <00:11:09.192>the <00:11:09.332>registration, <00:11:09.472>and <00:11:09.612>the <00:11:09.752>handle <00:11:09.892>of <00:11:10.032>the <00:11:10.172>tools.

184
00:11:12.932 --> 00:11:16.452
<00:11:12.932>So <00:11:13.107>basically, <00:11:13.282>we <00:11:13.457>have <00:11:13.632>our <00:11:13.807>creation <00:11:13.982>of <00:11:14.157>the <00:11:14.332>tool,

185
00:11:17.152 --> 00:11:17.532
<00:11:17.152>where <00:11:17.494>we

186
00:11:20.472 --> 00:11:23.532
<00:11:20.472>declare <00:11:20.646>the <00:11:20.822>tool <00:11:20.997>name, <00:11:21.172>the <00:11:21.347>description, <00:11:21.521>and <00:11:21.697>the <00:11:21.872>parameter.

187
00:11:24.532 --> 00:11:28.052
<00:11:24.532>After <00:11:24.732>that, <00:11:24.932>we <00:11:25.132>can <00:11:25.332>add <00:11:25.532>the <00:11:25.732>tool <00:11:25.932>inside

188
00:11:28.892 --> 00:11:30.272
<00:11:28.892>our <00:11:29.513>MCP, <00:11:30.134>and

189
00:11:31.252 --> 00:11:34.632
<00:11:31.252>we <00:11:31.407>can <00:11:31.563>specify <00:11:31.718>the <00:11:31.874>function <00:11:32.029>that <00:11:32.185>the <00:11:32.340>lamp <00:11:32.496>should <00:11:32.651>call

190
00:11:35.272 --> 00:11:35.482
when

191
00:11:36.772 --> 00:11:39.412
<00:11:36.772>a <00:11:36.972>job <00:11:37.172>is <00:11:37.372>called. <00:11:37.572>So <00:11:37.772>in <00:11:37.972>that <00:11:38.172>case,

192
00:11:41.312 --> 00:11:45.132
<00:11:41.312>is <00:11:41.452>list <00:11:41.592>jobs. <00:11:41.732>And <00:11:41.872>at <00:11:42.012>the <00:11:42.152>end, <00:11:42.292>we <00:11:42.432>have <00:11:42.572>list <00:11:42.712>jobs

193
00:11:45.252 --> 00:11:49.172
<00:11:45.252>where <00:11:45.452>we <00:11:45.651>are <00:11:45.852>actually <00:11:46.051>making <00:11:46.252>the <00:11:46.452>request <00:11:46.651>to

194
00:11:49.232 --> 00:11:50.052
<00:11:49.232>the <00:11:49.970>page,

195
00:11:51.332 --> 00:11:51.672
<00:11:51.332>to <00:11:51.638>the

196
00:11:53.652 --> 00:11:55.292
<00:11:53.652>Nomad <00:11:54.118>cluster <00:11:54.585>API, <00:11:55.052>sorry.

197
00:11:56.972 --> 00:12:00.092
<00:11:56.972>It's <00:11:57.127>very <00:11:57.283>simple, <00:11:57.438>and <00:11:57.594>we <00:11:57.749>are <00:11:57.905>using <00:11:58.060>the <00:11:58.216>same <00:11:58.372>pattern

198
00:12:00.252 --> 00:12:01.872
<00:12:00.252>for <00:12:00.952>all <00:12:01.651>the

199
00:12:04.372 --> 00:12:05.112
API.

200
00:12:10.012 --> 00:12:13.252
<00:12:10.012>When <00:12:10.167>an <00:12:10.323>AI <00:12:10.478>can <00:12:10.634>change <00:12:10.789>your <00:12:10.945>production <00:12:11.100>system, <00:12:11.256>security <00:12:11.411>matters.

201
00:12:13.752 --> 00:12:15.032
<00:12:13.752>Here's <00:12:14.136>what <00:12:14.520>we <00:12:14.904>did

202
00:12:16.708 --> 00:12:19.228
<00:12:16.708>So <00:12:16.941>basically, <00:12:17.174>we <00:12:17.408>limited <00:12:17.641>the <00:12:17.874>API <00:12:18.108>calls.

203
00:12:19.368 --> 00:12:21.768
<00:12:19.368>The <00:12:19.543>server <00:12:19.718>can <00:12:19.893>only <00:12:20.068>hit <00:12:20.243>certain <00:12:20.418>Nomad <00:12:20.593>API <00:12:20.768>paths.

204
00:12:22.408 --> 00:12:25.868
<00:12:22.408>We <00:12:22.548>have <00:12:22.688>an <00:12:22.828>allowlist, <00:12:22.968>and <00:12:23.108>this <00:12:23.248>stops <00:12:23.388>bad <00:12:23.528>prompts <00:12:23.668>from <00:12:23.808>reaching

205
00:12:25.928 --> 00:12:27.688
<00:12:25.928>unexpected <00:12:27.328>endpoints.

206
00:12:30.088 --> 00:12:33.868
<00:12:30.088>After, <00:12:30.262>we <00:12:30.438>have <00:12:30.613>a <00:12:30.788>Nomad <00:12:30.963>token <00:12:31.137>as <00:12:31.313>an <00:12:31.488>environment

207
00:12:33.948 --> 00:12:37.808
<00:12:33.948>variable, <00:12:34.088>and <00:12:34.228>just <00:12:34.367>like <00:12:34.507>the <00:12:34.648>CLI. <00:12:34.788>So <00:12:34.928>the <00:12:35.068>request <00:12:35.208>uses <00:12:35.348>this

208
00:12:37.828 --> 00:12:40.648
<00:12:37.828>token, <00:12:37.968>and <00:12:38.108>then <00:12:38.247>I <00:12:38.387>can <00:12:38.528>only <00:12:38.668>do <00:12:38.808>what <00:12:38.948>the <00:12:39.088>token <00:12:39.228>allows.

209
00:12:42.008 --> 00:12:45.488
<00:12:42.008>This <00:12:42.148>is <00:12:42.288>really <00:12:42.428>nice <00:12:42.568>because <00:12:42.708>we <00:12:42.848>have <00:12:42.988>the <00:12:43.128>same <00:12:43.268>permission <00:12:43.408>as

210
00:12:46.008 --> 00:12:49.588
<00:12:46.008>our <00:12:46.163>token, <00:12:46.319>so <00:12:46.474>we <00:12:46.630>don't <00:12:46.785>need <00:12:46.941>to <00:12:47.096>manage <00:12:47.252>an <00:12:47.408>external

211
00:12:49.768 --> 00:12:52.848
<00:12:49.768>ACL <00:12:50.234>tool <00:12:50.701>or <00:12:51.168>token.

212
00:12:54.628 --> 00:12:55.848
<00:12:54.628>After <00:12:54.847>that <00:12:55.067>too, <00:12:55.286>we <00:12:55.506>have <00:12:55.726>an

213
00:12:56.888 --> 00:13:00.248
<00:12:56.888>origin <00:12:57.238>validation <00:12:57.588>check <00:12:57.938>for <00:12:58.288>HTTP

214
00:13:00.328 --> 00:13:04.148
<00:13:00.328>connection. <00:13:00.483>We <00:13:00.639>verify <00:13:00.794>where <00:13:00.950>the <00:13:01.105>request <00:13:01.261>comes <00:13:01.416>from, <00:13:01.572>and <00:13:01.728>we

215
00:13:04.188 --> 00:13:06.088
<00:13:04.188>trust <00:13:04.654>only <00:13:05.121>sources <00:13:05.588>allowed.

216
00:13:08.208 --> 00:13:12.188
<00:13:08.208>We <00:13:08.335>support <00:13:08.462>also <00:13:08.589>the <00:13:08.717>TLS <00:13:08.844>with <00:13:08.971>the <00:13:09.098>proper <00:13:09.226>certificate, <00:13:09.353>so <00:13:09.480>if <00:13:09.608>you

217
00:13:12.248 --> 00:13:16.188
<00:13:12.248>want <00:13:12.375>to <00:13:12.502>skip <00:13:12.629>also <00:13:12.757>the <00:13:12.884>verification, <00:13:13.011>or <00:13:13.138>if <00:13:13.266>you <00:13:13.393>need <00:13:13.520>it, <00:13:13.648>you

218
00:13:16.268 --> 00:13:18.308
<00:13:16.268>can <00:13:16.618>enable <00:13:16.968>or <00:13:17.318>disable <00:13:17.668>it.

219
00:13:19.328 --> 00:13:23.168
<00:13:19.328>And <00:13:19.483>we <00:13:19.639>set <00:13:19.794>also <00:13:19.950>a <00:13:20.105>timeout <00:13:20.261>for <00:13:20.416>the <00:13:20.572>connection, <00:13:20.728>reading

220
00:13:23.228 --> 00:13:26.328
<00:13:23.228>and <00:13:23.694>writing <00:13:24.161>to <00:13:24.627>handling

221
00:13:26.828 --> 00:13:27.848
<00:13:26.828>connection <00:13:27.746>abuse.

222
00:13:29.728 --> 00:13:33.648
<00:13:29.728>And <00:13:29.867>yeah, <00:13:30.007>all <00:13:30.147>the <00:13:30.287>Nomad <00:13:30.428>API <00:13:30.568>and <00:13:30.708>the <00:13:30.848>Nomad <00:13:30.988>tool <00:13:31.127>respect

223
00:13:33.788 --> 00:13:35.428
<00:13:33.788>the <00:13:34.254>Nomad <00:13:34.721>ACL <00:13:35.188>system,

224
00:13:36.308 --> 00:13:37.928
<00:13:36.308>and <00:13:36.658>as <00:13:37.008>I <00:13:37.358>said, <00:13:37.708>the

225
00:13:39.648 --> 00:13:42.268
<00:13:39.648>tool <00:13:39.881>can <00:13:40.114>do <00:13:40.348>what <00:13:40.581>the <00:13:40.814>token <00:13:41.048>allows.

226
00:13:46.848 --> 00:13:48.348
<00:13:46.848>Okay, <00:13:47.117>now <00:13:47.387>let's <00:13:47.657>start <00:13:47.928>with <00:13:48.198>the

227
00:13:49.188 --> 00:13:50.408
<00:13:49.188>key <00:13:49.737>design <00:13:50.286>choice.

228
00:13:52.168 --> 00:13:55.607
<00:13:52.168>Basically, <00:13:52.308>we <00:13:52.448>will <00:13:52.588>talk <00:13:52.728>about <00:13:52.868>what <00:13:53.008>works <00:13:53.148>well <00:13:53.288>and <00:13:53.428>the <00:13:53.568>trade-off.

229
00:13:57.568 --> 00:13:57.748
So

230
00:13:59.248 --> 00:14:00.568
<00:13:59.248>what <00:13:59.842>worked <00:14:00.436>well?

231
00:14:01.408 --> 00:14:04.688
<00:14:01.408>Basically, <00:14:01.641>we <00:14:01.874>have <00:14:02.108>separate <00:14:02.341>interfaces <00:14:02.574>for <00:14:02.808>jobs,

232
00:14:05.108 --> 00:14:08.928
<00:14:05.108>nodes, <00:14:05.341>allocation, <00:14:05.574>ACL. <00:14:05.808>Each <00:14:06.041>has <00:14:06.274>its <00:14:06.507>own

233
00:14:09.068 --> 00:14:12.928
<00:14:09.068>interface, <00:14:09.348>makes <00:14:09.627>testing <00:14:09.908>easy. <00:14:10.188>Want <00:14:10.468>to

234
00:14:12.968 --> 00:14:16.748
<00:14:12.968>test <00:14:13.095>a <00:14:13.222>job? <00:14:13.349>You <00:14:13.477>just <00:14:13.604>mock <00:14:13.731>the <00:14:13.858>job <00:14:13.986>client, <00:14:14.113>no <00:14:14.240>real <00:14:14.367>cluster

235
00:14:16.868 --> 00:14:20.508
<00:14:16.868>needed. <00:14:17.008>We <00:14:17.148>have <00:14:17.288>the <00:14:17.428>same <00:14:17.568>environment <00:14:17.708>variables <00:14:17.848>as <00:14:17.988>the <00:14:18.128>CLI, <00:14:18.268>so

236
00:14:20.668 --> 00:14:24.228
<00:14:20.668>NOMAD_ADDER, <00:14:20.823>NOMAD_TOKEN, <00:14:20.979>or <00:14:21.134>if <00:14:21.290>you <00:14:21.445>want <00:14:21.601>to <00:14:21.756>set <00:14:21.912>the <00:14:22.068>TLS

237
00:14:24.268 --> 00:14:25.848
<00:14:24.268>certificates, <00:14:24.548>you <00:14:24.828>have <00:14:25.108>also <00:14:25.388>a <00:14:25.668>variable.

238
00:14:26.708 --> 00:14:29.948
<00:14:26.708>If <00:14:26.882>you <00:14:27.058>know <00:14:27.233>the <00:14:27.408>CLI, <00:14:27.583>you <00:14:27.757>know <00:14:27.933>basically <00:14:28.108>mcp-nomad.

239
00:14:31.368 --> 00:14:35.108
<00:14:31.368>We're <00:14:31.495>using <00:14:31.622>an <00:14:31.749>MCP <00:14:31.877>Go <00:14:32.004>library <00:14:32.131>that <00:14:32.258>is <00:14:32.386>very <00:14:32.513>solid, <00:14:32.640>and <00:14:32.768>it

240
00:14:35.128 --> 00:14:38.908
<00:14:35.128>handles <00:14:35.303>perfectly <00:14:35.478>the <00:14:35.653>protocol, <00:14:35.828>so <00:14:36.003>we <00:14:36.178>don't <00:14:36.353>need <00:14:36.528>to

241
00:14:38.928 --> 00:14:41.468
<00:14:38.928>write <00:14:39.055>a <00:14:39.182>lot <00:14:39.309>of <00:14:39.437>code <00:14:39.564>if <00:14:39.691>you <00:14:39.818>want <00:14:39.946>to <00:14:40.073>add <00:14:40.200>new <00:14:40.328>tools.

242
00:14:42.528 --> 00:14:46.018
<00:14:42.528>We <00:14:42.808>have <00:14:43.088>multiple <00:14:43.368>transport <00:14:43.648>for <00:14:43.928>ssh,

243
00:14:46.508 --> 00:14:47.348
<00:14:46.508>or <00:14:47.264>for

244
00:14:48.748 --> 00:14:52.658
<00:14:48.748>local <00:14:48.864>use, <00:14:48.981>or <00:14:49.098>if <00:14:49.214>you <00:14:49.331>want <00:14:49.448>use, <00:14:49.564>we <00:14:49.681>can <00:14:49.798>use <00:14:49.914>also <00:14:50.031>SSA <00:14:50.148>or

245
00:14:52.728 --> 00:14:53.268
HTTP.

246
00:14:55.248 --> 00:14:57.798
<00:14:55.248>And <00:14:55.481>also, <00:14:55.714>we <00:14:55.948>have <00:14:56.181>just <00:14:56.414>one <00:14:56.648>binary,

247
00:14:58.708 --> 00:15:02.368
<00:14:58.708>thanks <00:14:58.815>to <00:14:58.923>Go, <00:14:59.031>because <00:14:59.138>it <00:14:59.246>compiles <00:14:59.354>just <00:14:59.461>a <00:14:59.569>single <00:14:59.677>file, <00:14:59.784>and <00:14:59.892>this <00:15:00.000>file <00:15:00.108>is

248
00:15:02.388 --> 00:15:06.108
<00:15:02.388>available <00:15:02.621>for... <00:15:02.854>The <00:15:03.088>build <00:15:03.321>is <00:15:03.554>available <00:15:03.788>for

249
00:15:06.168 --> 00:15:07.268
<00:15:06.168>Linux, <00:15:07.158>macOS,

250
00:15:08.248 --> 00:15:11.368
<00:15:08.248>and <00:15:08.598>it's <00:15:08.948>automatically <00:15:09.298>detected <00:15:09.648>by

251
00:15:12.748 --> 00:15:15.448
<00:15:12.748>installing <00:15:13.098>it <00:15:13.448>from <00:15:13.798>NPM <00:15:14.148>package.

252
00:15:17.008 --> 00:15:20.948
<00:15:17.008>But <00:15:17.163>we <00:15:17.319>have <00:15:17.474>some <00:15:17.630>trade-offs. <00:15:17.785>In <00:15:17.941>particular, <00:15:18.096>there <00:15:18.252>are <00:15:18.408>50

253
00:15:21.048 --> 00:15:24.588
<00:15:21.048>tools <00:15:21.203>that <00:15:21.359>are <00:15:21.514>already <00:15:21.670>a <00:15:21.825>lot, <00:15:21.981>and <00:15:22.136>AI <00:15:22.292>reads <00:15:22.448>all

254
00:15:24.688 --> 00:15:26.248
<00:15:24.688>description <00:15:24.968>to <00:15:25.247>pick <00:15:25.528>the <00:15:25.808>right <00:15:26.088>one.

255
00:15:26.908 --> 00:15:30.588
<00:15:26.908>So <00:15:27.063>a <00:15:27.219>good <00:15:27.374>description <00:15:27.530>helps, <00:15:27.685>but <00:15:27.841>more <00:15:27.996>tools <00:15:28.152>mean <00:15:28.308>more

256
00:15:30.728 --> 00:15:34.508
<00:15:30.728>latency <00:15:30.855>and <00:15:30.982>cost, <00:15:31.109>because <00:15:31.237>every <00:15:31.364>time, <00:15:31.491>the <00:15:31.618>LAMP <00:15:31.746>should <00:15:31.873>read <00:15:32.000>all <00:15:32.127>the

257
00:15:34.588 --> 00:15:35.148
description.

258
00:15:36.208 --> 00:15:40.188
<00:15:36.208>Also, <00:15:36.335>we <00:15:36.462>don't <00:15:36.589>have <00:15:36.717>extra <00:15:36.844>permission <00:15:36.971>layer, <00:15:37.098>so <00:15:37.226>permission <00:15:37.353>comes <00:15:37.480>from <00:15:37.608>Nomad

259
00:15:40.228 --> 00:15:43.628
<00:15:40.228>ACL <00:15:40.383>through <00:15:40.539>your <00:15:40.694>token. <00:15:40.850>We <00:15:41.005>just <00:15:41.161>add <00:15:41.316>an <00:15:41.472>API <00:15:41.627>path

260
00:15:43.748 --> 00:15:44.308
allowlist

261
00:15:45.288 --> 00:15:49.248
<00:15:45.288>on <00:15:45.415>the <00:15:45.542>top. <00:15:45.669>And <00:15:45.797>also, <00:15:45.924>actually, <00:15:46.051>we <00:15:46.178>don't <00:15:46.306>have <00:15:46.433>the <00:15:46.560>live <00:15:46.688>log

262
00:15:49.348 --> 00:15:53.168
<00:15:49.348>stream <00:15:49.522>yet, <00:15:49.698>so <00:15:49.872>you <00:15:50.048>can <00:15:50.223>fetch <00:15:50.397>logs, <00:15:50.573>but <00:15:50.747>can't

263
00:15:53.228 --> 00:15:54.988
<00:15:53.228>follow <00:15:53.507>them <00:15:53.787>in <00:15:54.068>real <00:15:54.348>time. <00:15:54.627>But

264
00:15:56.548 --> 00:15:59.048
<00:15:56.548>okay, <00:15:56.748>now <00:15:56.948>let's <00:15:57.148>start <00:15:57.348>with <00:15:57.548>a <00:15:57.748>live <00:15:57.948>demo,

265
00:16:00.108 --> 00:16:01.268
<00:16:00.108>and <00:16:00.368>this <00:16:00.630>is <00:16:00.891>the <00:16:01.152>fun

266
00:16:02.108 --> 00:16:05.948
<00:16:02.108>part, <00:16:02.341>and <00:16:02.574>we <00:16:02.808>can <00:16:03.041>see <00:16:03.274>the <00:16:03.507>MCP

267
00:16:06.068 --> 00:16:07.148
<00:16:06.068>Nomad <00:16:06.554>in <00:16:07.040>action.

268
00:16:09.168 --> 00:16:12.828
<00:16:09.168>This <00:16:09.323>is <00:16:09.479>not <00:16:09.634>just <00:16:09.790>a <00:16:09.945>simple <00:16:10.101>toy, <00:16:10.256>but <00:16:10.412>with <00:16:10.568>my

269
00:16:12.948 --> 00:16:16.788
<00:16:12.948>actual <00:16:13.181>home <00:16:13.414>server. <00:16:13.648>Unfortunately, <00:16:13.881>my <00:16:14.114>SSD <00:16:14.348>broken,

270
00:16:16.968 --> 00:16:20.788
<00:16:16.968>so <00:16:17.123>I <00:16:17.279>built <00:16:17.434>it <00:16:17.590>in <00:16:17.745>a <00:16:17.901>simulated <00:16:18.056>on <00:16:18.212>a <00:16:18.367>private

271
00:16:21.008 --> 00:16:21.368
server.

272
00:16:22.988 --> 00:16:24.888
<00:16:22.988>And <00:16:23.268>yeah, <00:16:23.548>basically, <00:16:23.828>we <00:16:24.108>have <00:16:24.388>a

273
00:16:26.588 --> 00:16:29.268
<00:16:26.588>server <00:16:26.938>with <00:16:27.288>a <00:16:27.637>laptop <00:16:27.988>pool.

274
00:16:30.168 --> 00:16:33.708
<00:16:30.168>We <00:16:30.343>will <00:16:30.518>use <00:16:30.693>a <00:16:30.868>CDO <00:16:31.043>connected <00:16:31.218>to <00:16:31.393>cloud, <00:16:31.568>and

275
00:16:34.188 --> 00:16:35.587
<00:16:34.188>yeah, <00:16:34.397>as <00:16:34.607>I <00:16:34.817>said, <00:16:35.027>the <00:16:35.237>system <00:16:35.447>we

276
00:16:36.728 --> 00:16:38.647
<00:16:36.728>use <00:16:37.007>Cloud <00:16:37.287>Desktop <00:16:37.568>for <00:16:37.848>the <00:16:38.127>UI.

277
00:16:39.708 --> 00:16:42.708
<00:16:39.708>As <00:16:39.848>you <00:16:39.988>can <00:16:40.127>see, <00:16:40.267>there <00:16:40.408>is <00:16:40.548>the <00:16:40.688>configuration. <00:16:40.828>It's <00:16:40.968>very <00:16:41.108>simple.

278
00:16:42.828 --> 00:16:46.748
<00:16:42.828>We <00:16:43.002>will <00:16:43.178>use <00:16:43.353>MPX <00:16:43.528>to <00:16:43.703>install <00:16:43.877>the <00:16:44.053>package, <00:16:44.228>and

279
00:16:47.388 --> 00:16:49.148
<00:16:47.388>also <00:16:47.621>we <00:16:47.854>will <00:16:48.088>set <00:16:48.321>the <00:16:48.554>environment <00:16:48.788>variable.

280
00:16:49.328 --> 00:16:51.628
<00:16:49.328>In <00:16:49.528>that <00:16:49.728>case, <00:16:49.928>I <00:16:50.127>just <00:16:50.328>put <00:16:50.528>a <00:16:50.728>placeholder.

281
00:16:51.788 --> 00:16:55.348
<00:16:51.788>For <00:16:51.943>example, <00:16:52.099>as <00:16:52.254>you <00:16:52.410>can <00:16:52.565>see, <00:16:52.721>there <00:16:52.876>is <00:16:53.032>a <00:16:53.188>localhost,

282
00:16:56.348 --> 00:16:58.648
<00:16:56.348>and <00:16:56.548>if <00:16:56.747>you <00:16:56.948>want, <00:16:57.147>you <00:16:57.348>can <00:16:57.548>enable <00:16:57.747>ACL

283
00:17:00.288 --> 00:17:01.268
<00:17:00.288>permission <00:17:01.170>token.

284
00:17:02.808 --> 00:17:06.168
<00:17:02.808>Okay, <00:17:03.158>so <00:17:03.508>let's <00:17:03.858>start <00:17:04.208>with

285
00:17:06.268 --> 00:17:07.328
<00:17:06.268>this <00:17:07.222>demo.

286
00:17:12.368 --> 00:17:13.028
<00:17:12.367>I <00:17:12.665>will <00:17:12.962>put

287
00:17:13.929 --> 00:17:14.788
<00:17:13.929>play <00:17:14.315>at <00:17:14.702>speed.

288
00:17:16.108 --> 00:17:16.768
Okay.

289
00:17:20.048 --> 00:17:20.189
So

290
00:17:21.508 --> 00:17:23.168
<00:17:21.508>here <00:17:21.858>I <00:17:22.208>show <00:17:22.558>you <00:17:22.908>that

291
00:17:24.288 --> 00:17:28.168
<00:17:24.288>we <00:17:24.415>already <00:17:24.542>connected <00:17:24.669>our <00:17:24.797>MCP, <00:17:24.924>and <00:17:25.051>here <00:17:25.178>we <00:17:25.306>have <00:17:25.433>a <00:17:25.560>list <00:17:25.688>of

292
00:17:28.449 --> 00:17:31.848
<00:17:28.449>token. <00:17:28.682>There <00:17:28.915>are <00:17:29.149>a <00:17:29.382>lot, <00:17:29.615>over <00:17:29.849>50,

293
00:17:33.008 --> 00:17:35.868
<00:17:33.008>and <00:17:33.241>it's <00:17:33.474>very <00:17:33.708>simple <00:17:33.941>to <00:17:34.174>use <00:17:34.408>and

294
00:17:36.688 --> 00:17:40.588
<00:17:36.688>configurate <00:17:36.863>it <00:17:37.038>with <00:17:37.213>cloud, <00:17:37.388>and <00:17:37.563>we <00:17:37.738>already <00:17:37.913>set <00:17:38.088>the

295
00:17:40.648 --> 00:17:41.968
<00:17:40.648>configuration <00:17:41.836>variable.

296
00:17:43.448 --> 00:17:43.668
And

297
00:17:44.868 --> 00:17:48.828
<00:17:44.868>what <00:17:45.101>I <00:17:45.334>did <00:17:45.568>is <00:17:45.801>run <00:17:46.034>my <00:17:46.268>entire

298
00:17:48.908 --> 00:17:49.328
setup

299
00:17:50.408 --> 00:17:54.048
<00:17:50.408>of <00:17:50.535>my <00:17:50.662>home <00:17:50.789>server. <00:17:50.917>So <00:17:51.044>we <00:17:51.171>have <00:17:51.298>a <00:17:51.426>lot <00:17:51.553>of <00:17:51.680>jobs, <00:17:51.808>so

300
00:17:54.088 --> 00:17:57.748
<00:17:54.088>Grafana, <00:17:54.368>Glance, <00:17:54.648>and <00:17:54.928>a <00:17:55.207>simple <00:17:55.488>echo,

301
00:17:57.848 --> 00:17:58.588
Prometheus.

302
00:17:59.928 --> 00:18:02.868
<00:17:59.928>As <00:18:00.128>I <00:18:00.328>said, <00:18:00.527>my <00:18:00.727>SSD <00:18:00.928>is <00:18:01.128>broken, <00:18:01.328>so

303
00:18:03.108 --> 00:18:06.708
<00:18:03.108>I <00:18:03.388>simulated <00:18:03.668>again <00:18:03.947>my <00:18:04.227>home <00:18:04.508>server.

304
00:18:07.208 --> 00:18:11.188
<00:18:07.208>So <00:18:07.383>I <00:18:07.558>used <00:18:07.733>Tailscale <00:18:07.908>to <00:18:08.083>connect <00:18:08.258>three <00:18:08.433>machines <00:18:08.608>between

305
00:18:11.268 --> 00:18:11.448
them,

306
00:18:12.368 --> 00:18:16.068
<00:18:12.368>and <00:18:12.648>I'm <00:18:12.928>replicating <00:18:13.207>my <00:18:13.487>own <00:18:13.768>infrastructure.

307
00:18:16.268 --> 00:18:18.628
<00:18:16.268>We <00:18:16.443>have <00:18:16.618>also <00:18:16.793>Consul <00:18:16.968>that <00:18:17.143>is <00:18:17.318>registering <00:18:17.493>all <00:18:17.668>the

308
00:18:19.488 --> 00:18:21.588
<00:18:19.488>services <00:18:19.838>with <00:18:20.188>our <00:18:20.538>three <00:18:20.888>nodes,

309
00:18:22.428 --> 00:18:25.528
<00:18:22.428>and <00:18:22.603>also <00:18:22.778>Grafana <00:18:22.953>to <00:18:23.128>monitor <00:18:23.303>all <00:18:23.478>the <00:18:23.653>system <00:18:23.828>and

310
00:18:27.358 --> 00:18:29.498
<00:18:27.358>The <00:18:27.591>connection, <00:18:27.824>if <00:18:28.058>the <00:18:28.291>connection <00:18:28.524>is <00:18:28.758>working.

311
00:18:30.318 --> 00:18:33.598
<00:18:30.318>This <00:18:30.551>is <00:18:30.784>a <00:18:31.018>simple <00:18:31.251>Echo <00:18:31.484>server <00:18:31.718>and

312
00:18:34.298 --> 00:18:35.798
<00:18:34.298>service, <00:18:34.748>and <00:18:35.198>let's <00:18:35.648>start.

313
00:18:36.888 --> 00:18:37.518
So

314
00:18:38.678 --> 00:18:42.318
<00:18:38.678>we <00:18:38.805>can <00:18:38.932>start <00:18:39.059>with <00:18:39.187>listing <00:18:39.314>all <00:18:39.441>the <00:18:39.568>jobs <00:18:39.696>in <00:18:39.823>the <00:18:39.950>Nomad <00:18:40.078>cluster,

315
00:18:43.718 --> 00:18:47.278
<00:18:43.718>and <00:18:43.834>we <00:18:43.951>just <00:18:44.068>need <00:18:44.184>to <00:18:44.301>write <00:18:44.418>a <00:18:44.534>simple <00:18:44.651>prompt, <00:18:44.768>as <00:18:44.884>you <00:18:45.001>can <00:18:45.118>see.

316
00:18:48.008 --> 00:18:49.258
<00:18:48.008>The <00:18:48.289>model <00:18:48.570>will <00:18:48.851>think <00:18:49.133>about

317
00:18:52.438 --> 00:18:56.158
<00:18:52.438>what <00:18:52.671>to <00:18:52.904>do <00:18:53.138>and <00:18:53.371>will <00:18:53.604>launch <00:18:53.838>the

318
00:18:56.198 --> 00:18:56.638
API.

319
00:18:59.358 --> 00:19:01.698
<00:18:59.358>Okay, <00:18:59.591>we <00:18:59.824>can <00:19:00.058>see <00:19:00.291>some <00:19:00.524>results <00:19:00.758>already.

320
00:19:01.898 --> 00:19:05.658
<00:19:01.898>We <00:19:02.053>have <00:19:02.209>some <00:19:02.364>instances <00:19:02.520>that <00:19:02.675>are <00:19:02.831>running, <00:19:02.986>Lance, <00:19:03.142>Grafana, <00:19:03.298>Image

321
00:19:05.838 --> 00:19:09.538
<00:19:05.838>for <00:19:05.978>the <00:19:06.118>photo, <00:19:06.258>and <00:19:06.398>a <00:19:06.538>simple <00:19:06.678>Echo, <00:19:06.818>a <00:19:06.957>node <00:19:07.098>exporter <00:19:07.238>for

322
00:19:09.758 --> 00:19:11.258
<00:19:09.758>Grafana, <00:19:10.433>and <00:19:11.108>Prometheus.

323
00:19:12.458 --> 00:19:15.838
<00:19:12.458>We <00:19:12.633>have <00:19:12.808>all <00:19:12.983>our <00:19:13.158>jobs <00:19:13.333>that <00:19:13.508>are <00:19:13.683>running, <00:19:13.858>and

324
00:19:16.378 --> 00:19:19.198
<00:19:16.378>there <00:19:16.658>is <00:19:16.937>a <00:19:17.217>simple <00:19:17.497>analysis <00:19:17.778>about

325
00:19:20.118 --> 00:19:21.878
<00:19:20.118>if <00:19:20.351>there <00:19:20.584>are <00:19:20.818>some <00:19:21.051>problems <00:19:21.284>or <00:19:21.518>not.

326
00:19:23.098 --> 00:19:26.278
<00:19:23.098>Now, <00:19:23.273>let's <00:19:23.447>assume <00:19:23.623>that <00:19:23.798>we <00:19:23.973>want <00:19:24.148>to <00:19:24.322>do <00:19:24.498>some

327
00:19:26.738 --> 00:19:29.698
<00:19:26.738>maintenance <00:19:26.878>for <00:19:27.018>the <00:19:27.158>moment, <00:19:27.298>so <00:19:27.438>we <00:19:27.578>want <00:19:27.718>to <00:19:27.858>drain <00:19:27.998>a <00:19:28.138>node.

328
00:19:30.958 --> 00:19:33.338
<00:19:30.958>In <00:19:31.133>that <00:19:31.308>case, <00:19:31.483>we'll <00:19:31.658>drain <00:19:31.833>the <00:19:32.008>Nomad <00:19:32.183>server <00:19:32.358>two.

329
00:19:34.858 --> 00:19:37.538
<00:19:34.858>So <00:19:35.058>we <00:19:35.258>just <00:19:35.457>need, <00:19:35.658>again, <00:19:35.858>one <00:19:36.058>simple <00:19:36.258>prompt,

330
00:19:38.798 --> 00:19:42.378
<00:19:38.798>and <00:19:39.031>the <00:19:39.264>LLM <00:19:39.498>will <00:19:39.731>call <00:19:39.964>the <00:19:40.198>API

331
00:19:42.438 --> 00:19:44.968
<00:19:42.438>to <00:19:42.718>drain <00:19:42.998>the <00:19:43.278>nodes. <00:19:43.558>Very <00:19:43.838>simple.

332
00:19:46.178 --> 00:19:49.718
<00:19:46.178>List <00:19:46.352>node. <00:19:46.527>Okay. <00:19:46.703>Found <00:19:46.878>automatically <00:19:47.053>the <00:19:47.227>ID <00:19:47.402>and <00:19:47.578>drained

333
00:19:50.158 --> 00:19:51.538
<00:19:50.158>the <00:19:50.468>node <00:19:50.779>for <00:19:51.089>one <00:19:51.400>hour.

334
00:19:52.498 --> 00:19:54.718
<00:19:52.498>It's <00:19:52.731>very <00:19:52.964>simple <00:19:53.198>and <00:19:53.431>explain <00:19:53.664>also <00:19:53.898>what

335
00:19:55.818 --> 00:19:58.358
<00:19:55.818>happened <00:19:56.051>after <00:19:56.284>the <00:19:56.518>draining <00:19:56.751>of <00:19:56.984>the <00:19:57.218>node.

336
00:19:59.538 --> 00:20:03.338
<00:19:59.538>So <00:19:59.678>as <00:19:59.818>you <00:19:59.958>can <00:20:00.098>see <00:20:00.238>now, <00:20:00.378>the <00:20:00.518>service <00:20:00.658>is <00:20:00.798>degraded <00:20:00.938>because

337
00:20:04.058 --> 00:20:07.418
<00:20:04.058>it's <00:20:04.185>not <00:20:04.312>hosted <00:20:04.439>anymore <00:20:04.567>in <00:20:04.694>the <00:20:04.821>machine, <00:20:04.948>because <00:20:05.076>the <00:20:05.203>host <00:20:05.330>is <00:20:05.458>down.

338
00:20:08.438 --> 00:20:12.138
<00:20:08.438>And <00:20:08.565>also <00:20:08.692>here <00:20:08.819>we <00:20:08.947>will <00:20:09.074>no <00:20:09.201>longer <00:20:09.328>see <00:20:09.456>any <00:20:09.583>more <00:20:09.710>in <00:20:09.838>Grafana

339
00:20:13.258 --> 00:20:13.958
<00:20:13.258>our <00:20:13.888>machine.

340
00:20:17.838 --> 00:20:18.158
And

341
00:20:20.378 --> 00:20:23.958
<00:20:20.378>now <00:20:20.505>we <00:20:20.632>will <00:20:20.759>ask <00:20:20.887>to <00:20:21.014>check <00:20:21.141>the <00:20:21.268>logs <00:20:21.396>of <00:20:21.523>the <00:20:21.650>core <00:20:21.778>running

342
00:20:24.638 --> 00:20:28.618
<00:20:24.638>on <00:20:24.737>Nomad <00:20:24.838>server <00:20:24.937>two <00:20:25.038>to <00:20:25.138>see <00:20:25.237>if <00:20:25.338>it's <00:20:25.437>still <00:20:25.538>running <00:20:25.638>or <00:20:25.737>if <00:20:25.838>there <00:20:25.937>are <00:20:26.038>some

343
00:20:28.678 --> 00:20:29.058
problem.

344
00:20:31.378 --> 00:20:33.958
<00:20:31.378>Now <00:20:31.578>it's <00:20:31.778>not <00:20:31.977>running <00:20:32.178>anymore <00:20:32.378>because <00:20:32.578>it's <00:20:32.778>degraded.

345
00:20:34.138 --> 00:20:37.738
<00:20:34.138>So <00:20:34.338>LLM <00:20:34.538>will <00:20:34.737>understand <00:20:34.937>the <00:20:35.138>concept <00:20:35.338>and <00:20:35.538>what

346
00:20:37.778 --> 00:20:39.018
<00:20:37.778>happened <00:20:38.336>to <00:20:38.894>it.

347
00:20:41.258 --> 00:20:44.298
<00:20:41.258>So <00:20:41.458>first <00:20:41.658>of <00:20:41.858>all, <00:20:42.058>we'll <00:20:42.258>find <00:20:42.458>the <00:20:42.658>location

348
00:20:45.318 --> 00:20:48.778
<00:20:45.318>on <00:20:45.493>the <00:20:45.668>server, <00:20:45.843>and <00:20:46.018>after <00:20:46.193>we'll <00:20:46.368>pull <00:20:46.543>the <00:20:46.718>logs.

349
00:20:50.198 --> 00:20:53.978
<00:20:50.198>And <00:20:50.548>in <00:20:50.898>that <00:20:51.248>case, <00:20:51.598>LLM

350
00:20:54.078 --> 00:20:57.578
<00:20:54.078>remembered <00:20:54.194>that <00:20:54.311>we <00:20:54.428>drained <00:20:54.544>the <00:20:54.661>node <00:20:54.778>and <00:20:54.894>the <00:20:55.011>task <00:20:55.128>is <00:20:55.244>not <00:20:55.361>running <00:20:55.478>again.

351
00:20:59.078 --> 00:21:02.958
<00:20:59.078>There <00:20:59.233>is <00:20:59.389>a <00:20:59.544>termination <00:20:59.700>event <00:20:59.855>expected, <00:21:00.011>so <00:21:00.166>all <00:21:00.322>is <00:21:00.478>fine.

352
00:21:05.078 --> 00:21:07.918
<00:21:05.078>Now, <00:21:05.278>let's <00:21:05.478>suppose <00:21:05.678>that <00:21:05.878>we <00:21:06.078>finish <00:21:06.278>our <00:21:06.478>maintenance.

353
00:21:08.058 --> 00:21:11.048
<00:21:08.058>We <00:21:08.291>want <00:21:08.524>Nomad <00:21:08.758>server <00:21:08.991>two <00:21:09.224>eligible <00:21:09.458>again.

354
00:21:11.858 --> 00:21:12.318
So,

355
00:21:13.158 --> 00:21:14.558
<00:21:13.158>we'll <00:21:13.578>get <00:21:13.998>again <00:21:14.418>the

356
00:21:15.398 --> 00:21:16.058
UUID,

357
00:21:16.938 --> 00:21:19.618
<00:21:16.938>and <00:21:17.113>as <00:21:17.288>you <00:21:17.463>can <00:21:17.638>see, <00:21:17.813>the <00:21:17.988>service <00:21:18.163>already <00:21:18.338>working.

358
00:21:19.898 --> 00:21:19.998
So

359
00:21:20.878 --> 00:21:22.778
<00:21:20.878>we <00:21:21.227>can <00:21:21.578>see <00:21:21.928>healthy <00:21:22.278>status,

360
00:21:23.998 --> 00:21:25.138
<00:21:23.998>and <00:21:25.024>also

361
00:21:26.218 --> 00:21:26.578
here,

362
00:21:27.418 --> 00:21:31.358
<00:21:27.418>okay, <00:21:27.534>we <00:21:27.651>have <00:21:27.767>a <00:21:27.884>node <00:21:28.001>exported <00:21:28.118>that <00:21:28.234>is <00:21:28.351>still <00:21:28.467>unknown, <00:21:28.584>but <00:21:28.701>if <00:21:28.818>we

363
00:21:31.398 --> 00:21:34.658
<00:21:31.398>refresh <00:21:31.598>the <00:21:31.798>page, <00:21:31.997>we <00:21:32.197>should <00:21:32.398>see <00:21:32.598>it <00:21:32.798>up.

364
00:21:35.498 --> 00:21:36.378
<00:21:35.498>Exactly, <00:21:36.290>up.

365
00:21:38.098 --> 00:21:41.058
<00:21:38.098>So <00:21:38.253>now <00:21:38.409>it's <00:21:38.564>working <00:21:38.720>again <00:21:38.875>fine. <00:21:39.031>So <00:21:39.186>we <00:21:39.342>can <00:21:39.498>see

366
00:21:41.138 --> 00:21:44.738
<00:21:41.138>also <00:21:41.418>our <00:21:41.697>Echo <00:21:41.977>server <00:21:42.257>if <00:21:42.538>it's

367
00:21:44.758 --> 00:21:46.178
<00:21:44.758>working. <00:21:45.397>Service, <00:21:46.035>sorry.

368
00:21:47.998 --> 00:21:50.918
<00:21:47.998>Okay. <00:21:48.278>Yeah, <00:21:48.558>still <00:21:48.838>working. <00:21:49.118>It's <00:21:49.398>working.

369
00:21:51.678 --> 00:21:55.598
<00:21:51.678>You <00:21:51.833>can <00:21:51.989>see <00:21:52.144>also <00:21:52.300>Grafana <00:21:52.455>is <00:21:52.611>connected <00:21:52.766>again <00:21:52.922>and <00:21:53.078>all

370
00:21:55.718 --> 00:21:57.558
<00:21:55.718>is <00:21:56.418>working <00:21:57.118>fine.

371
00:22:02.458 --> 00:22:03.038
Okay.

372
00:22:07.338 --> 00:22:10.838
<00:22:07.338>We <00:22:07.538>also <00:22:07.738>have <00:22:07.937>an <00:22:08.138>image <00:22:08.338>that <00:22:08.538>is <00:22:08.738>a

373
00:22:11.118 --> 00:22:12.898
<00:22:11.118>more <00:22:11.818>complex <00:22:12.518>service,

374
00:22:13.798 --> 00:22:17.578
<00:22:13.798>and <00:22:13.925>I <00:22:14.052>use <00:22:14.179>it <00:22:14.307>personally. <00:22:14.434>Now <00:22:14.561>I'm <00:22:14.688>not <00:22:14.816>connected, <00:22:14.943>but <00:22:15.070>I'm <00:22:15.198>using

375
00:22:17.638 --> 00:22:21.318
<00:22:17.638>it <00:22:17.765>with <00:22:17.892>my <00:22:18.019>Nomad <00:22:18.147>class, <00:22:18.274>and <00:22:18.401>it's <00:22:18.528>working <00:22:18.656>fine <00:22:18.783>without <00:22:18.910>any <00:22:19.038>problems.

376
00:22:22.498 --> 00:22:26.258
<00:22:22.498>I <00:22:22.673>can <00:22:22.848>scale <00:22:23.023>the <00:22:23.198>number <00:22:23.373>of <00:22:23.548>instance <00:22:23.723>to <00:22:23.898>have

377
00:22:26.418 --> 00:22:28.918
<00:22:26.418>duplicated <00:22:26.767>data <00:22:27.118>or <00:22:27.467>mounting <00:22:27.818>volumes.

378
00:22:29.178 --> 00:22:32.708
<00:22:29.178>All <00:22:29.318>is <00:22:29.458>running <00:22:29.598>fine. <00:22:29.738>Now <00:22:29.878>let's <00:22:30.018>ask <00:22:30.158>to <00:22:30.298>create <00:22:30.438>a <00:22:30.578>simple

379
00:22:32.858 --> 00:22:36.497
<00:22:32.858>NGINX <00:22:32.985>job <00:22:33.112>so <00:22:33.239>we <00:22:33.367>can <00:22:33.494>also <00:22:33.621>create <00:22:33.748>some <00:22:33.876>jobs <00:22:34.003>as <00:22:34.130>we <00:22:34.258>want.

380
00:22:39.158 --> 00:22:42.858
<00:22:39.158>So <00:22:39.358>we'll <00:22:39.558>submit <00:22:39.757>the <00:22:39.957>job <00:22:40.158>automatically <00:22:40.358>with <00:22:40.558>basic

381
00:22:42.918 --> 00:22:45.178
<00:22:42.918>configuration <00:22:43.197>if <00:22:43.477>you <00:22:43.757>don't <00:22:44.037>specify <00:22:44.318>it.

382
00:22:46.817 --> 00:22:48.678
<00:22:46.817>Okay. <00:22:47.167>It's <00:22:47.517>still <00:22:47.867>deploying <00:22:48.217>it.

383
00:22:50.058 --> 00:22:52.658
<00:22:50.058>Now <00:22:50.233>I <00:22:50.408>ask <00:22:50.583>to <00:22:50.758>scale <00:22:50.933>it <00:22:51.108>to <00:22:51.283>three <00:22:51.458>instance.

384
00:22:57.878 --> 00:23:01.688
<00:22:57.878>So <00:22:58.227>MCP <00:22:58.578>will <00:22:58.928>call <00:22:59.278>automatically

385
00:23:01.818 --> 00:23:03.038
the

386
00:23:03.198 --> 00:23:07.058
<00:23:03.198>API <00:23:03.548>to <00:23:03.898>scale <00:23:04.248>it <00:23:04.598>to

387
00:23:07.098 --> 00:23:07.778
<00:23:07.098>three <00:23:07.710>instance.

388
00:23:10.338 --> 00:23:11.918
<00:23:10.338>Okay. <00:23:10.804>It's <00:23:11.271>already <00:23:11.738>scaled.

389
00:23:18.318 --> 00:23:22.158
<00:23:18.318>Okay. <00:23:18.458>Here <00:23:18.598>it's <00:23:18.738>trying <00:23:18.878>also <00:23:19.018>to <00:23:19.158>retrieve <00:23:19.298>the <00:23:19.437>ports, <00:23:19.578>but <00:23:19.718>I

390
00:23:22.198 --> 00:23:23.578
<00:23:22.198>think <00:23:22.405>we're <00:23:22.612>not <00:23:22.819>able <00:23:23.026>to <00:23:23.233>do <00:23:23.440>it.

391
00:23:24.568 --> 00:23:24.838
But

392
00:23:26.658 --> 00:23:29.418
<00:23:26.658>it <00:23:26.813>can <00:23:26.969>give <00:23:27.124>us <00:23:27.280>in <00:23:27.435>which <00:23:27.591>machine <00:23:27.746>they <00:23:27.902>are <00:23:28.058>running.

393
00:23:31.058 --> 00:23:34.978
<00:23:31.058>So <00:23:31.185>we <00:23:31.312>scaled <00:23:31.439>the <00:23:31.567>job <00:23:31.694>in <00:23:31.821>a <00:23:31.948>very <00:23:32.076>simple <00:23:32.203>way, <00:23:32.330>and <00:23:32.458>it

394
00:23:35.078 --> 00:23:35.418
also

395
00:23:36.378 --> 00:23:38.698
<00:23:36.378>give <00:23:36.578>to <00:23:36.778>us <00:23:36.977>how <00:23:37.178>we <00:23:37.378>should <00:23:37.578>use <00:23:37.778>it.

396
00:23:39.798 --> 00:23:43.658
<00:23:39.798>Now <00:23:39.925>let's <00:23:40.052>suppose <00:23:40.179>we <00:23:40.307>want <00:23:40.434>to <00:23:40.561>post <00:23:40.688>WordPress. <00:23:40.816>So <00:23:40.943>we <00:23:41.070>are <00:23:41.198>also...

397
00:23:44.378 --> 00:23:48.238
<00:23:44.378>It's <00:23:44.494>asking <00:23:44.611>to <00:23:44.727>us <00:23:44.844>what <00:23:44.961>we <00:23:45.078>want <00:23:45.194>to <00:23:45.311>do. <00:23:45.428>We <00:23:45.544>want <00:23:45.661>dynamic <00:23:45.778>port.

398
00:23:48.938 --> 00:23:50.958
<00:23:48.938>We <00:23:49.288>want <00:23:49.638>an <00:23:49.988>external <00:23:50.338>database.

399
00:23:52.458 --> 00:23:55.378
<00:23:52.458>And <00:23:52.658>after <00:23:52.858>that, <00:23:53.058>the <00:23:53.258>LLM <00:23:53.458>will <00:23:53.658>start <00:23:53.858>to

400
00:23:55.418 --> 00:23:58.638
<00:23:55.418>write <00:23:55.697>the <00:23:55.977>configuration <00:23:56.257>and <00:23:56.537>run <00:23:56.818>it.

401
00:23:58.668 --> 00:24:01.198
<00:23:58.668>That's <00:23:58.947>incredible <00:23:59.227>because <00:23:59.507>it's <00:23:59.787>all <00:24:00.068>automatized,

402
00:24:02.058 --> 00:24:05.778
<00:24:02.058>and <00:24:02.233>we <00:24:02.408>literally <00:24:02.583>need <00:24:02.758>10 <00:24:02.933>seconds <00:24:03.108>to <00:24:03.283>run <00:24:03.458>an

403
00:24:05.818 --> 00:24:09.478
<00:24:05.818>entire <00:24:06.284>infrastructure <00:24:06.751>if <00:24:07.218>we

404
00:24:09.518 --> 00:24:09.838
want.

405
00:24:12.238 --> 00:24:13.398
<00:24:12.238>So <00:24:12.586>it's <00:24:12.934>still <00:24:13.282>deploying

406
00:24:14.298 --> 00:24:16.878
<00:24:14.298>the... <00:24:14.453>And <00:24:14.609>as <00:24:14.764>you <00:24:14.920>can <00:24:15.075>see, <00:24:15.231>we <00:24:15.386>have <00:24:15.542>an <00:24:15.698>error.

407
00:24:17.058 --> 00:24:20.637
<00:24:17.058>In <00:24:17.198>particular, <00:24:17.338>we <00:24:17.478>have <00:24:17.618>a <00:24:17.758>constraint <00:24:17.898>that <00:24:18.038>is <00:24:18.178>filtering <00:24:18.318>three <00:24:18.458>nodes.

408
00:24:20.898 --> 00:24:23.918
<00:24:20.898>So <00:24:21.053>the <00:24:21.209>deployment <00:24:21.364>job <00:24:21.520>is <00:24:21.675>not <00:24:21.831>possible <00:24:21.986>to <00:24:22.142>run <00:24:22.298>it.

409
00:24:24.978 --> 00:24:27.878
<00:24:24.978>I <00:24:25.118>ask <00:24:25.258>if <00:24:25.398>there <00:24:25.538>are <00:24:25.678>some <00:24:25.818>problem <00:24:25.958>because <00:24:26.098>it's <00:24:26.238>still <00:24:26.378>impending.

410
00:24:28.358 --> 00:24:31.638
<00:24:28.358>So <00:24:28.558>LLM <00:24:28.758>will <00:24:28.957>understand <00:24:29.158>the <00:24:29.358>problem. <00:24:29.558>Yeah, <00:24:29.758>exactly.

411
00:24:32.118 --> 00:24:34.418
<00:24:32.118>There <00:24:32.351>is <00:24:32.584>a <00:24:32.818>resource <00:24:33.051>constraint. <00:24:33.284>So <00:24:33.518>we'll

412
00:24:35.538 --> 00:24:39.078
<00:24:35.538>run <00:24:35.771>again <00:24:36.004>the <00:24:36.238>configuration, <00:24:36.471>and <00:24:36.704>we'll <00:24:36.938>fix

413
00:24:39.178 --> 00:24:41.648
<00:24:39.178>the <00:24:40.578>problem.

414
00:24:42.682 --> 00:24:44.422
<00:24:42.682>And <00:24:43.032>now <00:24:43.382>it's <00:24:43.732>currently <00:24:44.082>working.

415
00:24:45.442 --> 00:24:49.342
<00:24:45.442>And <00:24:45.582>it <00:24:45.722>say <00:24:45.862>where <00:24:46.002>it's <00:24:46.142>working, <00:24:46.282>where <00:24:46.422>is <00:24:46.562>currently <00:24:46.702>placed, <00:24:46.842>and

416
00:24:51.922 --> 00:24:55.742
<00:24:51.922>it <00:24:52.077>give <00:24:52.233>us <00:24:52.388>the <00:24:52.544>URL. <00:24:52.699>Oh, <00:24:52.855>we <00:24:53.010>have <00:24:53.166>another <00:24:53.322>problem.

417
00:24:56.522 --> 00:24:58.642
<00:24:56.522>We <00:24:56.697>have <00:24:56.871>a <00:24:57.047>problem <00:24:57.222>with <00:24:57.397>the <00:24:57.572>connection <00:24:57.746>with <00:24:57.922>database.

418
00:24:59.802 --> 00:25:02.242
<00:24:59.802>Okay, <00:24:59.976>so <00:25:00.151>we <00:25:00.327>paste <00:25:00.502>it <00:25:00.677>in <00:25:00.851>the <00:25:01.026>LLM <00:25:01.202>again,

419
00:25:03.082 --> 00:25:04.962
<00:25:03.082>and <00:25:03.315>let's <00:25:03.548>see <00:25:03.782>if <00:25:04.015>we'll <00:25:04.248>understand <00:25:04.482>it.

420
00:25:06.722 --> 00:25:08.622
<00:25:06.722>Okay, <00:25:07.072>yeah, <00:25:07.422>just <00:25:07.772>understand <00:25:08.122>it.

421
00:25:09.862 --> 00:25:12.742
<00:25:09.862>And <00:25:10.062>it <00:25:10.262>run <00:25:10.462>the <00:25:10.662>jobs <00:25:10.862>again. <00:25:11.062>And <00:25:11.262>now,

422
00:25:13.662 --> 00:25:17.602
<00:25:13.662>after <00:25:13.817>a <00:25:13.973>break, <00:25:14.128>we <00:25:14.284>can <00:25:14.439>see <00:25:14.595>that <00:25:14.750>it's <00:25:14.906>all <00:25:15.062>working

423
00:25:17.682 --> 00:25:20.142
<00:25:17.682>fine. <00:25:17.882>Yeah, <00:25:18.082>we <00:25:18.282>have <00:25:18.482>a <00:25:18.682>status <00:25:18.882>code <00:25:19.082>200,

424
00:25:21.002 --> 00:25:23.862
<00:25:21.002>and <00:25:21.282>our <00:25:21.562>WordPress <00:25:21.841>server <00:25:22.121>is <00:25:22.402>running

425
00:25:25.042 --> 00:25:26.242
<00:25:25.042>in <00:25:25.312>a <00:25:25.581>very <00:25:25.851>simple <00:25:26.121>way.

426
00:25:27.542 --> 00:25:28.182
So

427
00:25:29.402 --> 00:25:32.462
<00:25:29.402>this <00:25:29.682>was <00:25:29.962>all <00:25:30.242>for <00:25:30.522>the <00:25:30.802>demo,

428
00:25:33.862 --> 00:25:37.762
<00:25:33.862>and <00:25:34.095>yeah, <00:25:34.328>that's <00:25:34.562>incredible <00:25:34.795>for <00:25:35.028>me <00:25:35.262>because

429
00:25:38.582 --> 00:25:40.162
<00:25:38.582>we <00:25:38.932>did <00:25:39.282>it <00:25:39.632>in <00:25:39.982>very

430
00:25:41.342 --> 00:25:43.402
<00:25:41.342>few <00:25:41.692>times, <00:25:42.042>all <00:25:42.392>this <00:25:42.742>task.

431
00:25:44.322 --> 00:25:47.822
<00:25:44.322>The <00:25:44.522>LLM <00:25:44.722>is <00:25:44.922>able <00:25:45.122>to <00:25:45.322>understand <00:25:45.522>and <00:25:45.722>do

432
00:25:48.222 --> 00:25:49.892
<00:25:48.222>some <00:25:49.622>troubleshooting,

433
00:25:52.882 --> 00:25:54.282
<00:25:52.882>like <00:25:53.512>an <00:25:54.141>SRA.

434
00:25:55.362 --> 00:25:58.442
<00:25:55.362>And <00:25:55.642>so <00:25:55.922>what <00:25:56.202>we <00:25:56.482>learn <00:25:56.762>today.

435
00:26:02.642 --> 00:26:05.852
<00:26:02.642>So <00:26:02.875>first, <00:26:03.108>AI <00:26:03.342>need <00:26:03.575>a <00:26:03.808>good <00:26:04.042>description

436
00:26:06.602 --> 00:26:09.882
<00:26:06.602>because <00:26:06.802>the <00:26:07.002>AI <00:26:07.202>picks <00:26:07.402>tool <00:26:07.602>based <00:26:07.802>on <00:26:08.002>description.

437
00:26:10.042 --> 00:26:12.642
<00:26:10.042>So <00:26:10.182>if <00:26:10.322>a <00:26:10.462>description <00:26:10.601>is <00:26:10.742>unclear, <00:26:10.881>it <00:26:11.022>pick <00:26:11.161>the <00:26:11.302>wrong <00:26:11.442>one.

438
00:26:13.062 --> 00:26:16.762
<00:26:13.062>So <00:26:13.236>we <00:26:13.411>should <00:26:13.587>be <00:26:13.762>specific, <00:26:13.937>say <00:26:14.111>default <00:26:14.286>value, <00:26:14.462>and

439
00:26:16.942 --> 00:26:20.762
<00:26:16.942>warn <00:26:17.082>about <00:26:17.222>dangerous <00:26:17.362>tool <00:26:17.502>like, <00:26:17.642>for <00:26:17.782>example, <00:26:17.922>a <00:26:18.062>drain <00:26:18.202>of <00:26:18.342>a

440
00:26:20.802 --> 00:26:21.082
node.

441
00:26:23.102 --> 00:26:27.042
<00:26:23.102>Also, <00:26:23.277>less <00:26:23.452>is <00:26:23.627>more <00:26:23.802>because <00:26:23.977>50 <00:26:24.152>tools <00:26:24.327>is <00:26:24.502>a

442
00:26:27.082 --> 00:26:30.822
<00:26:27.082>lot <00:26:27.222>to <00:26:27.362>process. <00:26:27.502>So <00:26:27.642>short <00:26:27.782>names <00:26:27.922>and <00:26:28.062>description <00:26:28.202>work <00:26:28.342>better <00:26:28.482>than

443
00:26:31.082 --> 00:26:32.902
<00:26:31.082>long <00:26:32.482>explanation.

444
00:26:36.162 --> 00:26:39.202
<00:26:36.162>Minimum <00:26:36.628>permission, <00:26:37.095>short-lived <00:26:37.562>tokens,

445
00:26:39.522 --> 00:26:41.462
<00:26:39.522>different <00:26:39.988>token <00:26:40.455>per <00:26:40.922>environment.

446
00:26:41.902 --> 00:26:44.322
<00:26:41.902>AI <00:26:42.102>only <00:26:42.302>has <00:26:42.502>the <00:26:42.702>permission <00:26:42.902>you <00:26:43.102>give <00:26:43.302>it.

447
00:26:45.982 --> 00:26:46.222
And

448
00:26:47.302 --> 00:26:49.082
<00:26:47.302>lastly, <00:26:47.651>but <00:26:48.002>not <00:26:48.351>least <00:26:48.702>important,

449
00:26:49.922 --> 00:26:53.542
<00:26:49.922>make <00:26:50.062>installation <00:26:50.202>easy. <00:26:50.342>So <00:26:50.482>if <00:26:50.622>it's <00:26:50.762>hard, <00:26:50.902>people <00:26:51.042>won't <00:26:51.182>try <00:26:51.322>it.

450
00:26:54.082 --> 00:26:56.732
<00:26:54.082>We <00:26:54.198>may <00:26:54.315>be <00:26:54.432>need <00:26:54.548>to <00:26:54.665>in <00:26:54.782>one <00:26:54.898>command, <00:26:55.015>as <00:26:55.132>we <00:26:55.248>can <00:26:55.365>see <00:26:55.482>with

451
00:26:58.562 --> 00:26:58.962
NPM.

452
00:27:02.482 --> 00:27:02.582
So,

453
00:27:03.562 --> 00:27:07.262
<00:27:03.562>quick <00:27:03.762>recap. <00:27:03.962>We <00:27:04.161>built <00:27:04.361>an <00:27:04.562>MCP <00:27:04.762>server <00:27:04.962>in

454
00:27:07.302 --> 00:27:10.942
<00:27:07.302>Go <00:27:07.476>that <00:27:07.651>let <00:27:07.827>AI <00:27:08.002>control <00:27:08.177>Nomad <00:27:08.351>through <00:27:08.526>its <00:27:08.702>API.

455
00:27:12.022 --> 00:27:14.362
<00:27:12.022>It <00:27:12.255>only <00:27:12.488>does <00:27:12.722>what <00:27:12.955>your <00:27:13.188>token <00:27:13.422>allow.

456
00:27:15.102 --> 00:27:18.482
<00:27:15.102>We <00:27:15.302>have <00:27:15.502>50 <00:27:15.702>tools, <00:27:15.902>security <00:27:16.102>feature, <00:27:16.302>TLS, <00:27:16.502>multiple

457
00:27:18.562 --> 00:27:20.222
<00:27:18.562>transport, <00:27:18.911>one <00:27:19.262>command <00:27:19.611>to <00:27:19.962>install.

458
00:27:22.122 --> 00:27:25.982
<00:27:22.122>The <00:27:22.229>code <00:27:22.337>is <00:27:22.445>in <00:27:22.552>my <00:27:22.660>GitHub <00:27:22.768>profile <00:27:22.875>if <00:27:22.983>you <00:27:23.091>want <00:27:23.198>to <00:27:23.306>have <00:27:23.414>a <00:27:23.522>look.

459
00:27:26.142 --> 00:27:27.042
<00:27:26.142>It's <00:27:26.547>open <00:27:26.952>source.

460
00:27:28.082 --> 00:27:31.602
<00:27:28.082>And <00:27:28.362>yeah, <00:27:28.642>I'm <00:27:28.922>around <00:27:29.202>all <00:27:29.482>these

461
00:27:31.642 --> 00:27:33.252
<00:27:31.642>days. <00:27:32.108>So <00:27:32.575>you <00:27:33.042>can

462
00:27:34.542 --> 00:27:38.482
<00:27:34.542>just <00:27:34.658>talk <00:27:34.775>with <00:27:34.891>me <00:27:35.008>about <00:27:35.125>some <00:27:35.242>project, <00:27:35.358>or <00:27:35.475>if <00:27:35.591>you <00:27:35.708>have <00:27:35.825>some <00:27:35.942>project

463
00:27:38.562 --> 00:27:41.982
<00:27:38.562>that <00:27:38.689>you <00:27:38.816>want <00:27:38.943>or <00:27:39.071>a <00:27:39.198>proposal <00:27:39.325>that <00:27:39.452>you <00:27:39.580>want <00:27:39.707>talk <00:27:39.834>with <00:27:39.962>me,

464
00:27:42.222 --> 00:27:43.842
<00:27:42.222>I'm <00:27:43.622>here.

465
00:27:44.682 --> 00:27:47.342
<00:27:44.682>So <00:27:44.882>thanks <00:27:45.082>again, <00:27:45.282>and <00:27:45.482>have <00:27:45.682>a <00:27:45.882>nice <00:27:46.082>day.