knowop🔌
One command to log in to KnowOp, connect your computer, and run your agents and GPU jobs where Chat can reach them.
Quick Start
# Mac:
# # Required for quick install.
# brew install uv
# Ubuntu/Debian:
# # Required for quick install.
# sudo apt-get install -y curl
# curl -LsSf https://astral.sh/uv/install.sh | sh
uvx knowop connect
uvx knowop connect runs knowop without installing it. To keep the command for
every day, install it:
uv tool install knowop
# Alternatively: python -m pip install knowop
Use
knowop connect # this computer: log in, enroll, serve its terminal and commands
knowop run claude # Claude Code in this folder, recorded, reachable from Chat
knowop run codex # the same for Codex
knowop job submit -- python train.py # a job on a GPU node, from this repository
knowop job submit --machine lab-box -- python train.py # on your computer lab-box
knowop status # server, account, your machines and the runs live on each
knowop disconnect # stop this computer's runs, then disconnect it on the server
A run reaches Chat with your account's key, not through knowop connect: it keeps
running after Ctrl-C ends the connect, which then names the runs it leaves. The web
app shows a machine connected while one of its runs is live. knowop run stop --all
stops the runs on this computer; knowop disconnect also revokes its connect and
stops every run of yours that names it, wherever it runs.
A job can also run on a computer of your own: start it with knowop connect --jobs
there, push your branch, and knowop job submit --machine NAME -- CMD from the
repository. That computer fetches the pushed commit into a fresh worktree and runs CMD
under a memory cap (a systemd-run --user scope), only for your account; its log and
results come back through the server, which keeps none of them.
A job runs with the full authority of the Unix user running knowop connect --jobs,
including access to that user's files, credentials and inherited environment. The
worktree and memory cap do not restrict that authority. GPU selection through
CUDA_VISIBLE_DEVICES is cooperative: submitted code can change it. Run untrusted
code under a separate Unix identity or external isolation that enforces the access
restrictions you need.
knowop connect prints a code; approve it in your browser, on any device. That one
approval logs you in, enrolls this computer and confirms it. Until you press Ctrl-C,
the computer's terminal opens in the web app, and it runs the commands the server's
assistant sends; --no-exec serves the terminal only. knowop connect acme does the
same on https://acme.knowop.ai. A computer with no browser, such as a box, pipes an
enrollment token to knowop connect instead, and joins with no login.
Plain knowop login logs in to https://alpha.knowop.ai; knowop login acme to
https://acme.knowop.ai, and knowop login URL to any server. Use it on a computer
you will not connect, where only your agents work. A later knowop connect there
enrolls the computer with that login's key, and it waits until you confirm it in the
web app. A first knowop run logs in too.
Commands
| Command | Does |
|---|---|
knowop login [ORG|URL] |
Logs in with a code approved in a browser and saves the key. |
knowop connect [ORG|URL] [--name N] [--no-exec] [--sandbox] [--jobs [--job-results-max SIZE]] |
Logs in first unless knowop is logged in to that server or a token is piped in, enrolling and confirming this computer in the same approval; then serves its terminal, and the assistant's commands unless --no-exec, until Ctrl-C. No server means knowop's own, else https://alpha.knowop.ai. --sandbox declares a disposable computer where agents act without asking. --jobs also runs your account's knowop job submit --machine jobs, each under a memory cap; it needs systemd's user manager. |
knowop status |
Prints knowop's profile, the server, your account and role, your computers with whether each is online and the runs live on each, and the runs here that name no machine of yours. Exits 1 when not logged in. |
knowop disconnect [NAME] |
Stops this computer's runs when NAME is this computer (the default), then disconnects NAME on the server: its connect is revoked and every run of yours that names it stops. knowop connect joins it again with no login. |
knowop logout |
Revokes the key on the server and deletes the saved login. |
knowop run claude|codex [ARGS] |
Runs Claude Code or Codex in this folder, recorded and reachable from Chat. Says to run knowop connect when this computer is not connected. |
knowop run attach|ls|log|send|stop NAME |
Reaches a run started with --detach. knowop run stop --all stops every one on this computer. |
knowop run claude|codex resume SESSION |
Re-enters a stored session. |
knowop job submit|logs|results ... |
Runs a job on a GPU node from this repository, or with --machine NAME on a computer of yours, and reads its log and results. |
knowop job status [JOB]|cancel JOB|secrets|secret NAME set|del |
Lists your jobs or shows one, stops one, and keeps the secrets a job may use. |
knowop machine [NAME ...] |
Lists, shows, sets, labels and deletes the machines campaigns may run on. |
knowop canvas [CANVAS_UUID] [show TYPE|navigate ROUTE|highlight UUID,...|hide ID|KEY to VALUE ...] |
Reads and changes a canvas with the grammar of trax canvas. In a run that knowop run placed on a canvas, $TRAX_CANVAS names it, so an agent drives the person's canvas with knowop alone. |
knowop --version |
Prints the version; unknown from a checkout. |
Every command takes --help; knowop run claude --help and knowop job submit --help show the runner's own.
knowop keeps one login and uses it for every command. It saves the key as a trax
profile, and trax's own current profile stays as it was: knowop never acts on a
server it did not log in to.
Direct terminal link
Every install includes aiortc for a direct link between the browser and this computer. Terminals use the server relay when a direct link is unavailable.
Layout
| Package | Holds |
|---|---|
cli.py |
The knowop command. |
shell/ |
The machine host knowop connect runs: terminals, the assistant's commands, and with --jobs your jobs (job_host.py). |
agent/ |
The agent runner knowop run hands to. Its __main__.py and codex.py run it by module, on trax's connection, for unattended plumbing. |
jobs/ |
The job runner knowop job hands to. |
machines.py |
The machine registry knowop machine reads and writes. |
canvas.py |
knowop canvas: trax's canvas command, named as knowop's. |
skills/ |
Each package's instructions for agents. |
knowop calls the server through trackinizer's Client, as trax does, and never runs
trax. trax machine and trax job say they moved out of trax.
Development
uv sync --all-groups
uv run pytest
See also
Sibling projects in the rekursiv-ai family:
- trackinizer — Centralized agent database for tracking inquiries, work, and the evidence behind conclusions; knowop's
traxand its client come from it. - sagent — The self-mutating multi-provider coding-agent CLI and typed Python library.
- wesearch — Web search, resilient page fetch, and scholarly-paper lookup without a browser stack.
Metadata
Release files for knowop 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| knowop-0.1.4.tar.gz | 702.7 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| knowop-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 978.6 kB
Release files / knowop-0.1.4.tar.gz
| Download URL | knowop-0.1.4.tar.gz |
|---|---|
| Size | 702.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c84a0527a96cd96663c027d4cf65f1a1fcc19fbfff22f20636c0e873cb6b6fdb
|
|
BLAKE2b-256 checksum How to use checksums |
16aaf2203a52a6497591329673ff61812cd040d0709b34d0cb7924dd04df5f10
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.
Transparency logRelease files / knowop-0.1.4-py3-none-any.whl
| Download URL | knowop-0.1.4-py3-none-any.whl |
|---|---|
| Size | 275.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cf598b71cd1f2d4eb6cc2d1e86e5baa489e4db6943805ea4d54f78618a257a0b
|
|
BLAKE2b-256 checksum How to use checksums |
852540d14a79655d62268d0b28f02aaf3c1a9114d66093777076fa989e6922df
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.
Transparency logSecurity for knowop 0.1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for knowop-0.1.4.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 25, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.