You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Site: halve the work page, add the sentences prose lint to CI
The work page drops from 1,434 words to about 900 with the same four
services and every status kept. scripts/lint-prose.mjs runs the
sentences trope ruleset over every content page; medium and high
severities fail, there is no baseline, and the page count starts at
zero blocking. The deploy workflow runs it before the Hugo build. The
open status pill is muted rather than red: an open issue is tracked
work, not a failure.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EFsqVDRNABeAMP8zhQawtz
Copy file name to clipboardExpand all lines: content/about.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,13 +3,13 @@ title: "About"
3
3
summary: "Intentius is a one-person infrastructure consultancy. The tools came out of the work."
4
4
---
5
5
6
-
Intentius does infrastructure work for teams that inherited more than they built: shared production accounts, state files nobody wants to touch, pipelines maintained by hand on whichever forge the company used last, and now agents that need production access without production keys.
6
+
Intentius does infrastructure work for teams that inherited more than they built: shared production accounts, state files nobody wants to touch, and now agents that need production access without production keys.
7
7
8
8
The tools exist because the work kept hitting the same wall. Every infrastructure tool outside Kubernetes keeps a private ledger of what it owns, and the ledger is where the permission boundary, the secrets and the lock end up. An entire industry sells workarounds for that ledger from a layer above it. We wanted the record where IAM could read it.
9
9
10
10
[choudoufu](https://intentius.io/choudoufu/) is the smallest possible change to OpenTofu that does this for AWS: two tags per resource, and the state file becomes a cache. [chant](https://intentius.io/chant/) goes the other way, out of Terraform and into the platform's own spec, across many platforms, with the same property. Both are open source, both are documented to the point of naming their own gaps, and neither has a pricing page.
11
11
12
-
The person behind it has run infrastructure for a long time and writes about it at [lex00.github.io](https://lex00.github.io/). The [Accessible Ops](https://accessibleops.net/) spec, which this site rates every tool against, was seeded in part by that writing.
12
+
The person behind it has run infrastructure for a long time and writes about it on [a personal blog](https://lex00.github.io/). The [Accessible Ops](https://accessibleops.net/) spec, which this site rates every tool against, was seeded in part by that writing.
Copy file name to clipboardExpand all lines: content/accessible-ops.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@ summary: "Fourteen properties an infrastructure toolchain either has or does not
4
4
wide: true
5
5
---
6
6
7
-
[Accessible Ops](https://accessibleops.net/) is a spec, not a product. Its fourteen properties describe what it takes for a newcomer, human or agent, to operate infrastructure safely: the source predicts the platform spec, the same check runs at the keystroke, every change arrives as a diff in one place, credentials are scoped and revocable, the live system is the truth, and so on.
7
+
[Accessible Ops](https://accessibleops.net/) is a spec, not a product. Its fourteen properties describe what it takes for a newcomer, human or agent, to operate infrastructure safely. The source predicts the platform spec. Every change arrives as a diff in one place where someone can say no. The live system is the truth.
8
8
9
9
We use it as the bar for every engagement. When we recommend a tool, or build one, this is why.
Copy file name to clipboardExpand all lines: content/compare/chant-cdk-and-pulumi.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -34,6 +34,6 @@ Reach and years. CDK covers every CloudFormation resource and Pulumi covers ever
34
34
35
35
## Where we are waiting
36
36
37
-
- Until chant 0.63 the approval gate recorded who approved and when but not which plan. Approve, edit the root, re-run, and the edited change applied. Since 0.63 a resolution names the plan digest and the re-run is refused by name. That was our own biggest hole, and it is closed rather than never having existed. {{< status kind="shipped" date="2026-09-09" href="https://github.com/INTENTIUS/chant/pull/2338" >}}
37
+
- Until chant 0.63 the approval gate recorded who approved and when but not which plan. Approve, then edit the root and re-run, and the edited change applied. Since 0.63 a resolution names the plan digest and the re-run is refused by name. That was our own biggest hole, and it is closed rather than never having existed. {{< status kind="shipped" date="2026-09-09" href="https://github.com/INTENTIUS/chant/pull/2338" >}}
38
38
- An agent driving chant over MCP or ACP can still answer a gate it raised itself. Until that closes, no claim about approval integrity across both products. {{< status kind="open" href="https://github.com/INTENTIUS/chant/issues/2384" >}}
39
39
- The largest synthetic benchmark is 200 resources. There is no measured scale figure for chant comparable to choudoufu's 745, and none is claimed. {{< status kind="open" href="https://github.com/INTENTIUS/chant/issues/2317" >}}
Copy file name to clipboardExpand all lines: content/compare/choudoufu-and-terraform-state.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,13 +25,13 @@ Everything else is stock OpenTofu, and the [gauntlet](https://intentius.io/choud
25
25
26
26
## The claims, and how to check them
27
27
28
-
Each of these is a smoke scenario in the repository, two to six minutes on Docker plus a local AWS emulator. Each also runs inverted: under `BREAK=1` it manufactures the exact corruption the claim guards against and passes only by catching it. [The full list is twenty.](https://intentius.io/choudoufu/docs/claims/)
28
+
Each of these is a smoke scenario in the repository, two to six minutes on Docker plus a local AWS emulator. Each also runs inverted, where under `BREAK=1` it manufactures the exact corruption the claim guards against and passes only by catching it. [The full list is twenty.](https://intentius.io/choudoufu/docs/claims/)
29
29
30
30
- Owned resources cannot fall out of plans unnoticed. {{< status kind="measured" href="https://intentius.io/choudoufu/docs/claims/#claim-1-owned-resources-cannot-fall-out-of-plans-unnoticed" >}}
31
31
- Contention settles at the platform API, never in a lock. {{< status kind="measured" href="https://intentius.io/choudoufu/docs/claims/#claim-2-contention-settles-at-the-platform-api-never-in-a-lock" >}}
32
32
- Staleness costs reads, never results. A fresh, an ancient and a missing cache plan byte-identically. {{< status kind="measured" href="https://intentius.io/choudoufu/docs/claims/#claim-3-staleness-costs-reads-never-results" >}}
33
33
- Recovery is a re-run, never surgery. {{< status kind="measured" href="https://intentius.io/choudoufu/docs/claims/#claim-5-recovery-is-a-re-run-never-surgery" >}}
34
-
- The roundtrip: one command in, one file out. Stock stands an estate up, `live-import` adopts it, the cache hands a stock state file back. {{< status kind="measured" href="https://intentius.io/choudoufu/docs/claims/#claim-6-the-roundtrip---one-command-in-one-file-out" >}}
34
+
- The roundtrip is one command in and one file out. Stock stands an estate up, `live-import` adopts it, the cache hands a stock state file back. {{< status kind="measured" href="https://intentius.io/choudoufu/docs/claims/#claim-6-the-roundtrip---one-command-in-one-file-out" >}}
35
35
- Carve by retag. A 79-resource terralith is split into team estates with tag writes and no state surgery. {{< status kind="measured" href="https://intentius.io/choudoufu/docs/claims/#claim-12-carve-by-retag" >}}
36
36
- The tag is the boundary. Two roles fenced to two halves of one estate by an IAM condition; refused by AWS, not by the tool, and the same refusal lands on a plain CLI call. Reproduced on a real account with CloudTrail evidence. {{< status kind="measured" href="https://intentius.io/choudoufu/docs/claims/#claim-13-the-tag-is-the-boundary" >}}
37
37
- A plan costs its estate, not its account. Measured with 3,705 foreign resources in the account: the read pass did not move by one call. {{< status kind="measured" href="https://intentius.io/choudoufu/docs/claims/#claim-20-scale---the-estate-boundary-holds-when-the-account-is-a-terralith" >}}
Copy file name to clipboardExpand all lines: content/compare/control-planes.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,9 +4,9 @@ summary: "A category of products puts an approval loop around Terraform and call
4
4
weight: 30
5
5
---
6
6
7
-
The pitch is consistent across the category. Every change is planned, visible and approved. Nothing runs off-plan. The plan is the agent's work list, applied one effect at a time. Import brings existing infrastructure in as a reviewed diff. It scales to thousands of resources. It is native to whatever transport agents use this year.
7
+
The pitch is consistent across the category. Every change is planned, visible and approved. Nothing runs off-plan. The plan is the agent's work list, applied one effect at a time. Import brings existing infrastructure in as a reviewed diff. It scales to thousands of resources and speaks whatever transport agents use this year.
8
8
9
-
Strip the framing and the mechanism is a loop: plan, pick one effect, apply it, replan, repeat, with a person or a policy between rounds. The safety property is a small blast radius achieved by sequencing. It depends on the approval step catching the bad effect before it runs, and it depends on every actor going through the loop. Anything holding IAM credentials goes around it.
9
+
Strip the framing and the mechanism is a loop. Plan and apply one effect from that plan, then replan and go round again with a person or a policy between rounds. The safety property is a small reach for any one mistake, achieved by sequencing. It depends on the approval step catching the bad effect before it runs, and it depends on every actor going through the loop. Anything holding IAM credentials goes around it.
10
10
11
11
We answer the same claims from a different layer. Ownership is a tag on the resource, so your IAM is the boundary, and it holds whether or not the actor went through any tool.
Copy file name to clipboardExpand all lines: content/contact.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,12 +9,12 @@ summary: "There is no form and nothing to sign up for. Write to us, and say what
9
9
10
10
The conversation goes faster with three things:
11
11
12
-
- A diagram, or a list, of what exists today. Accounts, estates, state files, pipelines, and who owns which.
12
+
- A diagram, or a list, of what exists today. Which accounts and estates there are, where state lives, and who owns each.
13
13
- The one operation you would like to stop doing by hand.
14
14
- Who has to approve it when it runs.
15
15
16
16
That is usually enough to say in one reply whether we can help, and what it would look like if we did.
17
17
18
18
## What we are not
19
19
20
-
Not a vendor. There is no product to license, no seat, no tenancy, and no lever for anyone to pull later. If the right answer for you is a tool we did not build, we will say so.
20
+
Not a vendor. There is no product to license and no seat to buy, so nobody has a lever to pull later. If the right answer for you is a tool we did not build, we will say so.
Copy file name to clipboardExpand all lines: content/tools.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,19 +5,19 @@ summary: "Everything Intentius builds is open source. Two of these are the reaso
5
5
6
6
## choudoufu
7
7
8
-
OpenTofu plus identity hooks. Each AWS resource carries its identity as two tags, `tofu-estate` and `tofu-address`, written as part of the create call and read back live on the next plan. The state file is a cache you are allowed to lose, and the IAM you already run decides who may read or change what. Handover is granting a role, a split is a tag rewrite, adoption is a tag you write. Twenty claims, each a smoke scenario with its failure demonstrated. Experimental, AWS only, MPL-2.0 like upstream.
8
+
OpenTofu plus identity hooks. Each AWS resource carries its identity as two tags, written as part of the create call and read back live on the next plan. The tags are `tofu-estate` and `tofu-address`. The state file is a cache you are allowed to lose, and the IAM you already run decides who may read or change what. Handover is granting a role, a split is a tag rewrite, adoption is a tag you write. Twenty claims, each a smoke scenario with its failure demonstrated. Experimental, AWS only, MPL-2.0 like upstream.
9
9
10
10
[Docs](https://intentius.io/choudoufu/) · [Source](https://github.com/INTENTIUS/choudoufu) · [The claims](https://intentius.io/choudoufu/docs/claims/) · [How it compares](/compare/choudoufu-and-terraform-state/)
11
11
12
12
## chant
13
13
14
-
A type system for operations. Infrastructure is declared in a statically evaluable subset of TypeScript and folded to the platform's own spec with no module execution. Seventeen lexicons: AWS, Azure, GCP, Kubernetes, Helm, Docker, GitHub, GitLab, Forgejo, Fly, Fountain, Terraform and more. One project generates the pipeline for each forge, and gates are durable facts in git. `chant serve mcp` and `chant acp` let an agent drive it over stdio. Apache 2.0.
14
+
A type system for operations. Infrastructure is declared in a statically evaluable subset of TypeScript and folded to the platform's own spec with no module execution. Seventeen lexicons cover the three big clouds and Kubernetes. Others reach the three forges. Fly, Fountain and Terraform have lexicons too. One project generates the pipeline for each forge, and gates are durable facts in git. `chant serve mcp` and `chant acp` let an agent drive it over stdio. It is licensed Apache 2.0.
15
15
16
16
[Docs](https://intentius.io/chant/) · [Source](https://github.com/INTENTIUS/chant) · [The TypeScript subset, as a spec](https://github.com/INTENTIUS/typescript-as-data) · [How it compares](/compare/chant-cdk-and-pulumi/)
17
17
18
18
### The Fountain lexicon
19
19
20
-
chant can declare a [Fountain](https://github.com/BinaryBourbon/fountain) estate the way it declares cloud infrastructure: agents, environments, vaults, teammates, schedules and webhook receivers, in TypeScript, applied through one call and diffed against what is live. Thirteen lint rules run before anything is sent, and they exist because of how agents fail: an environment that never said what network it wanted, a cloud key sitting in plain environment variables, an MCP server handed a literal token, a vault key silently shadowing an environment key. An agent, a teammate and a schedule are declared resources with per-tool permission verdicts, allowed vaults, allowed environments and a sandbox mode. Most products let you talk to an agent. This lets you declare one and diff it against what is actually running.
20
+
chant can declare a [Fountain](https://github.com/BinaryBourbon/fountain) estate the way it declares cloud infrastructure, in TypeScript, applied through one call and diffed against what is live. The kinds it models are agents and their environments, vaults and teammates, and schedules and webhook receivers. Thirteen lint rules run before anything is sent, and they exist because of how agents fail: an environment that never said what network it wanted, a cloud key sitting in plain environment variables, an MCP server handed a literal token, a vault key silently shadowing an environment key. An agent is a declared resource with per-tool permission verdicts and a sandbox mode, and so are a teammate and a schedule. Most products let you talk to an agent. This lets you declare one and diff it against what is actually running.
21
21
22
22
The six Fountain kinds chant models are modeled completely. The remaining API surface is excluded with recorded reasons.
23
23
@@ -39,4 +39,4 @@ Stateful local emulators so the tools above can be tested without an account. [m
39
39
40
40
## Also
41
41
42
-
[pinhole](https://github.com/INTENTIUS/pinhole) draws chant's resolved graph as diagrams. [blacklight](https://blacklight.intentius.io) is a hosted chant audit: paste a public repo URL, get the misconfigurations in its CI, manifests and templates as ready-made diffs. [spicypath](https://spicypath.intentius.workers.dev) inspects any profile in the browser.
42
+
[pinhole](https://github.com/INTENTIUS/pinhole) draws chant's resolved graph as diagrams. [blacklight](https://blacklight.intentius.io) is a hosted chant audit: paste a public repo URL and get its misconfigurations back as ready-made diffs. [spicypath](https://spicypath.intentius.workers.dev) inspects any profile in the browser.
0 commit comments