Stefan Preu

or just say “proy”, rhymes with joy. based in austria.

Agentic systems architectCreator of PM CLI

i build tools and systems that help humans and AI agents work with durable context.

my main project is PM CLI: open-source project management that keeps goals, decisions and evidence in the repository, where people and agents can both find them.

what i do

the whole problem, from the first conversation to the handover.

  1. before agents

    client projects, end to end.

    talking to the people involved, building the full stack, running the infrastructure and handing it over.

  2. now

    context for agents.

    i design and maintain PM CLI and agent-friendly CLIs for real services, and i run all of my own work on PM CLI.

  3. next

    agentic systems, end to end.

    custom harnesses, memory, workflows that need to be deterministic, and getting teams ready to work with agents.

my role in PM CLI

flagship · open source · MIT

project management is a context problem.

every agent session starts with an empty head. a task title alone doesn’t say why the work exists, what was already decided, what was ruled out, or how anyone will know it’s done.

package
@unbrained/pm-cli
version
2026.10.26 ·
source
github.com/unbraind/pm-cli
website
pm-cli.unbrained.dev
how a handoff worksa recorded run of the case-study script with pm 2026.10.18: two sessions that share only the repository. a replay, not a live agent.
  1. session 1

    writes it down

    • goalCSV export for monthly reports
    • decisionStream CSV rows instead of building files in memory
    • taskStreaming CSV endpointin progress
    • taskDownload button on the reports pageblocked

    plus a progress note and a linked file. then the session ends, and its memory with it.

  2. the repository

    keeps it as files

    • epics/rpt-l1pf.toon
    • decisions/rpt-gfhy.toon
    • tasks/rpt-5epo.toon
    • tasks/rpt-yzm4.toon

    plain text in .agents/pm, next to the code, each with an append-only history.

  3. session 2

    starts cold and asks

    pm context --for orient
    • goalCSV export for monthly reports
    • decisionStream CSV rows instead of building files in memory
    • taskStreaming CSV endpointin progress
    • taskDownload button on the reports pageblocked

    plus session 1’s last three actions, in 988 of 3,000 estimated tokens.

show the recorded transcript
● a fresh session picks up the threadpm 2026.10.18
# session 2: a fresh agent, nothing carried overpm context --for orient --limit 5summary:  …  in_progress: 1  blocked: 1  …hierarchy[1]:  - id: rpt-l1pf    title: CSV export for monthly reports  …    children[3]{id,title,type,status,children_total,children_closed}:      rpt-5epo,Streaming CSV endpoint,Task,in_progress,0,0      rpt-gfhy,Stream CSV rows instead of building files in memory,Decision,open,0,0      rpt-yzm4,Download button on the reports page,Task,blocked,0,0activity[3]{id,op,ts,author}:  rpt-5epo,release,"2026-10-18T19:03:01.720Z",session-1  rpt-5epo,files_add,"2026-10-18T19:02:56.447Z",session-1  rpt-5epo,comment_add,"2026-10-18T19:02:51.788Z",session-1blockers[1]{id,title,blocked_by,blocked_by_title,blocked_by_status}:  rpt-yzm4,Download button on the reports page,rpt-5epo,Streaming CSV endpoint,in_progress  …  token_budget: 3000  …  estimated_tokens: 988  within_budget: true
real output from a synthetic demo repo, trimmed where marked “…”. reproduce it with the case-study script.

selected work

practical interfaces to real services.

small command-line tools that let agents and people operate real services through predictable commands.

all public projects

GitHub + npm, checked

approach

how i work

five rules i hold my work to, my own tools included.

see them in PM CLI’s decisions
  • room to explore, walls around the effects

    agents get as much freedom as practical to investigate. the boundaries sit at the system level: sandboxes, access, execution, and anything with consequences.

  • primitives over features

    you should be able to build what you need from the parts, without waiting for me to ship a dedicated feature or adopting a workflow you didn’t ask for.

  • keep the reasoning, not just the result

    decisions, rejected alternatives and non-goals are part of the work. code gets replaced; the why should survive it.

  • usable without me

    your data, your tools, your call. anything i build should be easy to adapt, replace or walk away from, my own tools included.

  • say what’s proven

    acceptance criteria describe the outcome; evidence shows it happened. where i’m still exploring, i say so.

sayhello.

tell me what you’re working on.

rather read code first?github.com/unbraind