|
1 | 1 | # Remyx AI command-line client |
2 | 2 |
|
3 | | -## Installation |
4 | | -To install the Remyx AI CLI in Python virtual environment, run: |
| 3 | +CLI for the Remyx AI platform. Install [Outrider](https://github.com/remyxai/outrider) on a repo, manage Research Interests, browse Gemini-ranked paper recommendations from GitRank, and search for research assets — all from the terminal. |
5 | 4 |
|
6 | | -``` |
7 | | -pip install remyxai |
8 | | -``` |
9 | | - |
10 | | -## Token authentication |
11 | | -Remyx AI API requires authentication token, which can be obtained on this page: https://engine.remyx.ai/account |
12 | | - |
13 | | -Provide api key to the CLI through an environment variable `REMYXAI_API_KEY`. |
14 | | -``` |
15 | | -export REMYXAI_API_KEY=<your-key-here> |
16 | | -``` |
17 | | - |
18 | | -## Usage |
19 | | -Quickly get started with the following examples: |
20 | | - |
21 | | -### Model |
22 | | -List all models: |
23 | | -* cli command: |
24 | | -```bash |
25 | | -$ remyxai model list |
26 | | -``` |
27 | | -* python command: |
28 | | -```python |
29 | | -from remyxai.api import list_models |
30 | | -print(list_models()) |
31 | | -``` |
32 | | - |
33 | | -Get the summary of a model: |
34 | | -* cli command: |
35 | | -```bash |
36 | | -$ remyxai model summarize --model_name=<your-model-name> |
37 | | -``` |
38 | | -* python command: |
39 | | -```python |
40 | | -from remyxai.api import get_model_summary |
41 | | -print(get_model_summary(model_name)) |
42 | | -``` |
43 | | - |
44 | | -Delete a model by name: |
45 | | -* cli command: |
46 | | -```bash |
47 | | -$ remyxai model delete --model_name=<your-model-name> |
48 | | -``` |
49 | | -* python command: |
50 | | -```python |
51 | | -from remyxai.api import delete_model |
52 | | - |
53 | | -model_name = "<your-model-name>" |
54 | | -print(delete_model(model_name)) |
55 | | -``` |
56 | | - |
57 | | -Download and convert a model: |
58 | | -* cli command: |
59 | | -```bash |
60 | | -# possible model formats are "blob", "onnx", or "tflite" |
61 | | -$ remyxai model download --model_name=<your-model-name> --model_format="onnx" |
62 | | -``` |
63 | | -* python command: |
64 | | -```python |
65 | | -from remyxai.api import download_model |
66 | | - |
67 | | -model_name = "<your-model-name>" |
68 | | -model_format = "onnx" |
69 | | -print(download_model(model_name, model_format)) |
70 | | -``` |
71 | | - |
72 | | -### Tasks |
73 | | -Train an image classifier: |
74 | | -* cli command: |
75 | | -```bash |
76 | | -$ remyxai classify --model_name=<your-model-name> --labels="comma,separated,labels" --model_size=<int between 1-5> |
77 | | -``` |
78 | | - |
79 | | -add the optional `--hf_dataset` if you want to train with your own image dataset on 🤗. [See the docs](https://huggingface.co/docs/datasets/v2.14.5/image_dataset#imagefolder) for more details |
80 | | - |
81 | | -* python command: |
82 | | -```python |
83 | | -from remyxai.api import train_classifier |
84 | | - |
85 | | -model_name = "<your-model-name>" |
86 | | -labels = ["comma", "separated", "labels"] |
87 | | -model_size = 3 # use 1 for microcontrollers |
88 | | - |
89 | | -# Optional HF dataset |
90 | | -hf_dataset = "your/hf-dataset" |
91 | | - |
92 | | -print(train_classifier(model_name, labels, model_size, hf_dataset)) |
93 | | -``` |
94 | | - |
95 | | -Train an object detector: |
96 | | -* cli command: |
97 | | -```bash |
98 | | -$ remyxai detect --model_name=<your-model-name> --labels="comma,separated,labels" --model_size=<int between 1-5> |
99 | | -``` |
100 | | - |
101 | | -add the optional `--hf_dataset` if you want to train with your own image dataset on 🤗. [See the docs](https://huggingface.co/docs/datasets/v2.14.5/image_dataset#object-detection) for more details |
102 | | - |
103 | | -* python command: |
104 | | -```python |
105 | | -from remyxai.api import train_detector |
106 | | - |
107 | | -model_name = "<your-model-name>" |
108 | | -labels = ["comma", "separated", "labels"] |
109 | | -model_size = 3 |
110 | | - |
111 | | -# Optional HF dataset |
112 | | -hf_dataset = "your/hf-dataset" |
113 | | -print(train_detector(model_name, labels, model_size, hf_dataset)) |
114 | | -``` |
| 5 | +## Install |
115 | 6 |
|
116 | | -Train a text generator: |
117 | | -* cli command: |
118 | 7 | ```bash |
119 | | -$ remyxai generate --model_name=<your-model-name> --hf_dataset=<your/hf-dataset> |
| 8 | +pip install remyxai |
120 | 9 | ``` |
121 | 10 |
|
122 | | -Your Huggingface dataset should have two columns with naming conventions like: |
123 | | -* "question", "response" |
124 | | -* "question", "answer" |
125 | | -* "input", "output" |
126 | | -* "prompt", "response" |
127 | | - |
128 | | -* python command: |
129 | | -```python |
130 | | -from remyxai.api import train_generator |
| 11 | +## Authenticate |
131 | 12 |
|
132 | | -model_name = "<your-model-name>" |
133 | | -hf_dataset = "your/hf-dataset" |
134 | | - |
135 | | -print(train_generator(model_name, hf_dataset)) |
136 | | -``` |
137 | | -### Deploy |
138 | | -Launch a [Triton Server](https://developer.nvidia.com/triton-inference-server) containerized deployment for your model. Currently supported for `generate` models. More model types support coming soon! |
| 13 | +Get an API key from [engine.remyx.ai/account](https://engine.remyx.ai/account) and export it: |
139 | 14 |
|
140 | | -#### System requirements |
141 | | -Please make sure you have Docker, Docker Compose, and the NVIDIA Container Toolkit are installed. |
142 | | -* [Docker installation](https://docs.docker.com/engine/install/ubuntu/) |
143 | | -* [Docker Compose installation](https://docs.docker.com/compose/install/linux/) |
144 | | -* [NVIDIA Container Toolkit installation](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html) |
145 | | - |
146 | | -Deploy a model with: |
147 | | -* cli command: |
148 | 15 | ```bash |
149 | | -# Bring up |
150 | | -remyxai deploy --model_name="<your-model-name>" |
151 | | - |
152 | | -# Bring down |
153 | | -remyxai deploy down --model_name="<your-model-name>" |
| 16 | +export REMYXAI_API_KEY=<your-key> |
154 | 17 | ``` |
155 | 18 |
|
156 | | -* python command: |
157 | | -```python |
158 | | -from remyxai.api import deploy_model |
| 19 | +All commands read this environment variable. |
159 | 20 |
|
160 | | -model_name = "<your-model-name>" |
| 21 | +## Quickstart |
161 | 22 |
|
162 | | -deploy_model(model_name, action='up') # action can be "up" or "down" |
163 | | -``` |
| 23 | +**See today's paper recommendations** |
164 | 24 |
|
165 | | -And you can run inference with: |
166 | | -* cli command: |
167 | 25 | ```bash |
168 | | -remyxai infer --model_name="<your-model-name>" --prompt="Your prompt here" |
| 26 | +remyxai papers digest |
169 | 27 | ``` |
170 | 28 |
|
171 | | -* python command: |
172 | | -```python |
173 | | -from remyxai.api import run_inference |
174 | | - |
175 | | -model_name = "<your-model-name>" |
176 | | -prompt="Your prompt here" |
177 | | - |
178 | | -result, time_elapsed = run_inference(model_name, prompt, server_url="localhost:8000", model_version="1") |
179 | | -print(result) |
180 | | -``` |
181 | | - |
182 | | -### Outrider — weekly arXiv → draft PR for your repo |
183 | | - |
184 | | -[Outrider](https://github.com/remyxai/outrider) is a GitHub Action that, on a weekly schedule, finds the most implementable recent paper for your repository and opens a draft PR wiring it into a real call site. `remyxai outrider` sets it up for you. |
185 | | - |
186 | | -There are two ways to install it — both end with the same Action running in your repo; they differ in **who provisions it**: |
| 29 | +Shows recommended papers grouped by Research Interest. Use `remyxai papers list --interest <name-or-uuid>` for the flat view. |
187 | 30 |
|
188 | | -| | `outrider init` | `outrider setup-local` | |
189 | | -|---|---|---| |
190 | | -| **Best for** | Most users | Teams that can't grant a third-party GitHub App yet (e.g. a pending security review) | |
191 | | -| **How it works** | The **Remyx GitHub App** provisions it server-side; PRs are authored by `remyx-ai[bot]` | The CLI uses **your own `gh`** to provision it; PRs authored by `github-actions[bot]` | |
192 | | -| **You provide** | The Remyx App installed on the repo (the command links you to it) | An authenticated `gh` with admin on the repo | |
193 | | - |
194 | | -Either way you'll need a **Remyx API key** (from engine.remyx.ai → Settings) and an **Anthropic API key** (from console.anthropic.com). Set the Remyx key once: |
195 | | - |
196 | | -```bash |
197 | | -export REMYXAI_API_KEY=... # from engine.remyx.ai → Settings |
198 | | -``` |
199 | | - |
200 | | -#### Option A — `outrider init` (via the Remyx GitHub App) — recommended |
| 31 | +**Create a Research Interest** |
201 | 32 |
|
202 | 33 | ```bash |
203 | | -# Set up on a repo, auto-creating a research interest from it: |
204 | | -$ remyxai outrider init --repo owner/name --auto-interest |
| 34 | +# Free-form context |
| 35 | +remyxai interests create \ |
| 36 | + --name "LLM Efficiency" \ |
| 37 | + --context "Quantization, speculative decoding, KV cache compression" |
205 | 38 |
|
206 | | -# …or use an existing research interest (UUID from engine.remyx.ai): |
207 | | -$ remyxai outrider init --repo owner/name --interest <uuid> |
| 39 | +# Or seed from a GitHub repo (auto-extracts context) |
| 40 | +remyxai interests create --context "https://github.com/your-org/your-repo" |
208 | 41 | ``` |
209 | 42 |
|
210 | | -If the Remyx App isn't installed on the repo yet, the command prints an install link and waits. Then the engine provisions the workflow, repo secrets, and a setup PR, and — in the default `auto` mode — merges it and starts the first run. Connect your Anthropic key once on the engine's Integrations page, or pass `--anthropic-key` (or set `ANTHROPIC_API_KEY`) and the CLI connects it for you. |
| 43 | +The recommendation pipeline matches new arXiv papers to your interests daily. First run takes 40-120s to populate the pool; subsequent runs are instant. |
211 | 44 |
|
212 | | -`--mode`: `auto` (default — set it up and start the first run), `review` (open the setup PR for you to merge), `off` (just create the research interest). |
213 | | - |
214 | | -#### Option B — `outrider setup-local` (no GitHub App) |
215 | | - |
216 | | -For teams that can't install a third-party App yet. The CLI uses your own authenticated `gh` to do everything — nothing new to security-review. |
| 45 | +**Install Outrider on a repo** |
217 | 46 |
|
218 | 47 | ```bash |
219 | | -$ export ANTHROPIC_API_KEY=... # stored as a repo secret by the CLI |
220 | | - |
221 | | -$ remyxai outrider setup-local --repo owner/name --auto-interest |
| 48 | +remyxai outrider init --repo owner/name --auto-interest |
222 | 49 | ``` |
223 | 50 |
|
224 | | -Using your `gh` credentials, the CLI sets the `REMYX_API_KEY` + `ANTHROPIC_API_KEY` repo secrets, writes `.github/workflows/outrider.yml`, opens a setup PR, and — in `auto` mode — merges it and dispatches the first run. So the Action can open its recommendation PRs, the CLI enables the repo's *"Allow GitHub Actions to create and approve pull requests"* setting; the Action then uses the repo's built-in `GITHUB_TOKEN` (no GitHub token is stored as a secret — only `REMYX_API_KEY` and `ANTHROPIC_API_KEY`). |
225 | | - |
226 | | -Requires `gh` authenticated (`gh auth login`, or `$GITHUB_TOKEN` with `repo` + `workflow` scopes) and admin on the target repo. |
| 51 | +Drives the Remyx engine to install [Outrider](https://github.com/remyxai/outrider) on the target repo via the Remyx GitHub App: writes the workflow, sets the repo secrets, and opens a bot-authored setup PR. Your local git isn't touched. Requires `REMYXAI_API_KEY` and an Anthropic key for Claude Code (`--anthropic-key` or `ANTHROPIC_API_KEY`). |
227 | 52 |
|
228 | | -#### Common options |
| 53 | +If the Remyx GitHub App isn't installed on the target repo yet, the command surfaces the install link. |
229 | 54 |
|
230 | | -- `--repo owner/name` — target repo (or a GitHub URL); defaults to the current directory's git remote. |
231 | | -- `--interest <uuid>` / `--auto-interest` — use an existing research interest, or create one from the repo. |
232 | | -- `--mode auto|review` (`init` also has `off`) — how far to take setup. |
233 | | -- `--dry-run` — print the plan (and, for `setup-local`, the rendered workflow) and exit without making changes. |
234 | | -- `-y` / `--yes` — skip the confirmation prompt. |
| 55 | +## Command reference |
235 | 56 |
|
236 | | -Preview either path safely before committing to it: |
| 57 | +Run any command with `--help` for full flag listings and examples. |
237 | 58 |
|
238 | | -```bash |
239 | | -$ remyxai outrider setup-local --repo owner/name --auto-interest --dry-run |
240 | | -``` |
| 59 | +| Command | What it does | |
| 60 | +|---|---| |
| 61 | +| `remyxai papers digest` | Recommendations grouped by Research Interest | |
| 62 | +| `remyxai papers list` | Recommendations flat view (filter by interest, period, source type) | |
| 63 | +| `remyxai papers refresh [--wait]` | Trigger a fresh Gemini re-ranking | |
| 64 | +| `remyxai papers refresh-status <task_id>` | Poll a refresh task | |
| 65 | +| `remyxai interests list` | List your Research Interests | |
| 66 | +| `remyxai interests get <name-or-uuid>` | Show one interest | |
| 67 | +| `remyxai interests create` | Create a new interest | |
| 68 | +| `remyxai interests update <id>` | Edit name / context / daily count / active state | |
| 69 | +| `remyxai interests toggle <id>` | Flip active/inactive | |
| 70 | +| `remyxai interests delete <id>` | Remove an interest | |
| 71 | +| `remyxai outrider init` | Install Outrider on a GitHub repo via the Remyx App | |
| 72 | +| `remyxai search list` | List recently added research assets (papers + Docker images) | |
| 73 | +| `remyxai search info <arxiv-id>` | Asset details | |
| 74 | +| `remyxai list-models` | List available trained models on your account | |
| 75 | +| `remyxai summarize-model <name>` | Show a model's summary | |
| 76 | +| `remyxai deploy-model <name> <up\|down>` | Bring a containerized deployment up or down | |
| 77 | +| `remyxai dataset <action> [name]` | Manage datasets (`list`, `download`, `delete`) | |
241 | 78 |
|
242 | | -**A note on credentials:** with `setup-local`, your `REMYXAI_API_KEY` is stored as the repo's `REMYX_API_KEY` secret so the Action can fetch recommendations — anyone with write access to the repo's workflows can consume Remyx credits on that key, so use it on repos you control. With `outrider init`, the Remyx App provisions a scoped key for you. In both paths your Anthropic key is stored as a repo secret to run the agent. |
| 79 | +## Outrider install — what happens |
243 | 80 |
|
244 | | -### User |
| 81 | +`remyxai outrider init` calls the Remyx engine, which uses the **Remyx GitHub App** (`remyx-ai[bot]`) to: |
245 | 82 |
|
246 | | -Get user profile info: |
247 | | -* cli command: |
248 | | -```bash |
249 | | -$ remyxai user profile |
250 | | -``` |
251 | | -* python command: |
252 | | -```python |
253 | | -from remyxai.api import get_user_profile |
| 83 | +- Write the Outrider workflow to the target repo |
| 84 | +- Set the workflow's required Actions secrets |
| 85 | +- Open a bot-authored setup PR (and merge it automatically in `--mode auto`) |
| 86 | +- Fire the first Outrider run |
254 | 87 |
|
255 | | -print(get_user_profile()) |
256 | | -``` |
| 88 | +Your local git is not touched. The only credential you provide is your `REMYXAI_API_KEY`, which authorizes the engine to act on your behalf through the App — it is not copied into the target repo's secrets. Anthropic and GitHub credentials needed at workflow runtime are configured by the App. |
257 | 89 |
|
| 90 | +## Development |
258 | 91 |
|
259 | | -Get user credit/subscription info: |
260 | | -* cli command: |
261 | 92 | ```bash |
262 | | -$ remyxai user credits |
263 | | -``` |
264 | | -* python command: |
265 | | -```python |
266 | | -from remyxai.api import get_user_credits |
| 93 | +git clone https://github.com/remyxai/remyxai-cli |
| 94 | +cd remyxai-cli |
| 95 | +pip install -e . |
267 | 96 |
|
268 | | -print(get_user_credits()) |
| 97 | +# Run tests |
| 98 | +pytest tests/ |
269 | 99 | ``` |
270 | 100 |
|
271 | | -### Utils |
272 | | -Label images locally: |
273 | | -* cli command: |
274 | | -```bash |
275 | | -$ remyxai utils label --labels="comma,separated,labels" --image_dir="/path/to/image/dir" |
276 | | -``` |
| 101 | +Releases: tag a `v*` release on GitHub and the `publish.yml` workflow builds + uploads to PyPI via Trusted Publishing (no API token stored). |
277 | 102 |
|
278 | | -* python command: |
279 | | -```python |
280 | | -from remyxai.utils import labeler |
281 | | -model_name = "<your-model-name>" |
282 | | -labels = ["comma", "separated", "labels"] |
283 | | -image_dir = "/path/to/image/dir" |
284 | | -print(labeler(labels, image_dir, model_name)) |
285 | | -``` |
| 103 | +## Links |
286 | 104 |
|
| 105 | +- [Outrider](https://github.com/remyxai/outrider) — the GitHub Action this CLI installs |
| 106 | +- [engine.remyx.ai](https://engine.remyx.ai) — web app, account settings, API key |
| 107 | +- [Issues](https://github.com/remyxai/remyxai-cli/issues) — bug reports and feature requests |
0 commit comments