nepher-cli-test 0.2.4__tar.gz → 0.2.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/PKG-INFO +60 -46
  2. nepher_cli_test-0.2.6/README.test.md +182 -0
  3. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/pyproject.toml +3 -3
  4. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/__init__.py +1 -1
  5. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/commands/account.py +1 -1
  6. nepher_cli_test-0.2.4/README.md +0 -168
  7. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/.gitignore +0 -0
  8. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/__main__.py +0 -0
  9. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/cli.py +0 -0
  10. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/cli_test.py +0 -0
  11. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/commands/__init__.py +0 -0
  12. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/commands/envhub.py +0 -0
  13. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/commands/hackathon.py +0 -0
  14. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/commands/highlight.py +0 -0
  15. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/commands/simstore.py +0 -0
  16. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/commands/tournament.py +0 -0
  17. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/config.py +0 -0
  18. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/core/__init__.py +0 -0
  19. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/core/credentials.py +0 -0
  20. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/core/http.py +0 -0
  21. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/envhub/__init__.py +0 -0
  22. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/envhub/cache.py +0 -0
  23. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/envhub/config.py +0 -0
  24. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/py.typed +0 -0
  25. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/tournament/__init__.py +0 -0
  26. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/tournament/agent_check.py +0 -0
  27. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/tournament/api.py +0 -0
  28. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/tournament/packer.py +0 -0
  29. {nepher_cli_test-0.2.4 → nepher_cli_test-0.2.6}/src/nepher_cli/tournament/wallet.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nepher-cli-test
3
- Version: 0.2.4
3
+ Version: 0.2.6
4
4
  Summary: npcli-test — Nepher CLI for staging (api.staging.nepher.ai)
5
5
  Project-URL: Homepage, https://github.com/nepher-ai/nepher-cli
6
6
  Author: Nepher
@@ -26,76 +26,90 @@ Requires-Dist: pytest>=8.0.0; extra == 'dev'
26
26
  Requires-Dist: ruff>=0.4.0; extra == 'dev'
27
27
  Description-Content-Type: text/markdown
28
28
 
29
- # nepher-cli
29
+ # nepher-cli-test
30
30
 
31
- The unified CLI for [Nepher Robotics](https://nepher.ai) — accounts, hackathons, EnvHub, tournaments, and SimStore from a single tool.
31
+ **Staging build** of the [Nepher CLI](https://github.com/nepher-ai/nepher-cli) — same commands as production, but defaults to **staging APIs** (`api.staging.nepher.ai`).
32
+
33
+ For production, use [`nepher-cli`](https://pypi.org/project/nepher-cli/) and the `npcli` command instead.
32
34
 
33
35
  **Requires:** Python 3.10+
34
36
 
35
37
  ## Install
36
38
 
37
39
  ```bash
38
- pip install nepher-cli
40
+ pip install nepher-cli-test
39
41
  ```
40
42
 
41
- Both `npcli` and `nepher-cli` entry points are registered after install.
43
+ The `npcli-test` command is registered after install.
42
44
 
43
45
  ```bash
44
- npcli --version
45
- npcli --help
46
+ npcli-test --version
47
+ npcli-test --help
46
48
  ```
47
49
 
50
+ ## Staging API endpoints
51
+
52
+ | Service | Default base |
53
+ |---------|--------------|
54
+ | Account | `https://api.staging.nepher.ai/account` |
55
+ | Tournament | `https://api.staging.nepher.ai/tournament` |
56
+ | EnvHub | `https://api.staging.nepher.ai/envhub` |
57
+ | Hackathon | `https://api.staging.nepher.ai/hackathon` |
58
+ | SimStore | `https://simstore-staging.nepher.ai` |
59
+
60
+ Override with `NEPHER_API_URL` (and service-specific vars) if needed.
61
+
48
62
  ## Commands
49
63
 
50
64
  | Command / Group | Description |
51
65
  |-----------------|-------------|
52
- | `npcli login` | Log in with a Nepher API key |
53
- | `npcli whoami` | Show the currently authenticated user |
54
- | `npcli logout` | Clear locally stored credentials |
55
- | `npcli account` | API keys and coldkey registration |
56
- | `npcli tournament` | Browse tournaments, submit agents, leaderboards |
57
- | `npcli envhub` | Manage Isaac Lab environment bundles |
58
- | `npcli hackathon` | Browse and submit to hackathons |
59
- | `npcli simstore` | SimStore marketplace *(coming soon)* |
66
+ | `npcli-test login` | Log in with a Nepher API key |
67
+ | `npcli-test whoami` | Show the currently authenticated user |
68
+ | `npcli-test logout` | Clear locally stored credentials |
69
+ | `npcli-test account` | API keys and coldkey registration |
70
+ | `npcli-test tournament` | Browse tournaments, submit agents, leaderboards |
71
+ | `npcli-test envhub` | Manage Isaac Lab environment bundles |
72
+ | `npcli-test hackathon` | Browse and submit to hackathons |
73
+ | `npcli-test simstore` | SimStore marketplace *(coming soon)* |
60
74
 
61
75
  ## Quick Start
62
76
 
63
77
  ### Authenticate
64
78
 
65
79
  ```bash
66
- npcli login --api-key nepher_xxxxxxxx
67
- npcli whoami
68
- npcli logout
80
+ npcli-test login --api-key nepher_xxxxxxxx
81
+ npcli-test whoami
82
+ npcli-test logout
69
83
  ```
70
84
 
71
- Get your API key at [nepher.ai/account](https://nepher.ai/account) → Account → API Keys.
85
+ Get a staging API key at [staging.nepher.ai/account](https://staging.nepher.ai/account) → Account → API Keys.
72
86
  For CI/CD, set `NEPHER_API_KEY=nepher_xxxxxxxx` instead of logging in.
73
87
 
74
88
  ### Tournaments
75
89
 
76
90
  ```bash
77
- npcli tournament list
78
- npcli tournament list-active
79
- npcli tournament status <tournament_id>
80
- npcli tournament leaderboard <tournament_id>
91
+ npcli-test tournament list
92
+ npcli-test tournament list-active
93
+ npcli-test tournament status <tournament_id>
94
+ npcli-test tournament leaderboard <tournament_id>
81
95
  ```
82
96
 
83
97
  Check your agent directory structure (no extra dependencies needed):
84
98
 
85
99
  ```bash
86
- npcli tournament check --path ./my-agent
87
- npcli tournament check --path ./my-agent --verbose # also show recommended-file warnings
100
+ npcli-test tournament check --path ./my-agent
101
+ npcli-test tournament check --path ./my-agent --verbose # also show recommended-file warnings
88
102
  ```
89
103
 
90
104
  Submit an agent (requires `bittensor-wallet` for wallet signing):
91
105
 
92
106
  ```bash
93
107
  pip install bittensor-wallet
94
- # or: pip install "nepher-cli[bittensor]"
108
+ # or: pip install "nepher-cli-test[bittensor]"
95
109
  ```
96
110
 
97
111
  ```bash
98
- npcli tournament submit --path ./my-agent --wallet-name miner --wallet-hotkey default
112
+ npcli-test tournament submit --path ./my-agent --wallet-name miner --wallet-hotkey default
99
113
  ```
100
114
 
101
115
  Full options for `submit`:
@@ -113,20 +127,20 @@ Full options for `submit`:
113
127
  ### EnvHub
114
128
 
115
129
  ```bash
116
- npcli envhub list
117
- npcli envhub download <env_id>
118
- npcli envhub upload ./my-bundle --category navigation
119
- npcli envhub cache list
120
- npcli envhub cache info
121
- npcli envhub cache clear
130
+ npcli-test envhub list
131
+ npcli-test envhub download <env_id>
132
+ npcli-test envhub upload ./my-bundle --category navigation
133
+ npcli-test envhub cache list
134
+ npcli-test envhub cache info
135
+ npcli-test envhub cache clear
122
136
  ```
123
137
 
124
138
  ### Hackathons
125
139
 
126
140
  ```bash
127
- npcli hackathon list
141
+ npcli-test hackathon list
128
142
 
129
- npcli hackathon submit \
143
+ npcli-test hackathon submit \
130
144
  --title "My entry" \
131
145
  --submission ./my-project \
132
146
  --assets ./my-assets
@@ -147,9 +161,9 @@ Full options:
147
161
  ### API Keys
148
162
 
149
163
  ```bash
150
- npcli account api-keys list
151
- npcli account api-keys create --name "CI key" --platform hackertone
152
- npcli account api-keys revoke <key_id>
164
+ npcli-test account api-keys list
165
+ npcli-test account api-keys create --name "CI key" --platform hackathon
166
+ npcli-test account api-keys revoke <key_id>
153
167
  ```
154
168
 
155
169
  ### Coldkey Registration
@@ -158,7 +172,7 @@ Bind a Bittensor coldkey to your account (requires `bittensor-wallet`; `btcli` i
158
172
 
159
173
  ```bash
160
174
  pip install bittensor-wallet
161
- npcli account register-coldkey --wallet <wallet_name>
175
+ npcli-test account register-coldkey --wallet <wallet_name>
162
176
  ```
163
177
 
164
178
  Signing uses the local coldkey via `bittensor-wallet` and does not import `btcli`. If you still have a mixed Bittensor venv (`scalecodec` + `cyscale`), `register-coldkey` keeps working as long as `bittensor-wallet` is installed.
@@ -174,21 +188,21 @@ Signing uses the local coldkey via `bittensor-wallet` and does not import `btcli
174
188
 
175
189
  | Error | Fix |
176
190
  |-------|-----|
177
- | `npcli: command not found` | Ensure `pip install` succeeded and Python scripts dir is on `PATH` |
191
+ | `npcli-test: command not found` | Ensure `pip install` succeeded and Python scripts dir is on `PATH` |
178
192
  | `invalid api key format` | Key must start with `nepher_` |
179
193
  | `api key does not have hackathon access` | Enable Hackathon scope or use an unrestricted key |
180
- | `api key expired` | Run `npcli account api-keys create` |
194
+ | `api key expired` | Run `npcli-test account api-keys create` |
181
195
  | `Several hackathons are accepting submissions` | Re-run with `--hackathon-id` |
182
196
  | `bittensor-wallet not installed` | `pip install bittensor-wallet` (needed for `tournament submit` and `account register-coldkey`) |
183
- | `Not logged in` | `npcli login --api-key nepher_...` |
184
- | `Conflict detected: 'scalecodec' ... conflicts with 'cyscale'` | Leftover `scalecodec` after a Bittensor upgrade. Prefer `pip install bittensor-wallet` so npcli never needs `btcli`. To repair `btcli` itself: `pip uninstall scalecodec cyscale -y && pip install -U cyscale --force-reinstall` |
197
+ | `Not logged in` | `npcli-test login --api-key nepher_...` |
198
+ | `Conflict detected: 'scalecodec' ... conflicts with 'cyscale'` | Leftover `scalecodec` after a Bittensor upgrade. Prefer `pip install bittensor-wallet` so npcli-test never needs `btcli`. To repair `btcli` itself: `pip uninstall scalecodec cyscale -y && pip install -U cyscale --force-reinstall` |
185
199
 
186
200
  Run any command with `--help` for full flag details:
187
201
 
188
202
  ```bash
189
- npcli --help
190
- npcli hackathon submit --help
191
- npcli tournament submit --help
203
+ npcli-test --help
204
+ npcli-test hackathon submit --help
205
+ npcli-test tournament submit --help
192
206
  ```
193
207
 
194
208
  ## License
@@ -0,0 +1,182 @@
1
+ # nepher-cli-test
2
+
3
+ **Staging build** of the [Nepher CLI](https://github.com/nepher-ai/nepher-cli) — same commands as production, but defaults to **staging APIs** (`api.staging.nepher.ai`).
4
+
5
+ For production, use [`nepher-cli`](https://pypi.org/project/nepher-cli/) and the `npcli` command instead.
6
+
7
+ **Requires:** Python 3.10+
8
+
9
+ ## Install
10
+
11
+ ```bash
12
+ pip install nepher-cli-test
13
+ ```
14
+
15
+ The `npcli-test` command is registered after install.
16
+
17
+ ```bash
18
+ npcli-test --version
19
+ npcli-test --help
20
+ ```
21
+
22
+ ## Staging API endpoints
23
+
24
+ | Service | Default base |
25
+ |---------|--------------|
26
+ | Account | `https://api.staging.nepher.ai/account` |
27
+ | Tournament | `https://api.staging.nepher.ai/tournament` |
28
+ | EnvHub | `https://api.staging.nepher.ai/envhub` |
29
+ | Hackathon | `https://api.staging.nepher.ai/hackathon` |
30
+ | SimStore | `https://simstore-staging.nepher.ai` |
31
+
32
+ Override with `NEPHER_API_URL` (and service-specific vars) if needed.
33
+
34
+ ## Commands
35
+
36
+ | Command / Group | Description |
37
+ |-----------------|-------------|
38
+ | `npcli-test login` | Log in with a Nepher API key |
39
+ | `npcli-test whoami` | Show the currently authenticated user |
40
+ | `npcli-test logout` | Clear locally stored credentials |
41
+ | `npcli-test account` | API keys and coldkey registration |
42
+ | `npcli-test tournament` | Browse tournaments, submit agents, leaderboards |
43
+ | `npcli-test envhub` | Manage Isaac Lab environment bundles |
44
+ | `npcli-test hackathon` | Browse and submit to hackathons |
45
+ | `npcli-test simstore` | SimStore marketplace *(coming soon)* |
46
+
47
+ ## Quick Start
48
+
49
+ ### Authenticate
50
+
51
+ ```bash
52
+ npcli-test login --api-key nepher_xxxxxxxx
53
+ npcli-test whoami
54
+ npcli-test logout
55
+ ```
56
+
57
+ Get a staging API key at [staging.nepher.ai/account](https://staging.nepher.ai/account) → Account → API Keys.
58
+ For CI/CD, set `NEPHER_API_KEY=nepher_xxxxxxxx` instead of logging in.
59
+
60
+ ### Tournaments
61
+
62
+ ```bash
63
+ npcli-test tournament list
64
+ npcli-test tournament list-active
65
+ npcli-test tournament status <tournament_id>
66
+ npcli-test tournament leaderboard <tournament_id>
67
+ ```
68
+
69
+ Check your agent directory structure (no extra dependencies needed):
70
+
71
+ ```bash
72
+ npcli-test tournament check --path ./my-agent
73
+ npcli-test tournament check --path ./my-agent --verbose # also show recommended-file warnings
74
+ ```
75
+
76
+ Submit an agent (requires `bittensor-wallet` for wallet signing):
77
+
78
+ ```bash
79
+ pip install bittensor-wallet
80
+ # or: pip install "nepher-cli-test[bittensor]"
81
+ ```
82
+
83
+ ```bash
84
+ npcli-test tournament submit --path ./my-agent --wallet-name miner --wallet-hotkey default
85
+ ```
86
+
87
+ Full options for `submit`:
88
+
89
+ ```
90
+ --path <path> Agent directory
91
+ --wallet-name <str> Bittensor wallet name (default: miner)
92
+ --wallet-hotkey <str> Bittensor wallet hotkey (default: default)
93
+ --api-key <key> Nepher API key (falls back to stored credentials)
94
+ --tournament-id <id> Target tournament ID (required when multiple are active)
95
+ --api-url <url> Override tournament API URL
96
+ -v / --verbose Verbose output
97
+ ```
98
+
99
+ ### EnvHub
100
+
101
+ ```bash
102
+ npcli-test envhub list
103
+ npcli-test envhub download <env_id>
104
+ npcli-test envhub upload ./my-bundle --category navigation
105
+ npcli-test envhub cache list
106
+ npcli-test envhub cache info
107
+ npcli-test envhub cache clear
108
+ ```
109
+
110
+ ### Hackathons
111
+
112
+ ```bash
113
+ npcli-test hackathon list
114
+
115
+ npcli-test hackathon submit \
116
+ --title "My entry" \
117
+ --submission ./my-project \
118
+ --assets ./my-assets
119
+ ```
120
+
121
+ Full options:
122
+
123
+ ```
124
+ --hackathon-id <uuid> Required when multiple hackathons are open
125
+ --title <str> Entry title
126
+ --description <markdown> Entry description
127
+ --thumbnail <file> Cover image (JPEG, PNG, WebP, GIF)
128
+ --submission <path> Project folder or submission.zip
129
+ --assets <path> Assets folder or assets.zip (images, videos, PDFs)
130
+ --public-source Mark source as public
131
+ ```
132
+
133
+ ### API Keys
134
+
135
+ ```bash
136
+ npcli-test account api-keys list
137
+ npcli-test account api-keys create --name "CI key" --platform hackathon
138
+ npcli-test account api-keys revoke <key_id>
139
+ ```
140
+
141
+ ### Coldkey Registration
142
+
143
+ Bind a Bittensor coldkey to your account (requires `bittensor-wallet`; `btcli` is optional fallback):
144
+
145
+ ```bash
146
+ pip install bittensor-wallet
147
+ npcli-test account register-coldkey --wallet <wallet_name>
148
+ ```
149
+
150
+ Signing uses the local coldkey via `bittensor-wallet` and does not import `btcli`. If you still have a mixed Bittensor venv (`scalecodec` + `cyscale`), `register-coldkey` keeps working as long as `bittensor-wallet` is installed.
151
+
152
+ ## API Key Requirements
153
+
154
+ - Must start with `nepher_`
155
+ - Must be active and not expired
156
+ - `hackathon submit` requires **Hackathon** scope (or an unrestricted key)
157
+ - `tournament submit` requires **Tournament** scope (or an unrestricted key)
158
+
159
+ ## Troubleshooting
160
+
161
+ | Error | Fix |
162
+ |-------|-----|
163
+ | `npcli-test: command not found` | Ensure `pip install` succeeded and Python scripts dir is on `PATH` |
164
+ | `invalid api key format` | Key must start with `nepher_` |
165
+ | `api key does not have hackathon access` | Enable Hackathon scope or use an unrestricted key |
166
+ | `api key expired` | Run `npcli-test account api-keys create` |
167
+ | `Several hackathons are accepting submissions` | Re-run with `--hackathon-id` |
168
+ | `bittensor-wallet not installed` | `pip install bittensor-wallet` (needed for `tournament submit` and `account register-coldkey`) |
169
+ | `Not logged in` | `npcli-test login --api-key nepher_...` |
170
+ | `Conflict detected: 'scalecodec' ... conflicts with 'cyscale'` | Leftover `scalecodec` after a Bittensor upgrade. Prefer `pip install bittensor-wallet` so npcli-test never needs `btcli`. To repair `btcli` itself: `pip uninstall scalecodec cyscale -y && pip install -U cyscale --force-reinstall` |
171
+
172
+ Run any command with `--help` for full flag details:
173
+
174
+ ```bash
175
+ npcli-test --help
176
+ npcli-test hackathon submit --help
177
+ npcli-test tournament submit --help
178
+ ```
179
+
180
+ ## License
181
+
182
+ MIT
@@ -4,9 +4,9 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "nepher-cli-test"
7
- version = "0.2.4"
7
+ version = "0.2.6"
8
8
  description = "npcli-test — Nepher CLI for staging (api.staging.nepher.ai)"
9
- readme = "README.md"
9
+ readme = "README.test.md"
10
10
  requires-python = ">=3.10"
11
11
  license = { text = "MIT" }
12
12
  authors = [{ name = "Nepher" }]
@@ -46,7 +46,7 @@ packages = ["src/nepher_cli"]
46
46
  core-metadata-version = "2.4"
47
47
 
48
48
  [tool.hatch.build.targets.sdist]
49
- include = ["src/nepher_cli", "README.md", "pyproject.toml"]
49
+ include = ["src/nepher_cli", "README.test.md", "pyproject.toml"]
50
50
  core-metadata-version = "2.4"
51
51
 
52
52
  [tool.ruff]
@@ -1,3 +1,3 @@
1
1
  """npcli — unified Nepher command-line interface."""
2
2
 
3
- __version__ = "0.2.4"
3
+ __version__ = "0.2.6"
@@ -554,7 +554,7 @@ def api_keys_list(api_key: str | None) -> None:
554
554
  @click.option("--name", required=True, help="Human-readable label for the key.")
555
555
  @click.option(
556
556
  "--platform", "platforms", multiple=True,
557
- help="Platform access to grant (envhub, tournament, hackertone, simstore). Repeat for multiple. Omit for all.",
557
+ help="Platform access to grant (envhub, tournament, hackathon, simstore). Repeat for multiple. Omit for all.",
558
558
  )
559
559
  @click.option("--expires-at", default=None, help="Expiry in ISO 8601 (e.g. 2027-01-01T00:00:00Z).")
560
560
  @click.option("--api-key", "api_key", default=None, envvar="NEPHER_API_KEY")
@@ -1,168 +0,0 @@
1
- # nepher-cli
2
-
3
- The unified CLI for [Nepher Robotics](https://nepher.ai) — accounts, hackathons, EnvHub, tournaments, and SimStore from a single tool.
4
-
5
- **Requires:** Python 3.10+
6
-
7
- ## Install
8
-
9
- ```bash
10
- pip install nepher-cli
11
- ```
12
-
13
- Both `npcli` and `nepher-cli` entry points are registered after install.
14
-
15
- ```bash
16
- npcli --version
17
- npcli --help
18
- ```
19
-
20
- ## Commands
21
-
22
- | Command / Group | Description |
23
- |-----------------|-------------|
24
- | `npcli login` | Log in with a Nepher API key |
25
- | `npcli whoami` | Show the currently authenticated user |
26
- | `npcli logout` | Clear locally stored credentials |
27
- | `npcli account` | API keys and coldkey registration |
28
- | `npcli tournament` | Browse tournaments, submit agents, leaderboards |
29
- | `npcli envhub` | Manage Isaac Lab environment bundles |
30
- | `npcli hackathon` | Browse and submit to hackathons |
31
- | `npcli simstore` | SimStore marketplace *(coming soon)* |
32
-
33
- ## Quick Start
34
-
35
- ### Authenticate
36
-
37
- ```bash
38
- npcli login --api-key nepher_xxxxxxxx
39
- npcli whoami
40
- npcli logout
41
- ```
42
-
43
- Get your API key at [nepher.ai/account](https://nepher.ai/account) → Account → API Keys.
44
- For CI/CD, set `NEPHER_API_KEY=nepher_xxxxxxxx` instead of logging in.
45
-
46
- ### Tournaments
47
-
48
- ```bash
49
- npcli tournament list
50
- npcli tournament list-active
51
- npcli tournament status <tournament_id>
52
- npcli tournament leaderboard <tournament_id>
53
- ```
54
-
55
- Check your agent directory structure (no extra dependencies needed):
56
-
57
- ```bash
58
- npcli tournament check --path ./my-agent
59
- npcli tournament check --path ./my-agent --verbose # also show recommended-file warnings
60
- ```
61
-
62
- Submit an agent (requires `bittensor-wallet` for wallet signing):
63
-
64
- ```bash
65
- pip install bittensor-wallet
66
- # or: pip install "nepher-cli[bittensor]"
67
- ```
68
-
69
- ```bash
70
- npcli tournament submit --path ./my-agent --wallet-name miner --wallet-hotkey default
71
- ```
72
-
73
- Full options for `submit`:
74
-
75
- ```
76
- --path <path> Agent directory
77
- --wallet-name <str> Bittensor wallet name (default: miner)
78
- --wallet-hotkey <str> Bittensor wallet hotkey (default: default)
79
- --api-key <key> Nepher API key (falls back to stored credentials)
80
- --tournament-id <id> Target tournament ID (required when multiple are active)
81
- --api-url <url> Override tournament API URL
82
- -v / --verbose Verbose output
83
- ```
84
-
85
- ### EnvHub
86
-
87
- ```bash
88
- npcli envhub list
89
- npcli envhub download <env_id>
90
- npcli envhub upload ./my-bundle --category navigation
91
- npcli envhub cache list
92
- npcli envhub cache info
93
- npcli envhub cache clear
94
- ```
95
-
96
- ### Hackathons
97
-
98
- ```bash
99
- npcli hackathon list
100
-
101
- npcli hackathon submit \
102
- --title "My entry" \
103
- --submission ./my-project \
104
- --assets ./my-assets
105
- ```
106
-
107
- Full options:
108
-
109
- ```
110
- --hackathon-id <uuid> Required when multiple hackathons are open
111
- --title <str> Entry title
112
- --description <markdown> Entry description
113
- --thumbnail <file> Cover image (JPEG, PNG, WebP, GIF)
114
- --submission <path> Project folder or submission.zip
115
- --assets <path> Assets folder or assets.zip (images, videos, PDFs)
116
- --public-source Mark source as public
117
- ```
118
-
119
- ### API Keys
120
-
121
- ```bash
122
- npcli account api-keys list
123
- npcli account api-keys create --name "CI key" --platform hackertone
124
- npcli account api-keys revoke <key_id>
125
- ```
126
-
127
- ### Coldkey Registration
128
-
129
- Bind a Bittensor coldkey to your account (requires `bittensor-wallet`; `btcli` is optional fallback):
130
-
131
- ```bash
132
- pip install bittensor-wallet
133
- npcli account register-coldkey --wallet <wallet_name>
134
- ```
135
-
136
- Signing uses the local coldkey via `bittensor-wallet` and does not import `btcli`. If you still have a mixed Bittensor venv (`scalecodec` + `cyscale`), `register-coldkey` keeps working as long as `bittensor-wallet` is installed.
137
-
138
- ## API Key Requirements
139
-
140
- - Must start with `nepher_`
141
- - Must be active and not expired
142
- - `hackathon submit` requires **Hackathon** scope (or an unrestricted key)
143
- - `tournament submit` requires **Tournament** scope (or an unrestricted key)
144
-
145
- ## Troubleshooting
146
-
147
- | Error | Fix |
148
- |-------|-----|
149
- | `npcli: command not found` | Ensure `pip install` succeeded and Python scripts dir is on `PATH` |
150
- | `invalid api key format` | Key must start with `nepher_` |
151
- | `api key does not have hackathon access` | Enable Hackathon scope or use an unrestricted key |
152
- | `api key expired` | Run `npcli account api-keys create` |
153
- | `Several hackathons are accepting submissions` | Re-run with `--hackathon-id` |
154
- | `bittensor-wallet not installed` | `pip install bittensor-wallet` (needed for `tournament submit` and `account register-coldkey`) |
155
- | `Not logged in` | `npcli login --api-key nepher_...` |
156
- | `Conflict detected: 'scalecodec' ... conflicts with 'cyscale'` | Leftover `scalecodec` after a Bittensor upgrade. Prefer `pip install bittensor-wallet` so npcli never needs `btcli`. To repair `btcli` itself: `pip uninstall scalecodec cyscale -y && pip install -U cyscale --force-reinstall` |
157
-
158
- Run any command with `--help` for full flag details:
159
-
160
- ```bash
161
- npcli --help
162
- npcli hackathon submit --help
163
- npcli tournament submit --help
164
- ```
165
-
166
- ## License
167
-
168
- MIT