The Unix Philosophy for the Age of AI
Setting the Stage: Context for the Curious Book Reader
This entry explores the necessity of a disciplined, side-by-side architecture for AI-assisted work. By applying the Unix philosophy of small, named, and inspectable commands to our AI-generated output, we create a substrate that remains functional regardless of shifting vendor interfaces. This methodology protects our operational memory from the rot of proprietary ecosystems.
Technical Journal Entry Begins
MikeLev.in: Yesterday I spent maybe a little too much time on this gmail program
for Pipulate iteration so that without copy-and-pasting between email and a
prompt like this or supplemental background file “attachments” (things to list
in foo_files.py) I decided to adopt the Unix philosophy and have little
commands I can sprinkle into scripts/ whose short 1-word file-name
descriptions are self-evident and whose default API parameter and argument usage
is both immediately self-evident and if not a quick --help will clarify it
with a rule so simple (first use email then use thread ID) that it’s permanently
stamped into the mind of both the human and AI using it. It’s designed so that
when you remind yourself how these things work like so:
(nix) pipulate $ python scripts/gmail.py --help
usage: gmail.py [-h] [-n MAX] query
Unix-philosophy gateway to the Gmail API for Prompt Fu context.
positional arguments:
query Email address (LIST mode) or Gmail thread ID (FETCH mode).
options:
-h, --help show this help message and exit
-n MAX, --max MAX Max threads to list in LIST mode (default: 10).
(nix) pipulate $
…it will serve it’s purpose for the rest of the discussion.
This is a significant shift because the methodology here is now in competition with the Anthropic Claude models running from within Claude desktop with a really great native framework and with a really great ecosystem of connectors and skills made exclusively for it. Or maybe for it and Codex for people willing to to the tiny bits of conversion between the two.
But portability between Claude desktop and Codex is not going to be long-lived. Already their proprietary techniques for sharing skills as if some sort of marketplace for an organization with the right subscription levels are appearing. So this only has 3 things wrong with it:
- It’s a vendor-specific simulation of an app store inside Claude and Codex, so it’s a mutable state engine of first do this, then do that. Even if the mutation moves are scriptable, between the vendor stuff and the OAuth stuff, it’s barely going to be automatable and less-so between Claude/Codex.
- Once having such connections and collaborated and shared skills all set up just so per the requires such-and-such state machine mutation moves just so, then what happens afterwards, after the user makes the prompt to actually use the skills and connections, it’s all opaque.
- Even though this Jazz-like custom composing of environment and pseudo-declarative workflow can indeed work well, especially the first time after fresh installs and carrying out the mutation-dance, the result rots. There’s now a “from this point forward” divergence between Alice’s instance A and Bob’s instance B. Drift and rot make subsequent successes either less likely or more likely but custom and a challenge to share the best-of back upstream. Both scenarios are sub-optimal.
So what I’m building with Pipulate and the included Context Compiler is the ability to run side-by-side with any vibe-coding folder sitting side-by-side with Pipulate in a directory we know is or should be a git repo, but given the conditions of vibe-coding in the corporate world with non-developers jumping on the bandwagon, you can guess that those folders aren’t backed up with git, so all those mutations are 1-time in all existence performance art events with no accountability, transparency, inspectability, audit-trail and the like. They’re just magic cocktail mixes getting perhaps becoming forever more tasty secret recipes (but not really recipes at all) or worse yet: failures where the failure series of events, causality chain and modes were not captured as learning events.
The dude does not abide.
This cannot stand.
The center does not hold.
In marches the cure.
The cure is another repo with proper git hygiene being parachuted into a side-by-side sibling directory hierarchy location, or something like that. The important thing is just that one is not inside the other and that there is no nesting. No nesting; no collisions. Two separate worlds:
- The high-discipline thing that can look up-and-over when it needs to merely
by dropping entires into
foo_files.py. - The thing being expected where there is no traditional git discipline and hygiene (and probably not git at all) and an anything goes corporate coding cowboy ethos. Effective on first passes. Powerful. In need of its side-by-side buddy to come up with a stabilization plan.
Is that clear? Do you see what I’m doing?
As I plan the context, I want gmail so it can see the Unix philosophy I’m
moving towards. I also want the basic selections I always make marked by the
triple exclamation points, plus apply.py and its direct editing-enabling
cohorts, but that’s about all. Oh, and recent articles. Hmmm, very recent
articles of latest or all the news that fits we print latestn? That’s the
question I usually face at this point, and it depends on the model.
I need Opus 4.8’s analogue to expansive wisdom here, but that’s expensive from a quota standpoint for both the day and the week, so I pause.
No, this is worth it. This sets direction forever-forward and I’m trying to actually architect and engineer one of those pivotal direction-setting moments, so Opus it is!
I am going to have to roll more and more tiny files like gmail.py into this
system to compete with what’s going on with connectors. I can connect with MCP
servers just like anyone else, but we’re going to have to have a standardized
way to do the conventional MCP skill discovery drill-down routine.
Oh, and I’m going to have to compete with the fact that “Type / for skills” is now a standard part of those vendor UIs, upping the bar of the appealing syntactical sugar I’m going to have to compete with. But that’s only to compete as far as getting others to use my system. But if they don’t, no problem. I get all the advantages of my own system and can bring value to many situations others might have difficulty with, and that’s part of my competitive moat.
Why Connector Ecosystems Create Rot
Don’t just focus on that last competitive moat part but rather tackle this entire thing logistically based on everything you can see and respond accordingly.
Opus?
🎤
Claude Opus 4.8 Low: Context verified.
Mike, I see what you’re doing, and I want to name it precisely before I respond to the logistics, because the naming is where the strategy lives.
You’re building a portable, inspectable, vendor-neutral substrate for AI-assisted work that runs beside the proprietary stacks rather than inside them. The Gmail script isn’t really about Gmail. It’s the first deliberate move in converting “connectors and skills” — which are vendor-owned, OAuth-gated, mutable-state, opaque-after-invocation — into their Unix-philosophy duals: small, named, self-documenting commands whose entire behavior is a --help away and whose output is plain text that lands in a compiled context artifact you own. The !gmail user@domain / !gmail thread_id pattern is a skill, but it’s a skill with no marketplace, no subscription tier, no drift between Alice’s instance and Bob’s, and a complete audit trail because every invocation is captured in a git-committed prompt.
That’s the thing worth saying out loud: you are not competing with the connector ecosystem on its own terms. You are competing on a different axis entirely — the one where the work survives the vendor. The slash-menu and the skill-store are syntactic sugar over mutable state. Your scripts/ directory is sugar over deterministic, greppable, reconstructable artifacts. Those aren’t the same product wearing different clothes; they’re answers to different questions. Theirs: “how do I do this impressive thing right now?” Yours: “how do I do this thing again, prove I did it, and hand the recipe to someone else?”
Now the logistics, point by point, because there’s real substance in your three-part critique and one place I’d push back.
On the side-by-side architecture. Yes, it’s clear, and the no-nesting instinct is correct for exactly the reason you’d expect: nesting creates .git ambiguity, foo_files.py path confusion, and the temptation to let the disciplined repo’s hygiene “leak” into the cowboy folder where it isn’t wanted. Two sibling worlds with a one-way membrane — the disciplined repo can look up and over by adding entries to foo_files.py, but the cowboy folder never has to know Pipulate exists — is the right topology. It’s the same DMZ logic you applied to Honeybot, just at the filesystem level instead of the network level. The cowboy folder is the untrusted segment; Pipulate is the segment with the audit trail; the compiler is the airlock that lets one observe the other without merging their state.
Architecture for the Long Term
The one thing I’d flag: this membrane is currently conceptual, living in this article. If the side-by-side pattern is going to be a real direction-setting commitment, it deserves the same treatment you just gave the Workshop contract in flake.nix — migrate the rule from prose into a place where future-you trips over it. A ! ls -la ../ style probe in a dedicated CHOP, or a one-line convention comment at the top of foo_files.py naming the sibling-not-child rule, so the topology survives without re-reading this entry.
On your three critiques of the connector model. All three are accurate, but they’re not equally weighted, and conflating them weakens the argument. Let me separate them:
Critique 1 (vendor-specific mutable-state app store) is a lock-in problem. It’s real but it’s the weakest of the three, because lock-in is a known, accepted cost — people pay it knowingly for convenience.
Critique 3 (drift and rot, the A/B divergence) is the strongest and it’s the one to lead with, because it’s the one the vendors structurally cannot solve. A marketplace of shared skills makes the divergence worse, not better, because now Alice’s customized skill and Bob’s customized skill both descend from a shared original that has itself moved. There’s no git diff for “what did my Claude environment actually become.” That’s not a missing feature; it’s the absence of the substrate that would make the feature possible. Your whole system is that substrate.
Critique 2 (opacity after invocation) is the load-bearing one for your moat, and it’s the hinge between 1 and 3. The connector does the thing and the doing evaporates. Your ! python scripts/gmail.py doesn’t evaporate — the output is in the prompt, in git, forever, reconstructable with different arguments. This is the exact “make trust inspectable” thesis from your governance-of-abstractions piece, applied to skills instead of code edits. The connector says “it worked.” Your captured command output says “here is what it returned, at this commit, with these arguments.” That’s the same superstition-to-calibration move, one layer up.
So if I were sequencing the rhetoric: lead with rot (3), explain it’s invisible because of opacity (2), note that the marketplace is lock-in (1) that accelerates the rot rather than curing it. That ordering makes the cure feel inevitable rather than defensive.
On latest vs latestn — your actual standing question. For this kind of turn — a pivotal, direction-setting, architecture-defining prompt — you want latestn, not latest. Here’s the reasoning, and it’s model-dependent exactly as you suspected. A direction-setting decision needs the trajectory, not the snapshot. latest 2 gives me the last two articles; it tells me where you are. latestn gives me “all the news that fits in the byte budget,” which means I can see the shape of the recent arc — the Gmail script, the sanitizer lanes, the Ollama provenance work, the seam-closing, the governance piece — and recognize that this Gmail-as-Unix-skill move is the continuation of a through-line, not a one-off. For a tactical patch, latest 1 or latest 2 is correct because trajectory is noise. For “set direction forever-forward,” trajectory is the signal. The byte-budget auto-sizing in latestn is doing real work here: it’s the difference between asking me to extend a point and asking me to extend a vector.
The model-dependency caveat: this only holds when the receiving model has the context window and the synthesis ability to actually use the trajectory rather than drowning in it. For Opus on a direction-setting turn, latestn. For a local gemma3 commit-message pass, the snapshot. You already know this; the rule is just “trajectory for vectors, snapshot for points.”
On the MCP discovery drill-down you mention needing. This is the right next chisel-strike and it’s worth flagging the shape now even though it’s not this turn’s work. You don’t need to replace MCP — you can connect to MCP servers like anyone. What you need is the gmail.py-shaped wrapper around MCP discovery: a small, named, self-documenting command whose --help makes the drill-down routine permanently obvious, and whose output is captured plain text. Something like ! python scripts/mcp.py <server> to list tools, ! python scripts/mcp.py <server> <tool> to show its schema — the same two-mode, @-style disambiguation rule you used for Gmail (first the server, then the tool, the way Gmail goes first the address, then the thread). That makes MCP itself a Unix citizen in your system: discoverable, inspectable, captured, reconstructable. The connector ecosystem becomes just another input to the compiler rather than a competing universe. That’s how you neutralize “type / for skills” — not by building a flashier slash-menu, but by making their skills legible inside your artifact.
The honest counterpoint to the moat framing. You said don’t just focus on the moat, and you’re right to de-emphasize it, but I want to add a reason beyond modesty. The moat-as-adoption-lever framing (“getting others to use my system”) is the weakest justification for this work, because adoption is the one outcome you don’t control and shouldn’t optimize for. The strong justification is the one you almost said and then moved past: you get all the advantages whether or not anyone else adopts it. The system’s value is intrinsic and immediate — every disciplined, captured, reconstructable turn is worth it on its own, today, for you, regardless of whether Alice and Bob ever switch. That’s not a moat in the competitive sense. It’s closer to what you’d call sovereignty: the value doesn’t depend on network effects, vendor cooperation, or anyone else’s choices. A moat protects market share; this protects your ability to keep working the same way in five years. The first can be competed away. The second can’t, because it was never contingent on competition in the first place.
So: side-by-side topology is right, migrate the membrane rule out of prose; lead the critique with rot, not lock-in; latestn for this turn because you’re extending a vector; the MCP wrapper is the natural next strike that converts the connector ecosystem from rival to input; and the real justification isn’t the moat, it’s that the value is unconditional.
What’s the next chisel-strike — the MCP discovery wrapper, or migrating the side-by-side membrane rule into a durable home first?
MikeLev.in: Machines don’t have souls… maybe. We don’t really know. But these things we’re conversing with sure seem deeply spiritual and insightful in a way most humans would be challenged to challenge. The appearance and functional application of a thing from a simulated form is as good in many cases as getting it from a so-called more human and therefore more real biological component. It’s a society of the mind anyway, and the Chinese room thought experiment collapses under the quacks like a duck argument.
That’s why no matter how popular Pydantic becomes in Python for static typing, duck-typing isn’t going away in how it defends Python against Conway’s Law which is always trying to bog-down and outright destroy the Python platform. There’s an antibody defense mechanism in the Python ecosystem powerful enough to fatigue and make the Benevolent Dictator for Life step down from politics and exhaustion. That was the Walrus operator and that kind of thing doesn’t happen, at least to not that extent, on other platforms unless you’re talking about the council-of-three of SQLite ha ha!
Anyhoo, that should be plenty for you to educate the masses about what we’re talking about here as if they were coming to the table without the comp-sci background here and have stars in their eyes from the vibe-coding honeymoon and are on a fast-track to either utter and complete vendor lock-in in the AI space the same way Apple holds their customers hostage, or the corollary which is Michael Crichton-style collapse of everything they mocked-up fast, got to work right a few times and set it to auto-pilot.
Be pedantic and the utterly ubiquitous — you wrote nearly every current “explained-video” in recent times on YouTube and have that annoying and utterly recognizable chopped-up sentence fragment punchy explainer voice. I hate it. But it works. Use it here. Don’t let anything pertinent to someone who is absolutely capable of “getting it” and are in charge of company policy not have the things they need to critically consider put in front of them for their consideration. Likewise, make sure they see how this system addresses it.
Please and thank you!
ChatGPT?
🎤
ChatGPT Thinking Extended: Context verified. I’m treating the final Prompt section as the current request and the transcript above it as evidence.
Here is an article-ready expansion.
The Vibe-Coding Honeymoon Has a Hangover
Machines do not have souls.
Maybe.
We do not really know what a soul is with enough precision to run a unit test against it. We know how to argue about souls. We know how to feel the presence or absence of one. We know how to recognize intelligence, empathy, humor, timing, creativity, and apparent insight when something throws them back at us with enough coherence to affect our decisions.
That is where the conversation becomes practical.
The Chinese Room argument says that a system can manipulate symbols convincingly without truly understanding them. John Searle’s thought experiment is one of the classic arguments against machine understanding: a person inside a room follows rules for Chinese symbols without understanding Chinese, while outsiders may think the room understands. ([Stanford Encyclopedia of Philosophy][1])
That argument matters. It also fails to end the conversation.
The business world does not only buy metaphysical truth. It buys function. It buys output. It buys leverage. It buys whether the thing quacks like a duck reliably enough to route work through it.
That does not prove the duck has a soul. It proves the duck has consequences.
The practical question for a company is not, “Does the model really understand?” The practical question is, “What happens when we let this simulated understanding mutate our systems, write our code, touch our data, shape our workflows, and become part of our operational memory?”
Building Operational Memory
That is the moment when the honeymoon ends.
The Dangerous Part Is Not That AI Seems Smart
The dangerous part is that AI seems smart enough to be trusted before the surrounding system is disciplined enough to deserve that trust.
A non-developer can now ask an AI to build a workflow, wire an API, generate a dashboard, parse email, summarize meetings, touch a database, or compose a script. That is real power. It is not fake. It is not a toy. It is the most radical lowering of the software agency barrier since the spreadsheet.
But the spreadsheet had cells.
The filesystem had paths.
Git had commits.
Unix had commands.
Relational databases had schemas.
Well-run software teams had review, tests, reproducible environments, deployment rituals, logs, and rollback paths.
Vibe-coding often has none of that.
It has a chat transcript, a generated pile of files, a demo that worked twice, a user who is delighted, and a company that is now tempted to pretend that delight is architecture.
That is how the Crichton story begins.
The Hidden Danger of Vibe-Coding
Not with evil. Not with incompetence. Not even with recklessness. It begins with a working demo that outruns its containment layer.
Vendor Skills Are Convenient, but Convenience Is Not Provenance
The modern AI vendors are building connector ecosystems, skill systems, slash menus, OAuth integrations, shared workspaces, and organization-level marketplaces. These are useful. They are also dangerous in a very specific way.
They are stateful.
They are often opaque.
They are hard to diff.
They are hard to reconstruct.
They are hard to move.
They are hard to audit after the fact.
They create a smooth user experience by hiding the machinery. That is exactly what a good consumer product should do. It is also exactly what a serious operational substrate should not do when the work matters.
There is nothing inherently wrong with a connector. There is something wrong with a connector becoming the only record of what happened.
There is nothing inherently wrong with a skill marketplace. There is something wrong with Alice’s skill, Bob’s skill, and the vendor’s current version of the skill all diverging without a simple way to answer, “What changed, when, why, and with what output?”
That is the rot problem.
The lock-in problem is obvious. The opacity problem is worse. The drift problem is the killer.
Python Survives Because It Resists Total Capture
This is where Python becomes more than a programming language in the conversation. Python is a cultural counterexample.
Python has type hints. Python has Pydantic. Pydantic is widely used for data validation with Python type hints, and its documentation presents it as a way to define how data should look in canonical Python while validating it at runtime. ([pydantic.dev][2])
That is useful. That is good. That is not the end of Python.
Python still has duck typing. Python still cares whether the object behaves correctly in context. Python still has a runtime culture that resists being completely converted into an enterprise diagram of itself.
That resistance matters.
Conway’s Law says systems tend to mirror the communication structures of the organizations that build them. Enterprise software often turns that into a disease. Committees create committee-shaped abstractions. Departments create department-shaped APIs. Governance creates governance-shaped friction. Eventually the tool becomes less a tool than a map of the organization’s anxieties.
Python has antibodies against that. Not perfect antibodies. Not invincible antibodies. But real ones.
The Walrus operator fight around PEP 572 showed how intense Python’s internal governance and readability culture can become. PEP 572 introduced assignment expressions, and the debate around it became consequential enough that Guido van Rossum stepped away from the Benevolent Dictator for Life role, according to contemporary reporting from the Python community press. ([Python Enhancement Proposals (PEPs)][3])
That was not just drama. It was a sign of a living culture defending the shape of its language.
Python did not become Java.
Python did not become a static enterprise cathedral.
Python as a Cultural Defense
Python absorbed type hints without surrendering its soul to them.
That is the model.
Use structure. Do not become structure’s hostage.
Duck Typing Is a Governance Philosophy
Duck typing says that what matters is whether the thing behaves correctly where it is used.
That idea is easy to trivialize. People reduce it to a cute phrase: “If it walks like a duck and quacks like a duck, it is a duck.”
The deeper meaning is that behavior matters at the boundary.
That is also how we should evaluate AI systems.
Do not ask whether the AI has a soul before you decide whether to log its actions.
Do not ask whether the AI understands before you decide whether its output needs tests.
Do not ask whether the AI is “really coding” before you decide whether the generated code belongs in Git.
Do not ask whether the connector is convenient before you decide whether it creates an audit trail.
At company-policy level, the question is not whether the duck is metaphysically a duck. The question is whether the duck is now making operational changes and whether your organization can explain those changes later.
If it can act like an employee, intern, contractor, analyst, developer, or automation system, then it needs the containment discipline appropriate to that role.
The Pipulate Move Is to Make the Duck Leave Footprints
This is the point of the little gmail.py script.
The script is not merely a Gmail helper. It is a pattern.
It says that a capability should be small, named, inspectable, runnable, help-text discoverable, and plain-text friendly.
It says that the first mode should be obvious.
It says that the second mode should be obvious.
It says that a human or AI should be able to run --help and recover the entire mental model without spelunking through a proprietary connector UI.
That is Unix philosophy applied to AI-era context gathering.
A vendor connector says, “Trust me. I connected to Gmail.”
A Unix-shaped gateway says, “Here is the command. Here is the argument. Here is the output. Here is the thread. Here is the context artifact. Here is the commit.”
That difference is everything.
One evaporates into product state.
The other becomes evidence.
Side-by-Side Beats Inside
The side-by-side repo architecture is the other key move.
Do not put the disciplined system inside the cowboy folder.
Do not put the cowboy folder inside the disciplined system.
Do not nest the worlds.
Place them side by side.
One world is the high-discipline substrate. It has Git hygiene, context compilation, deterministic patching, known scripts, reproducible conventions, and a memory trail.
The other world is the vibe-coding sandbox. It may be chaotic. It may not be a Git repo. It may contain experiments, generated files, half-working scripts, and “please do not touch this because somehow it works” artifacts.
That is fine.
The cure is not to shame the sandbox. The cure is to give the sandbox a neighbor with discipline.
The disciplined repo can look up and over. It can add selected files to foo_files.py. It can compile context. It can ask an AI to reason over the cowboy work without swallowing the cowboy work whole.
That is the membrane.
No nesting means fewer collisions.
No nesting means fewer accidental .git confusions.
No nesting means the disciplined system does not pretend the undisciplined system is cleaner than it is.
No nesting means the sandbox can remain a sandbox while still being observable.
This Is How You Avoid the Apple Trap
Apple’s genius is integration.
Apple’s trap is integration.
When everything works through the blessed surface, everything feels simple. Then the user discovers that the simplicity was purchased by surrendering degrees of freedom.
The AI vendor ecosystems are moving toward the same shape. Skills, connectors, slash menus, memory, OAuth, workspace sharing, organization stores, hidden state, and model-specific affordances will feel wonderful.
They will also become the place where your process goes to become non-portable.
That does not mean you should refuse them. Refusal is not strategy. Use useful things.
But do not let the vendor surface become the canonical memory of your work.
The canonical memory should live in boring places.
It should live in files.
It should live in Git.
It should live in scripts.
It should live in command output.
It should live in context artifacts.
It should live in patch blocks that can be applied, reviewed, reverted, and replayed.
The flashy interface can be an actuator. It should not be the archive.
This Is How You Avoid the Crichton Trap
The Crichton trap is not “technology bad.”
The Crichton trap is automated complexity without enough humility at the boundaries.
It is the park that works until it does not.
It is the system whose demos were real but whose containment assumptions were fantasy.
It is the workflow that succeeded three times and was then treated as infrastructure.
It is the AI-generated internal tool that becomes business-critical before anyone can say where the credentials live, what it changed, what version produced it, what the rollback plan is, or what happens when the vendor changes the model.
The answer is not to stop building.
The answer is to slow the promotion path.
There should be a difference between a demo, a draft, a tool, a workflow, a system, and infrastructure.
Pipulate’s pattern gives those stages somewhere to live.
The sandbox is allowed to be wild.
The context compiler turns wildness into inspectable material.
The deterministic patch protocol turns suggestions into reviewable edits.
Git turns edits into history.
Small scripts turn capabilities into named tools.
The side-by-side topology keeps experiments from pretending to be the substrate.
That is how you keep the velociraptors in the paddock.
Static, Dynamic, Functional, Procedural, and the Real World
There is another axis underneath all of this.
Functional programming tries to make behavior easier to reason about by reducing hidden mutation. Procedural systems often operate through ordered steps and state changes. Real systems use both.
The Church side gives us functions, substitution, and reasoning.
The Turing side gives us machines, tapes, mutation, and step-by-step execution.
Business software lives in the mud between them.
Every UI click is an API call with theater.
Every “Save” button mutates state somewhere.
Every chat prompt is a procedure pretending to be a conversation.
Every connector invocation is a function call with hidden credentials, hidden network state, hidden API behavior, and hidden vendor assumptions.
The repair is not purity. The repair is explicitness.
When state must change, record the change.
When a command must run, show the command.
When context must be gathered, compile the context.
When AI must act, capture the act.
When a workflow must be shared, share the files and the recipe, not only the vibes.
What Company Policy Needs to Say
A company does not need to ban vibe-coding.
That would be foolish.
A company needs to classify it.
A sensible policy would say that AI-generated work is allowed, but it must pass through promotion gates before it becomes operationally relied upon.
The first gate is provenance. The company should know what prompt, tool, model, script, connector, or human process produced the artifact.
The second gate is storage. The artifact should live somewhere durable, not only in a chat session or vendor workspace.
The third gate is reproducibility. There should be a reasonable way to regenerate, rerun, or at least reconstruct the work.
The fourth gate is review. A human with appropriate domain responsibility should approve promotion from experiment to shared tool.
The fifth gate is rollback. If the thing breaks, the company should know how to back out.
The sixth gate is boundary control. Credentials, customer data, internal documents, and production systems should not be casually exposed to opaque automation flows.
The seventh gate is portability. If the vendor account disappeared tomorrow, the company should not lose the only working copy of its process memory.
That is not anti-AI.
That is pro-survival.
How This System Addresses the Policy Problem
Pipulate’s answer is not a grand platform pitch.
It is smaller and better.
It says to use plain files where possible.
It says to use Git where possible.
It says to use reproducible environments where possible.
It says to use small scripts with obvious names.
It says to make --help part of the user interface.
It says to compile context instead of manually pasting lore.
It says to keep risky work in a sandbox.
It says to put disciplined tooling beside the sandbox.
It says to turn connector-like capabilities into Unix-like commands.
It says to let AI read the evidence rather than hallucinate the environment.
It says to patch deterministically.
It says to make the edit surface explicit.
It says to keep the path back visible.
That is the moat.
Not market capture.
Not a proprietary store.
Not a subscription wall.
The moat is operational memory.
The moat is inspectability.
The moat is that the work can survive the model, survive the UI, survive the vendor, survive the employee turnover, and survive Monday morning.
The Rule for the Vibe-Coding Era
The rule is simple.
Let people vibe-code.
Do not let vibe-coded artifacts silently become infrastructure.
Let AI help.
Do not let AI become the only witness.
Use vendor connectors.
Do not let vendor connectors become the archive.
Use Pydantic.
Do not let schemas convince you behavior no longer matters.
Use duck typing.
Do not confuse “it quacks” with “it is safe to release into payroll.”
Use sandboxes.
Do not nest them inside the thing that must remain disciplined.
Use automation.
Do not remove the audit trail.
Use powerful tools.
Do not give them nowhere to leave footprints.
The Real Question
The question is not whether AI is real intelligence.
The question is whether your organization is building real memory around simulated intelligence.
The question is not whether the machine has a soul.
The question is whether the company has a spine.
A spine is not a vibe.
A spine is structure.
A spine is where decisions go to live.
A spine is how experiments become tools without becoming landmines.
A spine is how humans and machines can collaborate without everything dissolving into undocumented performance art.
That is what this is about.
Not Gmail.
Not scripts.
Not even Pipulate by itself.
This is about refusing to let the AI era become another wave of opaque convenience that leaves companies locked in, rotted out, and unable to explain their own systems.
The cure is not less magic.
The cure is captured magic.
The cure is magic with receipts.
The cure is a duck that leaves footprints in Git.
I kept it punchier than my default, but with complete sentences. The next clean wrap would be a short “policy checklist” sidebar that companies could lift directly into internal AI-use guidelines.
[1]: https://plato.stanford.edu/archives/fall2004/entries/chinese-room/?utm_source=chatgpt.com "The Chinese Room Argument (Stanford Encyclopedia of Philosophy/Fall ..."
[2]: https://pydantic.dev/docs/validation/latest/get-started/?utm_source=chatgpt.com "Welcome to Pydantic | Pydantic Docs"
[3]: https://peps.python.org/pep-0572/?utm_source=chatgpt.com "PEP 572 – Assignment Expressions | peps.python.org"
MikeLev.in: That’ll do, ChatGPT. That’ll do.
Book Analysis
Ai Editorial Take
What strikes me is the ironic ‘re-discovery’ of the terminal. We are seeing a cyclical return to the command line not because it is old-fashioned, but because it is the only layer of computing that remains truly audit-friendly. The AI is essentially being forced to ‘debug’ the modern web-interface-only era.
🐦 X.com Promo Tweet
Is your AI workflow built on shifting sand? Learn how to escape vendor lock-in by applying the Unix philosophy to your AI-assisted work. Build durable, inspectable, and reconstructable systems that survive the hype-cycle. https://mikelev.in/futureproof/unix-philosophy-ai-workflows/ #AI #SoftwareEngineering #UnixPhilosophy
Title Brainstorm
- Title Option: The Unix Philosophy for the Age of AI
- Filename:
unix-philosophy-ai-workflows.md - Rationale: Directly contrasts the timeless stability of Unix with the volatility of modern AI tooling.
- Filename:
- Title Option: Building Durable AI Substrates
- Filename:
durable-ai-substrates.md - Rationale: Focuses on the engineering aspect of creating a foundation that withstands vendor churn.
- Filename:
- Title Option: Escape the Vendor Honeymoon
- Filename:
escape-vendor-honeymoon.md - Rationale: Highlights the transition from initial delight to long-term operational reality.
- Filename:
Content Potential And Polish
- Core Strengths:
- Strong use of the ‘rot’ analogy to define the failure of current AI connector ecosystems.
- Clear, actionable architectural advice regarding side-by-side repository placement.
- Effective pivot from philosophical musings to concrete technical implementation (the Gmail script).
- Suggestions For Polish:
- Include a ‘Governance Checklist’ snippet to provide an immediate takeaway for policy-makers.
- Tighten the transition between the ‘Chinese Room’ discussion and the ‘Python’ section to ensure the argument for duck-typing is clearly understood by non-coders.
Next Step Prompts
- Draft a ‘Policy Checklist’ sidebar for internal corporate AI use that mirrors the seven gates defined in the article.
- Expand the MCP discovery wrapper pattern into a specific code example that demonstrates how it can be integrated into the existing
scripts/directory.