Skip to content

Releases

PhaseOps v0.2.0 - onboarding, and detection that actually reads your dependencies

Choose a tag to compare

@xavieremerson xavieremerson released this 19 Jul 14:30

This release came out of a simple exercise: install 0.1.0 from PyPI into a
clean environment, and walk through it exactly as a new user would. Several
things broke. Then I audited the docs against what the code actually does,
and found more.

If you are on 0.1.0, this is worth upgrading for.

pipx install --force "phaseops[mcp]"

Detection now reads your dependencies

This is the big one. Most bundled adapters declared dep_key signals, and
detection silently ignored every one of them. So any stack identified mainly
by what it depends on got the wrong adapter, confidently:

┌───────────────────────────────┬───────────────┬────────────────────┐
│         Your project          │    Before     │        Now         │
├───────────────────────────────┼───────────────┼────────────────────┤
│ Create React App              │ nodejs        │ react              │
├───────────────────────────────┼───────────────┼────────────────────┤
│ LangChain (no langgraph.json) │ python        │ langchain + python │
├───────────────────────────────┼───────────────┼────────────────────┤
│ Astro                         │ nodejs        │ astro              │
├───────────────────────────────┼───────────────┼────────────────────┤
│ Express API                   │ nodejs (weak) │ nodejs (confident) │
└───────────────────────────────┴───────────────┴────────────────────┘

Dependencies are read from package.json (all four blocks),
pyproject.toml (PEP 621 and Poetry), requirements.txt, and
composer.json. Version specifiers and extras are handled, so
langchain[all]>=0.2 matches.

If PhaseOps picked the wrong adapter for you before, re-run
phaseops init --force and it will likely get it right now.

Fixes you will actually notice

phaseops init no longer dead-ends on ordinary projects. A plain Python
project with just a requirements.txt used to fail with "no adapter
exceeded the auto-detect threshold" and demand --adapter. A single
unopposed candidate is now accepted. Two genuine candidates still stop and
ask you.

phaseops serve tells you what is missing. Installing without the
[mcp] extra used to dump a raw ImportError. Since your AI client is what
launches the server, that surfaced as an unexplained connection failure with
no clue attached. It now names the extra and how to install it.

doctor catches that same case before it bites. New mcp.sdk_present
check. Previously doctor reported a perfectly healthy project on an install
where the server could not start at all.

Version reporting is consistent. The MCP handshake was advertising the
SDK's version as PhaseOps'. Both transports now report the package version.

Docs

Three new entry-point guides under docs/guides/start/, for people arriving
from different places: already using a coding agent daily, moving off a
no-code builder like Lovable or Replit, or new to coding agents entirely.

Getting Started also had a stale section telling you PhaseOps was not on
PyPI yet and to clone the repo. Fixed, and it now warns that macOS ships
Python 3.9, since pip's "No matching distribution found" reads as though the
package does not exist rather than as a version problem.

Security note

The HTTP transport has no authentication and takes its project root from a
client-supplied header. Nothing changed here and the 127.0.0.1 default is
still correct. It just was not documented, so it is now. If you bind it
anywhere reachable, put it behind an SSH tunnel or an authenticating proxy.

Full detail in CHANGELOG.md (https://github.com/agentxworks/phaseops/blob/main/CHANGELOG.md).

PhaseOps v0.1.0

Choose a tag to compare

@xavieremerson xavieremerson released this 17 Jul 20:31

PhaseOps v0.1.0, first public release 🎉

This is the first public cut of PhaseOps, a modular, ecosystem-agnostic
framework for agentic software development. It brings phase-based workflows,
human checkpoints, and resumable execution to AI-assisted work on any tech
stack.

The idea is simple: instead of letting an agent free-run, you move through
clear phases (ideate, decide, plan, then build one slice at a time) with a
human in the loop at each checkpoint. Decisions get locked once made, and you
can stop and pick up right where you left off.

What's inside

  • A read-only MCP engine (phaseops serve) over stdio or HTTP. The engine
    only reads. It never writes to disk, mutates state, or runs commands, so it
    is safe to point at any project.
  • 27 core tools plus 8 WordPress adapter tools, and you can turn any of
    them off per project with tools.disabled.
  • 7 bundled adapters: WordPress, Node.js, React, Next.js, Astro, Python,
    and LangChain. Adapters can extend each other, locally or from a remote
    source.
  • A full CLI: validate, init, scaffold, closeout, next,
    doctor, serve, sync, backlog, feedback, and version.
  • Client plugins for Claude Code, Cursor, and Codex, all generated from one
    source so they never drift apart.
  • Fail-soft where it should be. Observability like audit and feedback logs
    degrades quietly if something goes wrong, while anything load-bearing fails
    loudly and safely.

Getting started

pipx install phaseops           # the CLI, isolated
pipx install "phaseops[mcp]"    # add the MCP server

Or run it without installing anything:

uvx phaseops serve                                                       

Then phaseops init wires up your project and phaseops next shows you the
runbook.

Where to learn more

- The README walks through why PhaseOps exists and how the flow works, with a
diagram.
- docs/guides/philosophy.md covers when to reach for it, and when not to.
- docs/architecture/ has the full spec if you want the deep version.

Good to know

- Runs on Python 3.11, 3.12, and 3.13.                                   
- This is an early release (0.1.0), so expect rough edges. Issues and feedback
are very welcome.

MIT licensed. Part of the agentxworks (https://github.com/agentxworks) family.