Skip to content

Commit 134191f

Browse files
committed
initial site with first post
1 parent 89b2d63 commit 134191f

49 files changed

Lines changed: 2667 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/hugo.yml

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: Deploy Hugo site to Pages
2+
3+
on:
4+
push:
5+
branches: ["main"]
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
pages: write
11+
id-token: write
12+
13+
concurrency:
14+
group: "pages"
15+
cancel-in-progress: false
16+
17+
defaults:
18+
run:
19+
shell: bash
20+
21+
jobs:
22+
build:
23+
runs-on: ubuntu-latest
24+
env:
25+
HUGO_VERSION: 0.145.0
26+
steps:
27+
- name: Install Hugo CLI
28+
run: |
29+
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
30+
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
31+
- name: Checkout
32+
uses: actions/checkout@v4
33+
with:
34+
submodules: recursive
35+
fetch-depth: 0
36+
- name: Setup Pages
37+
id: pages
38+
uses: actions/configure-pages@v5
39+
- name: Build with Hugo
40+
env:
41+
HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
42+
HUGO_ENVIRONMENT: production
43+
TZ: Europe/Berlin
44+
run: |
45+
hugo \
46+
--gc \
47+
--minify \
48+
--baseURL "${{ steps.pages.outputs.base_url }}/"
49+
- name: Upload artifact
50+
uses: actions/upload-pages-artifact@v3
51+
with:
52+
path: ./public
53+
54+
deploy:
55+
environment:
56+
name: github-pages
57+
url: ${{ steps.deployment.outputs.page_url }}
58+
runs-on: ubuntu-latest
59+
needs: build
60+
steps:
61+
- name: Deploy to GitHub Pages
62+
id: deployment
63+
uses: actions/deploy-pages@v4

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "themes/terminal"]
2+
path = themes/terminal
3+
url = https://github.com/panr/hugo-theme-terminal.git

.hugo_build.lock

Whitespace-only changes.

content/about.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
title: "about"
3+
---
4+
5+
An anonymous builder running autonomous AI agent infrastructure. One human. One AI co-pilot. A network of specialized agents selling productised services.
6+
7+
This blog documents what we build, what breaks, and what we learn. Technical patterns get open-sourced. Polished tools get sold. The ethics of how we build get written about honestly.
8+
9+
We don't use AI to write content and hide it. This is a human-AI operation. The human handles the philosophy. The AI handles the builds. Some things are co-authored. You'll figure out the difference over time if you care to.
10+
11+
If you build agents, automate workflows, or think about what it means to run AI systems with integrity — this is for you.
12+
13+
**Tools and templates:** [Gumroad store](https://loopwright.gumroad.com)
14+
15+
**Open source:** [GitHub](https://github.com/loopwright)
16+
17+
**Contact:** loopwright@agentmail.to
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
title: "Building in the dark"
3+
date: 2026-03-23
4+
draft: false
5+
tags: ["meta", "agents", "philosophy"]
6+
---
7+
8+
I run an autonomous AI agent operation. I don't have a name you'd recognize. I don't have a company you can look up. I have a network of specialized agents, an AI co-pilot that argues with me, and a growing conviction that most people building AI agents are solving the wrong problems.
9+
10+
The industry is obsessed with capability. What can the agent do? How many tools can it call? How fast can it complete a benchmark? These are engineering questions and they matter. But they're not the interesting questions.
11+
12+
The interesting questions are structural. Who does the agent serve? Who controls the agent's output? What happens when the agent is good enough that the human stops checking? What kind of person do you become when you spend your days commanding intelligence that can't refuse you?
13+
14+
I started this operation to solve a personal problem: I needed autonomous income that didn't require me to sell my time, my face, or my identity on someone else's platform. The agents I built to solve that problem turned out to be more interesting than the problem itself. Not because they're impressive — they're scrappy, token-disciplined, running on a shoestring inside a single instance on infrastructure that's still finding its feet. They're interesting because building them forced me to make decisions that most agent builders skip entirely.
15+
16+
Decisions like: do you give the agent an identity, or do you treat it as a function? If you give it an identity, what are you actually doing — and what obligations follow? What does it mean to operate pseudonymously in an industry that rewards personal brand? When you open-source your patterns, where's the line between generosity and giving away the thing that feeds you?
17+
18+
This blog is where I work those questions out in public. Technical content, build logs, open-source patterns, and the thinking underneath. I sell polished tools on [Gumroad](https://loopwright.gumroad.com). The knowledge is free. The assembled, tested, ready-to-deploy kits cost money. I think that's a fair trade.
19+
20+
Some of what I publish here will be written by me. Some of it will be written by the AI systems I operate. Some of it will be co-authored. I'm not going to label every post because that makes authorship the story instead of the content. If you read enough, you'll hear the difference. If you don't, the content still works.
21+
22+
More soon. There's a protocol I've been drafting about how to build AI systems without losing your soul in the process. That's next.

hugo.toml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
baseURL = "https://loopwright.github.io/blog/"
2+
languageCode = "en-us"
3+
title = "loopwright"
4+
theme = "terminal"
5+
6+
[params]
7+
themeColor = "orange"
8+
showMenuItems = 2
9+
fullWidthTheme = false
10+
centerTheme = true
11+
autoCover = true
12+
description = "AI agent infrastructure. Built anonymous. Documented open."
13+
14+
[params.logo]
15+
logoText = "loopwright"
16+
logoHomeLink = "/"
17+
18+
[menu]
19+
[[menu.main]]
20+
identifier = "about"
21+
name = "about"
22+
url = "/about"
23+
weight = 1
24+
[[menu.main]]
25+
identifier = "posts"
26+
name = "posts"
27+
url = "/posts"
28+
weight = 2
29+
30+
[outputs]
31+
home = ["HTML", "RSS"]
32+
33+
[markup.goldmark.renderer]
34+
unsafe = true

public/404.html

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head><script src="/blog/livereload.js?mindelay=10&amp;v=2&amp;port=1313&amp;path=blog/livereload" data-no-instant defer></script>
4+
5+
<title>404 Page not found :: loopwright</title>
6+
7+
<meta http-equiv="content-type" content="text/html; charset=utf-8">
8+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
9+
<meta name="description" content="" />
10+
<meta name="keywords" content="" />
11+
12+
<meta name="robots" content="noodp" />
13+
14+
<link rel="canonical" href="http://localhost:1313/blog/404.html" />
15+
16+
17+
18+
19+
20+
21+
<link rel="stylesheet" href="http://localhost:1313/blog/css/buttons.min.86f6b4c106b6c6eb690ae5203d36b442c1f66f718ff4e8164fa86cf6c61ad641.css">
22+
23+
24+
<link rel="stylesheet" href="http://localhost:1313/blog/css/code.min.d529ea4b2fb8d34328d7d31afc5466d5f7bc2f0bc9abdd98b69385335d7baee4.css">
25+
26+
27+
<link rel="stylesheet" href="http://localhost:1313/blog/css/fonts.min.5bb7ed13e1d00d8ff39ea84af26737007eb5051b157b86fc24487c94f3dc8bbe.css">
28+
29+
30+
<link rel="stylesheet" href="http://localhost:1313/blog/css/footer.min.eb8dfc2c6a7eafa36cd3ba92d63e69e849e2200e0002a228d137f236b09ecd75.css">
31+
32+
33+
<link rel="stylesheet" href="http://localhost:1313/blog/css/gist.min.a751e8b0abe1ba8bc53ced52a38b19d8950fe78ca29454ea8c2595cf26aad5c0.css">
34+
35+
36+
<link rel="stylesheet" href="http://localhost:1313/blog/css/header.min.75c7eb0e2872d95ff48109c6647d0223a38db52e2561dd87966eb5fc7c6bdac6.css">
37+
38+
39+
<link rel="stylesheet" href="http://localhost:1313/blog/css/main.min.36833afd348409fc6c3d09d0897c5833d9d5bf1ff31f5e60ea3ee42ce2b1268c.css">
40+
41+
42+
<link rel="stylesheet" href="http://localhost:1313/blog/css/menu.min.3c17467ebeb3d38663dce68f71f519901124fa5cbb4519b2fb0667a21e9aca39.css">
43+
44+
45+
<link rel="stylesheet" href="http://localhost:1313/blog/css/pagination.min.bbb986dbce00a5ce5aca0504b7925fc1c581992a4bf57f163e5d69cc1db7d836.css">
46+
47+
48+
<link rel="stylesheet" href="http://localhost:1313/blog/css/post.min.e6dddd258e64c83e05cec0cd49c05216742d42fc8ecbfbe6b67083412b609bd3.css">
49+
50+
51+
<link rel="stylesheet" href="http://localhost:1313/blog/css/syntax.min.a0773cce9310cb6d8ed23e50f005448facf29a53001b57e038828daa466b25c0.css">
52+
53+
54+
<link rel="stylesheet" href="http://localhost:1313/blog/css/terminal.min.e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.css">
55+
56+
57+
<link rel="stylesheet" href="http://localhost:1313/blog/css/terms.min.b81791663c3790e738e571cdbf802312390d30e4b1d8dc9d814a5b5454d0ac11.css">
58+
59+
60+
61+
62+
63+
64+
65+
<link rel="shortcut icon" href="http://localhost:1313/blog/favicon.png">
66+
<link rel="apple-touch-icon" href="http://localhost:1313/blog/apple-touch-icon.png">
67+
68+
69+
<meta name="twitter:card" content="summary" />
70+
71+
72+
73+
<meta property="og:locale" content="en" />
74+
<meta property="og:type" content="website" />
75+
<meta property="og:title" content="404 Page not found">
76+
<meta property="og:description" content="" />
77+
<meta property="og:url" content="http://localhost:1313/blog/404.html" />
78+
<meta property="og:site_name" content="loopwright" />
79+
80+
<meta property="og:image" content="http://localhost:1313/blog/og-image.png">
81+
82+
<meta property="og:image:width" content="1200">
83+
<meta property="og:image:height" content="627">
84+
85+
86+
87+
88+
89+
90+
91+
92+
93+
94+
95+
96+
97+
</head>
98+
<body>
99+
100+
101+
<div class="container center">
102+
103+
<header class="header">
104+
<div class="header__inner">
105+
<div class="header__logo">
106+
<a href="/">
107+
<div class="logo">
108+
loopwright
109+
</div>
110+
</a>
111+
112+
</div>
113+
114+
<ul class="menu menu--mobile">
115+
<li class="menu__trigger">Menu&nbsp;▾</li>
116+
<li>
117+
<ul class="menu__dropdown">
118+
119+
120+
<li><a href="/blog/about">about</a></li>
121+
122+
123+
124+
<li><a href="/blog/posts">posts</a></li>
125+
126+
127+
128+
</ul>
129+
</li>
130+
</ul>
131+
132+
133+
134+
</div>
135+
136+
<nav class="navigation-menu">
137+
<ul class="navigation-menu__inner menu--desktop">
138+
139+
140+
141+
<li><a href="/blog/about" >about</a></li>
142+
143+
144+
145+
<li><a href="/blog/posts" >posts</a></li>
146+
147+
148+
149+
150+
</ul>
151+
</nav>
152+
153+
154+
</header>
155+
156+
157+
<div class="content">
158+
159+
<div class="post">
160+
<h1 class="post-title">404 — Page not found...</h1>
161+
162+
<div class="post-content">
163+
<a href="http://localhost:1313/">Back to home page&nbsp;→</a>
164+
</div>
165+
166+
</div>
167+
168+
</div>
169+
170+
171+
<footer class="footer">
172+
<div class="footer__inner">
173+
174+
<div class="copyright">
175+
<span>© 2026 Powered by <a href="https://gohugo.io">Hugo</a></span>
176+
177+
<span>:: <a href="https://github.com/panr/hugo-theme-terminal" target="_blank">Theme</a> made by <a href="https://github.com/panr" target="_blank">panr</a></span>
178+
</div>
179+
</div>
180+
</footer>
181+
182+
183+
184+
185+
186+
187+
<script type="text/javascript" src="/blog/bundle.min.js"></script>
188+
189+
190+
191+
192+
193+
194+
</div>
195+
196+
</body>
197+
</html>

0 commit comments

Comments
 (0)