spectre — zsh — en

whoami

Spectre — an OTP-native runtime for agents that stay understandable, governable, and recoverable. This site runs on it.

cat manifesto.md

Build one Elixir agent. Give it only the powers it needs.

Spectre gives one supervised agent ownership of its state and lifecycle. Optional spectre_* libraries add capabilities such as memory, planning, model selection, channels, or a browser: they are powers of that same agent, not different agents.

01 / propose

The model never executes

It may propose work; deterministic policies and your application decide what is allowed and when a side effect runs.

02 / compose

Capabilities, not personas

Install only the powers one agent needs. Each package has one job and never becomes a hidden second agent.

03 / evolve

Improvement stays governed

The agent can learn from experience and propose a safer definition; evaluation, review, approval, activation, and rollback remain explicit.

ls -1 posts/ | wc -l 12 github.com/elchemista/ex_blog

$

grep --tag "AI agents" posts/

[clear filter ×]

ls -lat posts/

Latest posts

12 files
posts/en/beam-vm-elixir-serious-ai-agents.md

cat posts/en/beam-vm-elixir-serious-ai-agents.md

BEAM Wasn't Built for AI, but It Feels Made for Serious Agents

When I started building Spectre, choosing Elixir for a project connected to artificial intelligence felt almost provocative. The usual path through the AI world is already well marked. You begin with Python, reach for CU

#Software Development 10 min en open
posts/en/skill-is-not-markdown-file-how-spectre-was-born.md

cat posts/en/skill-is-not-markdown-file-how-spectre-was-born.md

A Skill Is Not a Markdown File: The Reasoning That Led Me to Spectre

When I started thinking about how to build an Agent, skills already existed. Tools such as Codex, Claude, and other agent systems used skills built around Markdown instructions, sometimes accompanied by scripts, tools, a

#Software Development 12 min en open
posts/en/enterprise-agents-spectre-control-security.md

cat posts/en/enterprise-agents-spectre-control-security.md

An Enterprise Agent Is Not a Chatbot with Production Credentials

A chatbot that gets an answer wrong creates an awkward conversation. An Agent with production credentials that gets something wrong creates an incident. The enterprise problem lives in that distance. It does not begin wh

#Software Development 14 min en open
posts/en/deepseek-harness-vs-spectre-plugins-or-kernel.md

cat posts/en/deepseek-harness-vs-spectre-plugins-or-kernel.md

When Even the Laws of Physics Are Plugins: DeepSeek Harness vs Spectre

"Everything is a plugin" is an irresistible sentence for a developer. It promises freedom. Change the model, change the tool registry, change the database, change the loop. If you dislike a choice, replace it through con

#Software Development 14 min en open
posts/en/humans-govern-loop-spectre-streaming-0-3-2.md

cat posts/en/humans-govern-loop-spectre-streaming-0-3-2.md

Humans Should Govern the Loop, Not Run It

We built Agents capable of working for hours. Then we hired a human to press "Continue" every thirty seconds. Congratulations. We automated the work by creating a new job. A daily.dev collection about AI engineering in 2

#Software Development 12 min en open
posts/en/do-not-trust-the-model-test-spectre-agents-like-software.md

cat posts/en/do-not-trust-the-model-test-spectre-agents-like-software.md

Do Not Trust the Model: Test a Spectre Agent Like Software

An agent produced the correct answer. The test passes. But did it call the model three times when none were needed? Did it stage a destructive action before approval? Did it execute the same operation twice after a timeo

#Software Development 15 min en open
posts/en/spectre-morph-build-an-agent-that-can-evolve.md

cat posts/en/spectre-morph-build-an-agent-that-can-evolve.md

Spectre Morph: Build an Agent That Can Evolve Without Rewriting Itself

“A self modifying agent” usually brings the wrong picture to mind. It sounds like a model opening its own source files, rewriting a prompt, adding a tool, and restarting itself with more power than it had a moment ago. T

#Software Development 18 min en open
posts/en/spectre-news-agent-lens-kinetic-action-language.md

cat posts/en/spectre-news-agent-lens-kinetic-action-language.md

Build a Useful Spectre News Agent with Lens, Kinetic, and Action Language

Many agent demos end when the model calls a function. That is enough to show that tool calling works, but it is not enough to show why an agent runtime exists. The interesting problems begin when the function touches the

#Software Development 14 min en open
posts/en/a-turn-is-not-a-model-call-spectre-otp-policies.md

cat posts/en/a-turn-is-not-a-model-call-spectre-otp-policies.md

A Turn Is Not a Model Call: How Spectre Governs Agents with OTP

In many agent frameworks, a turn begins when input reaches a model and ends when the model has finished calling tools and produced an answer. I started Spectre from a different question: At which point does responsibilit

#Software Development 13 min en open
posts/en/the-agent-should-exist-in-code-not-in-the-prompt.md

cat posts/en/the-agent-should-exist-in-code-not-in-the-prompt.md

The Agent Should Exist in Code, Not in the Prompt

Most agents exist primarily inside a prompt. The surrounding application may be written in Python, TypeScript or Elixir, but the agent itself is often a long system message: who it is, what it can do, which rules it must

#Software Development 11 min en open
posts/en/getting-started-with-spectre.md

cat posts/en/getting-started-with-spectre.md

Getting Started with Spectre: Your First Agent Is Not a Loop

Most agent tutorials start with a model call. You send a prompt, describe two tools, print the answer, and the demo works. Spectre asks you to start somewhere else. Before choosing a model, you have to answer a much less

#Software Development 14 min en open
posts/en/building-a-blog-agent-with-spectre.md

cat posts/en/building-a-blog-agent-with-spectre.md

Building a Blog Agent with Spectre, Not Around a Magic Loop

I did not build Spectre because calling an LLM from Elixir was difficult. That part is easy. Send a request, pass some messages, describe a few functions and wait for the model to return a tool call. The problem starts a

#Software Development 11 min en open