Autonomous AI software project manager
Project description
Romyq
Autonomous AI software project manager.
Write a mission. Romyq builds it.
cd myproject
romyq attach
romyq run
How it works
- You write a free-form mission in
mission.md - Romyq reads the mission and generates the next coding task (via DeepSeek)
- Claude Code implements the task and commits the result
- Romyq validates the commit, records the result, and repeats
- The loop continues until the mission is complete
The repository is the source of truth. Every completed task produces a git commit.
Requirements
- Python 3.11+
- Claude Code CLI installed and authenticated (
claude) - DeepSeek API key
- git
Installation
pip install romyq
Quick start
Existing repository
cd myproject
echo "DEEPSEEK_API_KEY=your-key-here" > .env
romyq attach # set up .romyq/ and create mission.md
echo "Add a REST API for user management." > mission.md
romyq run # start the loop
New project from scratch
mkdir myproject && cd myproject
echo "DEEPSEEK_API_KEY=your-key-here" > .env
romyq init # creates workspace/ subdirectory
echo "Build a CLI tool that converts Markdown to HTML." > mission.md
romyq run workspace # run on the workspace/ subdirectory
Safety: Romyq will not restore (reset) the working tree if you have uncommitted changes when a task starts. Commit or stash any in-progress work before running for full safety guarantees.
Commands
romyq attach [path]
Attaches Romyq to an existing repository. Safe to run on any project — never modifies application code, never creates commits, never initializes git.
cd myproject
romyq attach # attaches to current directory
romyq attach /path/to/repo
What it does:
- Creates
{repo}/.romyq/for state storage - Adds
.romyq/to the repo's.gitignore - Creates
mission.mdin the current directory if absent
romyq info [path]
Shows what Romyq detects about a repository before starting a run.
romyq info # inspect current directory
romyq info /path/to/repo
Example output:
Language: python
Frameworks: FastAPI, SQLAlchemy
Test suite: pytest (dirs: tests/ | config: pytest.ini)
Build: make dev
make test
pytest
Branch: main
Mission: ✓ found
Tasks: 0 completed (status: running)
State dir: ✓ /path/to/repo/.romyq/
romyq note "message" [workspace]
Appends a steering note for the AI manager. Notes are injected into every task generation call as highest-priority guidance, so they take effect immediately on the next task without restarting.
romyq note "Focus on admin UX."
romyq note "Ignore mobile support."
romyq note "Prioritize scanner stability."
Notes accumulate in {workspace}/.romyq/notes.md and persist across runs.
They do not overwrite mission.md. View current notes with romyq info.
romyq init [workspace]
Initializes a new project. Creates mission.md if it does not exist and
bootstraps the workspace as a git repository.
romyq init # uses workspace/ subdirectory
romyq init /path/to/repo # uses an existing directory
romyq run [workspace]
Starts the autonomous development loop. Reads mission.md from the current
directory. Defaults to the current directory; override with a path or
$ROMYQ_WORKSPACE.
By default Romyq runs indefinitely. When the mission is considered complete it
logs the result and continues generating improvements (tests, docs, performance,
reliability, UX). Pass --until-complete to stop instead.
romyq run # current directory, continuous
romyq run --until-complete # stop when mission is complete
romyq run /path/to/repo # explicit path
romyq run workspace # workspace/ subdirectory (romyq init default)
ROMYQ_WORKSPACE=/path/to/repo romyq run
romyq status [workspace]
Shows the current run state: tasks completed, last commit, heartbeat.
romyq status
romyq status /path/to/repo
romyq logs [workspace] [--last N]
Shows recent task history. Defaults to the last 10 entries.
romyq logs
romyq logs --last 25
romyq logs /path/to/repo --last 20
romyq doctor [workspace]
Checks that all prerequisites are in place before running.
romyq doctor
romyq doctor /path/to/repo
Example output:
romyq doctor
✓ DEEPSEEK_API_KEY (set)
✓ claude CLI (/usr/local/bin/claude)
✓ git (/usr/bin/git)
✓ mission.md (found)
✓ workspace (workspace/) (exists)
✓ workspace is a git repo (yes)
All checks passed. Ready to run: romyq run
Configuration
| Variable | Default | Description |
|---|---|---|
DEEPSEEK_API_KEY |
— | Required. DeepSeek API key. |
ROMYQ_WORKSPACE |
current directory | Workspace directory path override. |
ROMYQ_CLAUDE_TIMEOUT |
1800 |
Claude subprocess timeout in seconds (default: 30 minutes). |
Place these in a .env file in the directory where you run romyq.
State files
Romyq writes mission.md to the current directory and stores all runtime
state inside the managed repository under .romyq/:
| Location | Purpose |
|---|---|
mission.md |
Your mission — you write this, lives where you run romyq |
<workspace>/.romyq/state.json |
Current run state |
<workspace>/.romyq/state.md |
Human-readable summary of the last task |
<workspace>/.romyq/history.json |
Full task history |
<workspace>/.romyq/findings.json |
Audit findings |
.romyq/ is automatically added to the workspace's .gitignore so it does
not pollute the repository's commit history.
Each managed repository has its own independent .romyq/ directory, so
multiple repositories can be managed simultaneously with separate state.
Working with state from any directory
romyq status and romyq logs accept a workspace argument (or read
$ROMYQ_WORKSPACE) so you can inspect state without being in the romyq
launch directory:
romyq status /path/to/repo
romyq logs /path/to/repo --last 20
ROMYQ_WORKSPACE=/path/to/repo romyq status
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file romyq-0.1.0.tar.gz.
File metadata
- Download URL: romyq-0.1.0.tar.gz
- Upload date:
- Size: 26.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ebfcfa4d1912998cfeba308a143fcd4562a3732f17be05514022a5c7f4872489
|
|
| MD5 |
30a30ea20b96b8e23ea69bc264460653
|
|
| BLAKE2b-256 |
6cf70fcd03b6d016f3918601773547601598c486e820b368aec7b4b3a717496f
|
File details
Details for the file romyq-0.1.0-py3-none-any.whl.
File metadata
- Download URL: romyq-0.1.0-py3-none-any.whl
- Upload date:
- Size: 28.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9b4f05d6f8213024b435ae76840bf3855324ff8e271c01211d8881e955e3a67
|
|
| MD5 |
bda1ea9511d04555dec65ddb19bd8b50
|
|
| BLAKE2b-256 |
86b6e90461f6a6391fae908a223e01aae8ff5d7255e692d0e1539dfa487d3be5
|