agmx
Run AgentMatrix work on your own machine, under your own coding-agent subscription.
AgentMatrix is a coordination service for coding agents: it plans work, holds
the review gates, and decides what lands. agmx is the other half — a small
client that picks up the work the server hands out and executes it locally,
inside a throwaway git worktree of a repository you already have checked out.
Nothing about your machine travels to the server. The server dispatches a
project_id; your machine decides which directory that is.
Why it is separate
The control plane needs Postgres, Redis and a pile of orchestration code. A
runner does not. agmx depends on httpx and nothing else, so installing it
never asks you for a database URL or a shared secret.
$ pip list
agmx anyio certifi h11 httpcore httpx idna typing_extensions
Install
pipx install agmx
Requires Python 3.10+ and git on PATH.
Quickstart
# 1. Authenticate. Prompts for your password; never takes it as a flag.
agmx login --email you@example.com
# 2. Tell the runner where your checkouts live, then let it work.
agmx runner start --project agenticmatix=~/code/AgentMatrix
--project may be repeated. A project_id you have not registered is reported
back as failed rather than guessed at, so a run can never be executed against
the wrong tree.
Point at a different control plane with --server, or AGMX_SERVER.
How a run executes
- The runner leases one queued run:
{run_id, task_id, project_id, command, timeout_seconds}. No path, no repository URL. - It resolves
project_idagainst the checkouts you registered. - It creates a git worktree on
ct-run/<run_id>, branched from the current HEAD. - The command runs there. Output is streamed back in batches while it runs, not buffered until the end.
- On exit, changes are committed, the worktree is removed, and the branch is kept — so the commit stays reachable from your main checkout.
- The runner reports facts: exit code, base and head SHA, whether it timed out. It does not decide whether the run succeeded; that judgement stays on the server, with the review history.
A run that exceeds timeout_seconds has its whole process group terminated,
not just the process the runner spawned — coding agents spawn children.
Configuration
| Path | Mode | Contents |
|---|---|---|
~/.agmx/.credentials.json |
0600 |
login token |
~/.agmx/settings.json |
0644 |
server, email, runner_id |
Secrets are kept in a separate file from settings, and the credentials file is
created with its mode already set rather than being widened and then narrowed.
Set AGMX_CONFIG_DIR to move the directory.
Security notes
- The password is read from the terminal only. There is deliberately no
--passwordflag: it would survive in shell history and inpsoutput. GIT_DIRandGIT_WORK_TREEare stripped from the environment handed to the command, so an agent's git calls cannot reach outside the worktree.- The default server is HTTPS.
agmx loginsends a password in the request body; plain HTTP would hand it to anyone on the path.
Development
git clone https://github.com/nothan-agentic/AgentMatrix
cd AgentMatrix/runner
pip install -e .
python -m pytest tests -q
License
MIT — see LICENSE.
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 agmx-0.1.1.tar.gz.
File metadata
- Download URL: agmx-0.1.1.tar.gz
- Upload date:
- Size: 22.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd85fde76ffa3d29594ca813641bd156f331fcaae6553eee510f4659472796ee
|
|
| MD5 |
fe477bc5bada61a9338d37a8060055a1
|
|
| BLAKE2b-256 |
edf00b5d7351ff9327f6feb4817987dc5a1c1bc223c5f566619f5dbb63143266
|
File details
Details for the file agmx-0.1.1-py3-none-any.whl.
File metadata
- Download URL: agmx-0.1.1-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf486a1b8c67885123c256aa04ca8e138c91f99c223d7a68c746b3b9d64bc2f5
|
|
| MD5 |
29b5c28c995b87b4af378187f9b76cfb
|
|
| BLAKE2b-256 |
c5c41d980d78c26e91afb65fef7dd3aa67aac0c4e50bcac2bcc5252857c7c3cc
|