akernel-runtime 0.1.2__tar.gz → 0.1.4__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 (95) hide show
  1. akernel_runtime-0.1.4/.env.example +4 -0
  2. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/.github/release-notes/v0.1.0.md +1 -1
  3. akernel_runtime-0.1.4/.github/release-notes/v0.1.3.md +30 -0
  4. akernel_runtime-0.1.4/.github/release-notes/v0.1.4.md +30 -0
  5. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/CHANGELOG.md +14 -0
  6. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/PKG-INFO +14 -12
  7. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/README.md +9 -7
  8. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/docs/01-architecture.md +5 -5
  9. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/docs/05-local-wake.md +1 -1
  10. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/docs/07-release-and-ci.md +2 -2
  11. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/docs/11-publishing-setup.md +3 -3
  12. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/packages/npm/akernel/README.md +1 -1
  13. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/packages/npm/akernel/package.json +4 -4
  14. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/pyproject.toml +5 -5
  15. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/scripts/install_remote.ps1 +2 -2
  16. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/setup.ps1 +8 -8
  17. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/akernel_runtime.egg-info/PKG-INFO +14 -12
  18. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/akernel_runtime.egg-info/SOURCES.txt +2 -0
  19. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/__init__.py +1 -1
  20. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/cli.py +40 -29
  21. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/global_memory.py +1 -1
  22. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/loop.py +9 -4
  23. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/providers.py +21 -7
  24. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/tests/test_runtime.py +13 -13
  25. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/wake.ps1 +3 -3
  26. akernel_runtime-0.1.2/.env.example +0 -4
  27. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  28. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  29. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/.github/pull_request_template.md +0 -0
  30. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/.github/release-notes/v0.1.1.md +0 -0
  31. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/.github/release-notes/v0.1.2.md +0 -0
  32. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/.github/workflows/ci.yml +0 -0
  33. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/.github/workflows/release.yml +0 -0
  34. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/CODE_OF_CONDUCT.md +0 -0
  35. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/CONTRIBUTING.md +0 -0
  36. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/LICENSE +0 -0
  37. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/MANIFEST.in +0 -0
  38. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/NOTICE +0 -0
  39. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/SECURITY.md +0 -0
  40. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/docs/00-vision.md +0 -0
  41. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/docs/02-execution-plan.md +0 -0
  42. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/docs/03-cli-mvp.md +0 -0
  43. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/docs/04-evaluation.md +0 -0
  44. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/docs/06-skill-compiler.md +0 -0
  45. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/docs/08-open-source-plan.md +0 -0
  46. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/docs/09-product-roadmap.md +0 -0
  47. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/docs/10-benchmark-evidence.md +0 -0
  48. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/examples/benchmarks/phase2/01-routing.json +0 -0
  49. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/examples/benchmarks/phase2/02-memory.json +0 -0
  50. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/examples/benchmarks/phase2/03-budget-profiles.json +0 -0
  51. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/examples/benchmarks/scale/01-context-pressure.json +0 -0
  52. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/examples/benchmarks/scale/02-agent-editing.json +0 -0
  53. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/examples/benchmarks/scale/03-global-memory-marketplace.json +0 -0
  54. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/examples/evals/phase2.json +0 -0
  55. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/examples/marketplace/skills/index.json +0 -0
  56. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/examples/skills/context_budget.json +0 -0
  57. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/examples/skills/edit_file.json +0 -0
  58. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/examples/skills/markdown/context_budget.md +0 -0
  59. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/packages/npm/akernel/bin/akernel.js +0 -0
  60. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/scripts/release_check.ps1 +0 -0
  61. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/setup.cfg +0 -0
  62. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/setup.cmd +0 -0
  63. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/akernel_runtime.egg-info/dependency_links.txt +0 -0
  64. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/akernel_runtime.egg-info/entry_points.txt +0 -0
  65. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/akernel_runtime.egg-info/requires.txt +0 -0
  66. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/akernel_runtime.egg-info/top_level.txt +0 -0
  67. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/__main__.py +0 -0
  68. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/agent_reports.py +0 -0
  69. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/benchmarks.py +0 -0
  70. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/budget.py +0 -0
  71. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/context.py +0 -0
  72. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/evals.py +0 -0
  73. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/marketplace.py +0 -0
  74. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/marketplace_data/skills/context_budget.json +0 -0
  75. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/marketplace_data/skills/context_compaction.json +0 -0
  76. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/marketplace_data/skills/edit_file.json +0 -0
  77. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/marketplace_data/skills/index.json +0 -0
  78. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/marketplace_data/skills/long_task_planning.json +0 -0
  79. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/marketplace_data/skills/multi_file_bugfix.json +0 -0
  80. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/memory.py +0 -0
  81. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/models.py +0 -0
  82. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/planner.py +0 -0
  83. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/policy.py +0 -0
  84. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/project.py +0 -0
  85. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/report_costs.py +0 -0
  86. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/runner.py +0 -0
  87. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/skills.py +0 -0
  88. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/state_writer.py +0 -0
  89. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/storage.py +0 -0
  90. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/tasks.py +0 -0
  91. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/text.py +0 -0
  92. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/tokenizer.py +0 -0
  93. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/tools.py +0 -0
  94. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/src/context_kernel/verifier.py +0 -0
  95. {akernel_runtime-0.1.2 → akernel_runtime-0.1.4}/wake.cmd +0 -0
@@ -0,0 +1,4 @@
1
+ AKERNEL_OPENAI_API_KEY=replace-with-your-key
2
+ AKERNEL_OPENAI_BASE_URL=https://clarmy.cloud/v1
3
+ AKERNEL_OPENAI_MODEL=gpt-5.5
4
+ AKERNEL_OPENAI_AUX_MODEL=gpt-5.3-codex
@@ -17,7 +17,7 @@ akernel
17
17
  Windows users can also install directly from GitHub:
18
18
 
19
19
  ```powershell
20
- irm https://raw.githubusercontent.com/huanxin0825-ctrl/context-kernel/main/scripts/install_remote.ps1 | iex
20
+ irm https://raw.githubusercontent.com/huanxin0825-ctrl/context-akernel/main/scripts/install_remote.ps1 | iex
21
21
  akernel setup
22
22
  akernel
23
23
  ```
@@ -0,0 +1,30 @@
1
+ # Context Kernel v0.1.3
2
+
3
+ This release aligns public repository metadata with the npm scope and completes the move toward the `akernel` naming surface.
4
+
5
+ ## Install
6
+
7
+ Python:
8
+
9
+ ```powershell
10
+ python -m pip install --user --upgrade akernel-runtime
11
+ akernel setup
12
+ akernel
13
+ ```
14
+
15
+ npm launcher:
16
+
17
+ ```powershell
18
+ npm install -g @context-akernel/akernel
19
+ akernel setup
20
+ akernel
21
+ ```
22
+
23
+ ## Changes
24
+
25
+ - Updated repository metadata and install links from `context-kernel` to `context-akernel`.
26
+ - Keeps `akernel-runtime` as the Python package and `@context-akernel/akernel` as the npm launcher package.
27
+
28
+ ## Notes
29
+
30
+ If you use Trusted Publishing, ensure PyPI and npm publisher settings now point to the GitHub repository `huanxin0825-ctrl/context-akernel`.
@@ -0,0 +1,30 @@
1
+ # Context Kernel v0.1.4
2
+
3
+ This release verifies the refreshed GitHub repository identity after the public move to `context-akernel`.
4
+
5
+ ## Install
6
+
7
+ Python:
8
+
9
+ ```powershell
10
+ python -m pip install --user --upgrade akernel-runtime
11
+ akernel setup
12
+ akernel
13
+ ```
14
+
15
+ npm launcher:
16
+
17
+ ```powershell
18
+ npm install -g @context-akernel/akernel
19
+ akernel setup
20
+ akernel
21
+ ```
22
+
23
+ ## Changes
24
+
25
+ - Publishes a clean patch release after updating Trusted Publisher bindings to `huanxin0825-ctrl/context-akernel`.
26
+ - Keeps the package names stable: `akernel-runtime` on PyPI and `@context-akernel/akernel` on npm.
27
+
28
+ ## Notes
29
+
30
+ Use this version to confirm both package registries now trust the renamed GitHub repository.
@@ -8,11 +8,25 @@ The project follows a pragmatic pre-1.0 changelog: breaking changes may occur, b
8
8
 
9
9
  No changes yet.
10
10
 
11
+ ## 0.1.4 - 2026-05-12
12
+
13
+ ### Changed
14
+
15
+ - Reissued the repository rename release after refreshing package publisher bindings for `context-akernel`.
16
+
17
+ ## 0.1.3 - 2026-05-12
18
+
19
+ ### Changed
20
+
21
+ - Renamed repository metadata and install links from `context-kernel` to `context-akernel` to align with the npm scope.
22
+
11
23
  ## 0.1.2 - 2026-05-12
12
24
 
13
25
  ### Changed
14
26
 
15
27
  - Renamed the prepared npm launcher scope from `@context-kernel/akernel` to `@context-akernel/akernel`.
28
+ - Renamed project-local provider environment variables from `CONTEXT_KERNEL_OPENAI_*` to `AKERNEL_OPENAI_*` while keeping legacy names as a compatibility fallback.
29
+ - Moved the default user launcher directory from `%USERPROFILE%\.context-kernel\bin` to `%USERPROFILE%\.akernel\bin`.
16
30
 
17
31
  ## 0.1.1 - 2026-05-12
18
32
 
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: akernel-runtime
3
- Version: 0.1.2
3
+ Version: 0.1.4
4
4
  Summary: Agent Kernel: a CLI-first context-native agent runtime prototype.
5
5
  Author: Context Kernel contributors
6
6
  License-Expression: Apache-2.0
7
- Project-URL: Homepage, https://github.com/huanxin0825-ctrl/context-kernel
8
- Project-URL: Repository, https://github.com/huanxin0825-ctrl/context-kernel
9
- Project-URL: Issues, https://github.com/huanxin0825-ctrl/context-kernel/issues
10
- Project-URL: Changelog, https://github.com/huanxin0825-ctrl/context-kernel/blob/main/CHANGELOG.md
7
+ Project-URL: Homepage, https://github.com/huanxin0825-ctrl/context-akernel
8
+ Project-URL: Repository, https://github.com/huanxin0825-ctrl/context-akernel
9
+ Project-URL: Issues, https://github.com/huanxin0825-ctrl/context-akernel/issues
10
+ Project-URL: Changelog, https://github.com/huanxin0825-ctrl/context-akernel/blob/main/CHANGELOG.md
11
11
  Keywords: agent,cli,context,llm,token-budget
12
12
  Classifier: Development Status :: 3 - Alpha
13
13
  Classifier: Intended Audience :: Developers
@@ -101,7 +101,7 @@ akernel
101
101
 
102
102
  `setup.cmd` creates `.venv`, installs the local CLI in editable mode, and prepares project-local `.env` if needed. `wake.cmd` activates the environment, loads `.env`, and prints common commands. The `.cmd` wrappers avoid local PowerShell execution-policy friction.
103
103
 
104
- `setup.cmd` also installs user-level launchers in `%USERPROFILE%\.context-kernel\bin` and adds that directory to the user PATH. After opening a new terminal, `akernel` works from any directory, starts the interactive agent session by default, and uses that current directory as the workspace location. Environment lookup prefers the current project `.env`, then falls back to the installed Context Kernel project `.env`. `akernel-chat` remains as a compatibility shortcut.
104
+ `setup.cmd` also installs user-level launchers in `%USERPROFILE%\.akernel\bin` and adds that directory to the user PATH. After opening a new terminal, `akernel` works from any directory, starts the interactive agent session by default, and uses that current directory as the workspace location. Environment lookup prefers the current project `.env`, then falls back to the installed Context Kernel project `.env`. `akernel-chat` remains as a compatibility shortcut.
105
105
 
106
106
  ### Manual Python Install
107
107
 
@@ -127,7 +127,7 @@ akernel
127
127
  Windows users can also install directly from GitHub:
128
128
 
129
129
  ```powershell
130
- irm https://raw.githubusercontent.com/huanxin0825-ctrl/context-kernel/main/scripts/install_remote.ps1 | iex
130
+ irm https://raw.githubusercontent.com/huanxin0825-ctrl/context-akernel/main/scripts/install_remote.ps1 | iex
131
131
  akernel setup
132
132
  akernel
133
133
  ```
@@ -142,7 +142,7 @@ akernel setup
142
142
  akernel
143
143
  ```
144
144
 
145
- Set `AKERNEL_PIP_SOURCE=git+https://github.com/huanxin0825-ctrl/context-kernel.git` to make the npm launcher bootstrap from GitHub instead of PyPI.
145
+ Set `AKERNEL_PIP_SOURCE=git+https://github.com/huanxin0825-ctrl/context-akernel.git` to make the npm launcher bootstrap from GitHub instead of PyPI.
146
146
 
147
147
  ## Quick Start
148
148
 
@@ -183,12 +183,14 @@ The current deterministic scale snapshot is documented in [Benchmark Evidence](d
183
183
  Provider configuration is project-local. Copy `.env.example` to `.env` or use `setup.cmd -ForceEnv`.
184
184
 
185
185
  ```env
186
- CONTEXT_KERNEL_OPENAI_API_KEY=replace-with-your-key
187
- CONTEXT_KERNEL_OPENAI_BASE_URL=https://clarmy.cloud/v1
188
- CONTEXT_KERNEL_OPENAI_MODEL=gpt-5.5
189
- CONTEXT_KERNEL_OPENAI_AUX_MODEL=gpt-5.3-codex
186
+ AKERNEL_OPENAI_API_KEY=replace-with-your-key
187
+ AKERNEL_OPENAI_BASE_URL=https://clarmy.cloud/v1
188
+ AKERNEL_OPENAI_MODEL=gpt-5.5
189
+ AKERNEL_OPENAI_AUX_MODEL=gpt-5.3-codex
190
190
  ```
191
191
 
192
+ Legacy `CONTEXT_KERNEL_OPENAI_*` names are still read as a compatibility fallback, but new projects should use `AKERNEL_OPENAI_*`.
193
+
192
194
  Useful checks:
193
195
 
194
196
  ```powershell
@@ -74,7 +74,7 @@ akernel
74
74
 
75
75
  `setup.cmd` creates `.venv`, installs the local CLI in editable mode, and prepares project-local `.env` if needed. `wake.cmd` activates the environment, loads `.env`, and prints common commands. The `.cmd` wrappers avoid local PowerShell execution-policy friction.
76
76
 
77
- `setup.cmd` also installs user-level launchers in `%USERPROFILE%\.context-kernel\bin` and adds that directory to the user PATH. After opening a new terminal, `akernel` works from any directory, starts the interactive agent session by default, and uses that current directory as the workspace location. Environment lookup prefers the current project `.env`, then falls back to the installed Context Kernel project `.env`. `akernel-chat` remains as a compatibility shortcut.
77
+ `setup.cmd` also installs user-level launchers in `%USERPROFILE%\.akernel\bin` and adds that directory to the user PATH. After opening a new terminal, `akernel` works from any directory, starts the interactive agent session by default, and uses that current directory as the workspace location. Environment lookup prefers the current project `.env`, then falls back to the installed Context Kernel project `.env`. `akernel-chat` remains as a compatibility shortcut.
78
78
 
79
79
  ### Manual Python Install
80
80
 
@@ -100,7 +100,7 @@ akernel
100
100
  Windows users can also install directly from GitHub:
101
101
 
102
102
  ```powershell
103
- irm https://raw.githubusercontent.com/huanxin0825-ctrl/context-kernel/main/scripts/install_remote.ps1 | iex
103
+ irm https://raw.githubusercontent.com/huanxin0825-ctrl/context-akernel/main/scripts/install_remote.ps1 | iex
104
104
  akernel setup
105
105
  akernel
106
106
  ```
@@ -115,7 +115,7 @@ akernel setup
115
115
  akernel
116
116
  ```
117
117
 
118
- Set `AKERNEL_PIP_SOURCE=git+https://github.com/huanxin0825-ctrl/context-kernel.git` to make the npm launcher bootstrap from GitHub instead of PyPI.
118
+ Set `AKERNEL_PIP_SOURCE=git+https://github.com/huanxin0825-ctrl/context-akernel.git` to make the npm launcher bootstrap from GitHub instead of PyPI.
119
119
 
120
120
  ## Quick Start
121
121
 
@@ -156,12 +156,14 @@ The current deterministic scale snapshot is documented in [Benchmark Evidence](d
156
156
  Provider configuration is project-local. Copy `.env.example` to `.env` or use `setup.cmd -ForceEnv`.
157
157
 
158
158
  ```env
159
- CONTEXT_KERNEL_OPENAI_API_KEY=replace-with-your-key
160
- CONTEXT_KERNEL_OPENAI_BASE_URL=https://clarmy.cloud/v1
161
- CONTEXT_KERNEL_OPENAI_MODEL=gpt-5.5
162
- CONTEXT_KERNEL_OPENAI_AUX_MODEL=gpt-5.3-codex
159
+ AKERNEL_OPENAI_API_KEY=replace-with-your-key
160
+ AKERNEL_OPENAI_BASE_URL=https://clarmy.cloud/v1
161
+ AKERNEL_OPENAI_MODEL=gpt-5.5
162
+ AKERNEL_OPENAI_AUX_MODEL=gpt-5.3-codex
163
163
  ```
164
164
 
165
+ Legacy `CONTEXT_KERNEL_OPENAI_*` names are still read as a compatibility fallback, but new projects should use `AKERNEL_OPENAI_*`.
166
+
165
167
  Useful checks:
166
168
 
167
169
  ```powershell
@@ -98,14 +98,14 @@ The model provider is an interface. The CLI includes a mock provider for determi
98
98
 
99
99
  Provider secrets are loaded from current process environment first, then project-local `.env`. The `.env` file is ignored by git and should stay local to the working copy.
100
100
 
101
- - `CONTEXT_KERNEL_OPENAI_API_KEY`
102
- - `CONTEXT_KERNEL_OPENAI_BASE_URL`
103
- - `CONTEXT_KERNEL_OPENAI_MODEL`
104
- - `CONTEXT_KERNEL_OPENAI_AUX_MODEL`
101
+ - `AKERNEL_OPENAI_API_KEY`
102
+ - `AKERNEL_OPENAI_BASE_URL`
103
+ - `AKERNEL_OPENAI_MODEL`
104
+ - `AKERNEL_OPENAI_AUX_MODEL`
105
105
 
106
106
  OpenAI-compatible base URLs are normalized to a `/v1` API root, so both `https://host` and `https://host/v1` are accepted.
107
107
 
108
- `CONTEXT_KERNEL_OPENAI_MODEL` is the primary execution model used for high-risk, deep, warning-heavy, or synthesis steps. `CONTEXT_KERNEL_OPENAI_AUX_MODEL` is the auxiliary model role used for low/medium first-step planning in automatic routing and for auxiliary review before primary-model steps. Review traces are saved and their tokens are included in agent cost reports.
108
+ `AKERNEL_OPENAI_MODEL` is the primary execution model used for high-risk, deep, warning-heavy, or synthesis steps. `AKERNEL_OPENAI_AUX_MODEL` is the auxiliary model role used for low/medium first-step planning in automatic routing and for auxiliary review before primary-model steps. Review traces are saved and their tokens are included in agent cost reports.
109
109
 
110
110
  ### Verifier
111
111
 
@@ -25,7 +25,7 @@ akernel
25
25
  akernel --help
26
26
  ```
27
27
 
28
- The launchers live in `%USERPROFILE%\.context-kernel\bin`, and that directory is added to the user PATH. Open a new terminal if the commands are not visible immediately. `akernel` uses the current directory as the workspace, stores state in `.akernel`, and initializes it if needed. Environment lookup prefers the current directory `.env`, then falls back to the installed Context Kernel project `.env`. `akernel-chat` is kept as a compatibility shortcut.
28
+ The launchers live in `%USERPROFILE%\.akernel\bin`, and that directory is added to the user PATH. Open a new terminal if the commands are not visible immediately. `akernel` uses the current directory as the workspace, stores state in `.akernel`, and initializes it if needed. Environment lookup prefers the current directory `.env`, then falls back to the installed Context Kernel project `.env`. `akernel-chat` is kept as a compatibility shortcut.
29
29
 
30
30
  ## Wake The Project
31
31
 
@@ -94,7 +94,7 @@ akernel
94
94
  Until PyPI publishing is enabled, Windows users can install from GitHub with:
95
95
 
96
96
  ```powershell
97
- irm https://raw.githubusercontent.com/huanxin0825-ctrl/context-kernel/main/scripts/install_remote.ps1 | iex
97
+ irm https://raw.githubusercontent.com/huanxin0825-ctrl/context-akernel/main/scripts/install_remote.ps1 | iex
98
98
  akernel setup
99
99
  akernel
100
100
  ```
@@ -107,7 +107,7 @@ akernel setup
107
107
  akernel
108
108
  ```
109
109
 
110
- Before PyPI publication, set `AKERNEL_PIP_SOURCE=git+https://github.com/huanxin0825-ctrl/context-kernel.git` so the npm wrapper bootstraps from GitHub.
110
+ Before PyPI publication, set `AKERNEL_PIP_SOURCE=git+https://github.com/huanxin0825-ctrl/context-akernel.git` so the npm wrapper bootstraps from GitHub.
111
111
 
112
112
  `bench gate` also requires the current benchmark report itself to pass its checks. This prevents a bad first run from becoming the new normal just because the relative diff has no regression.
113
113
  The release workflow also uploads benchmark evidence as a workflow artifact so release preparation carries a reproducible token-savings snapshot.
@@ -8,7 +8,7 @@ Do not commit credentials to the repository. Do not paste PyPI or npm tokens int
8
8
 
9
9
  You need:
10
10
 
11
- - A GitHub account with admin access to `huanxin0825-ctrl/context-kernel`.
11
+ - A GitHub account with admin access to `huanxin0825-ctrl/context-akernel`.
12
12
  - A PyPI account with two-factor authentication enabled.
13
13
  - An npm account with two-factor authentication enabled.
14
14
  - Either an npm organization or user scope that can publish the package name used by `packages/npm/akernel/package.json`.
@@ -30,7 +30,7 @@ Configure a PyPI trusted publisher with these values:
30
30
  | --- | --- |
31
31
  | PyPI project name | `akernel-runtime` |
32
32
  | Owner | `huanxin0825-ctrl` |
33
- | Repository name | `context-kernel` |
33
+ | Repository name | `context-akernel` |
34
34
  | Workflow filename | `release.yml` |
35
35
  | Environment name | `pypi` |
36
36
 
@@ -63,7 +63,7 @@ Recommended path: use npm Trusted Publishing. It avoids a long-lived npm token a
63
63
  | --- | --- |
64
64
  | Package | `@context-akernel/akernel` |
65
65
  | Owner | `huanxin0825-ctrl` |
66
- | Repository name | `context-kernel` |
66
+ | Repository name | `context-akernel` |
67
67
  | Workflow filename | `release.yml` |
68
68
  | Environment name | `npm` |
69
69
 
@@ -18,7 +18,7 @@ python -m pip install --user --upgrade akernel-runtime
18
18
 
19
19
  Useful environment overrides:
20
20
 
21
- - `AKERNEL_PIP_SOURCE=git+https://github.com/huanxin0825-ctrl/context-kernel.git` installs from GitHub instead of PyPI.
21
+ - `AKERNEL_PIP_SOURCE=git+https://github.com/huanxin0825-ctrl/context-akernel.git` installs from GitHub instead of PyPI.
22
22
  - `AKERNEL_SKIP_BOOTSTRAP=1` disables automatic pip installation.
23
23
 
24
24
  Python 3.10 or newer is required. The Python package remains the source of truth.
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@context-akernel/akernel",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "npm launcher wrapper for the Context Kernel akernel CLI.",
5
5
  "license": "Apache-2.0",
6
- "homepage": "https://github.com/huanxin0825-ctrl/context-kernel#readme",
6
+ "homepage": "https://github.com/huanxin0825-ctrl/context-akernel#readme",
7
7
  "repository": {
8
8
  "type": "git",
9
- "url": "git+https://github.com/huanxin0825-ctrl/context-kernel.git",
9
+ "url": "git+https://github.com/huanxin0825-ctrl/context-akernel.git",
10
10
  "directory": "packages/npm/akernel"
11
11
  },
12
12
  "bugs": {
13
- "url": "https://github.com/huanxin0825-ctrl/context-kernel/issues"
13
+ "url": "https://github.com/huanxin0825-ctrl/context-akernel/issues"
14
14
  },
15
15
  "keywords": [
16
16
  "agent",
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "akernel-runtime"
7
- version = "0.1.2"
7
+ version = "0.1.4"
8
8
  description = "Agent Kernel: a CLI-first context-native agent runtime prototype."
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -26,10 +26,10 @@ classifiers = [
26
26
  ]
27
27
 
28
28
  [project.urls]
29
- Homepage = "https://github.com/huanxin0825-ctrl/context-kernel"
30
- Repository = "https://github.com/huanxin0825-ctrl/context-kernel"
31
- Issues = "https://github.com/huanxin0825-ctrl/context-kernel/issues"
32
- Changelog = "https://github.com/huanxin0825-ctrl/context-kernel/blob/main/CHANGELOG.md"
29
+ Homepage = "https://github.com/huanxin0825-ctrl/context-akernel"
30
+ Repository = "https://github.com/huanxin0825-ctrl/context-akernel"
31
+ Issues = "https://github.com/huanxin0825-ctrl/context-akernel/issues"
32
+ Changelog = "https://github.com/huanxin0825-ctrl/context-akernel/blob/main/CHANGELOG.md"
33
33
 
34
34
  [project.optional-dependencies]
35
35
  dev = ["build>=1.2", "twine>=5.0"]
@@ -1,6 +1,6 @@
1
1
  param(
2
- [string]$Source = "git+https://github.com/huanxin0825-ctrl/context-kernel.git",
3
- [string]$LauncherDir = "$env:USERPROFILE\.context-kernel\bin"
2
+ [string]$Source = "git+https://github.com/huanxin0825-ctrl/context-akernel.git",
3
+ [string]$LauncherDir = "$env:USERPROFILE\.akernel\bin"
4
4
  )
5
5
 
6
6
  $ErrorActionPreference = "Stop"
@@ -13,7 +13,7 @@ $ProjectRoot = Split-Path -Parent $MyInvocation.MyCommand.Path
13
13
  $VenvPath = Join-Path $ProjectRoot ".venv"
14
14
  $PythonPath = Join-Path $VenvPath "Scripts\python.exe"
15
15
  $EnvPath = Join-Path $ProjectRoot ".env"
16
- $LauncherDir = Join-Path $env:USERPROFILE ".context-kernel\bin"
16
+ $LauncherDir = Join-Path $env:USERPROFILE ".akernel\bin"
17
17
 
18
18
  function Install-GlobalLaunchers {
19
19
  param(
@@ -27,7 +27,7 @@ function Install-GlobalLaunchers {
27
27
  $akernel = @"
28
28
  @echo off
29
29
  setlocal
30
- set "CONTEXT_KERNEL_PROJECT_ROOT=$ProjectRoot"
30
+ set "AKERNEL_PROJECT_ROOT=$ProjectRoot"
31
31
  "$PythonPath" -m context_kernel %*
32
32
  exit /b %ERRORLEVEL%
33
33
  "@
@@ -36,7 +36,7 @@ exit /b %ERRORLEVEL%
36
36
  $chat = @"
37
37
  @echo off
38
38
  setlocal
39
- set "CONTEXT_KERNEL_PROJECT_ROOT=$ProjectRoot"
39
+ set "AKERNEL_PROJECT_ROOT=$ProjectRoot"
40
40
  "$PythonPath" -m context_kernel chat %*
41
41
  exit /b %ERRORLEVEL%
42
42
  "@
@@ -76,15 +76,15 @@ if ($ForceEnv -or -not (Test-Path -LiteralPath $EnvPath)) {
76
76
  if (Test-Path -LiteralPath $EnvPath) {
77
77
  Write-Host "Keeping existing .env because no ApiKey was provided."
78
78
  } else {
79
- Write-Host "Creating .env from .env.example. Fill in CONTEXT_KERNEL_OPENAI_API_KEY before using openai provider."
79
+ Write-Host "Creating .env from .env.example. Fill in AKERNEL_OPENAI_API_KEY before using openai provider."
80
80
  Copy-Item -LiteralPath (Join-Path $ProjectRoot ".env.example") -Destination $EnvPath
81
81
  }
82
82
  } else {
83
83
  $lines = @(
84
- "CONTEXT_KERNEL_OPENAI_API_KEY=$ApiKey",
85
- "CONTEXT_KERNEL_OPENAI_BASE_URL=$BaseUrl",
86
- "CONTEXT_KERNEL_OPENAI_MODEL=$Model",
87
- "CONTEXT_KERNEL_OPENAI_AUX_MODEL=$AuxModel"
84
+ "AKERNEL_OPENAI_API_KEY=$ApiKey",
85
+ "AKERNEL_OPENAI_BASE_URL=$BaseUrl",
86
+ "AKERNEL_OPENAI_MODEL=$Model",
87
+ "AKERNEL_OPENAI_AUX_MODEL=$AuxModel"
88
88
  )
89
89
  Set-Content -LiteralPath $EnvPath -Value $lines -Encoding UTF8
90
90
  Write-Host "Wrote project-local .env."
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: akernel-runtime
3
- Version: 0.1.2
3
+ Version: 0.1.4
4
4
  Summary: Agent Kernel: a CLI-first context-native agent runtime prototype.
5
5
  Author: Context Kernel contributors
6
6
  License-Expression: Apache-2.0
7
- Project-URL: Homepage, https://github.com/huanxin0825-ctrl/context-kernel
8
- Project-URL: Repository, https://github.com/huanxin0825-ctrl/context-kernel
9
- Project-URL: Issues, https://github.com/huanxin0825-ctrl/context-kernel/issues
10
- Project-URL: Changelog, https://github.com/huanxin0825-ctrl/context-kernel/blob/main/CHANGELOG.md
7
+ Project-URL: Homepage, https://github.com/huanxin0825-ctrl/context-akernel
8
+ Project-URL: Repository, https://github.com/huanxin0825-ctrl/context-akernel
9
+ Project-URL: Issues, https://github.com/huanxin0825-ctrl/context-akernel/issues
10
+ Project-URL: Changelog, https://github.com/huanxin0825-ctrl/context-akernel/blob/main/CHANGELOG.md
11
11
  Keywords: agent,cli,context,llm,token-budget
12
12
  Classifier: Development Status :: 3 - Alpha
13
13
  Classifier: Intended Audience :: Developers
@@ -101,7 +101,7 @@ akernel
101
101
 
102
102
  `setup.cmd` creates `.venv`, installs the local CLI in editable mode, and prepares project-local `.env` if needed. `wake.cmd` activates the environment, loads `.env`, and prints common commands. The `.cmd` wrappers avoid local PowerShell execution-policy friction.
103
103
 
104
- `setup.cmd` also installs user-level launchers in `%USERPROFILE%\.context-kernel\bin` and adds that directory to the user PATH. After opening a new terminal, `akernel` works from any directory, starts the interactive agent session by default, and uses that current directory as the workspace location. Environment lookup prefers the current project `.env`, then falls back to the installed Context Kernel project `.env`. `akernel-chat` remains as a compatibility shortcut.
104
+ `setup.cmd` also installs user-level launchers in `%USERPROFILE%\.akernel\bin` and adds that directory to the user PATH. After opening a new terminal, `akernel` works from any directory, starts the interactive agent session by default, and uses that current directory as the workspace location. Environment lookup prefers the current project `.env`, then falls back to the installed Context Kernel project `.env`. `akernel-chat` remains as a compatibility shortcut.
105
105
 
106
106
  ### Manual Python Install
107
107
 
@@ -127,7 +127,7 @@ akernel
127
127
  Windows users can also install directly from GitHub:
128
128
 
129
129
  ```powershell
130
- irm https://raw.githubusercontent.com/huanxin0825-ctrl/context-kernel/main/scripts/install_remote.ps1 | iex
130
+ irm https://raw.githubusercontent.com/huanxin0825-ctrl/context-akernel/main/scripts/install_remote.ps1 | iex
131
131
  akernel setup
132
132
  akernel
133
133
  ```
@@ -142,7 +142,7 @@ akernel setup
142
142
  akernel
143
143
  ```
144
144
 
145
- Set `AKERNEL_PIP_SOURCE=git+https://github.com/huanxin0825-ctrl/context-kernel.git` to make the npm launcher bootstrap from GitHub instead of PyPI.
145
+ Set `AKERNEL_PIP_SOURCE=git+https://github.com/huanxin0825-ctrl/context-akernel.git` to make the npm launcher bootstrap from GitHub instead of PyPI.
146
146
 
147
147
  ## Quick Start
148
148
 
@@ -183,12 +183,14 @@ The current deterministic scale snapshot is documented in [Benchmark Evidence](d
183
183
  Provider configuration is project-local. Copy `.env.example` to `.env` or use `setup.cmd -ForceEnv`.
184
184
 
185
185
  ```env
186
- CONTEXT_KERNEL_OPENAI_API_KEY=replace-with-your-key
187
- CONTEXT_KERNEL_OPENAI_BASE_URL=https://clarmy.cloud/v1
188
- CONTEXT_KERNEL_OPENAI_MODEL=gpt-5.5
189
- CONTEXT_KERNEL_OPENAI_AUX_MODEL=gpt-5.3-codex
186
+ AKERNEL_OPENAI_API_KEY=replace-with-your-key
187
+ AKERNEL_OPENAI_BASE_URL=https://clarmy.cloud/v1
188
+ AKERNEL_OPENAI_MODEL=gpt-5.5
189
+ AKERNEL_OPENAI_AUX_MODEL=gpt-5.3-codex
190
190
  ```
191
191
 
192
+ Legacy `CONTEXT_KERNEL_OPENAI_*` names are still read as a compatibility fallback, but new projects should use `AKERNEL_OPENAI_*`.
193
+
192
194
  Useful checks:
193
195
 
194
196
  ```powershell
@@ -18,6 +18,8 @@ wake.ps1
18
18
  .github/release-notes/v0.1.0.md
19
19
  .github/release-notes/v0.1.1.md
20
20
  .github/release-notes/v0.1.2.md
21
+ .github/release-notes/v0.1.3.md
22
+ .github/release-notes/v0.1.4.md
21
23
  .github/workflows/ci.yml
22
24
  .github/workflows/release.yml
23
25
  docs/00-vision.md
@@ -1,3 +1,3 @@
1
1
  """Context Kernel CLI-first agent runtime prototype."""
2
2
 
3
- __version__ = "0.1.2"
3
+ __version__ = "0.1.4"
@@ -42,6 +42,18 @@ from .verifier import verify_trace
42
42
 
43
43
  DEFAULT_PRIMARY_MODEL = "gpt-5.5"
44
44
  DEFAULT_AUXILIARY_MODEL = "gpt-5.3-codex"
45
+ OPENAI_ENV_KEYS = {
46
+ "api_key": "AKERNEL_OPENAI_API_KEY",
47
+ "base_url": "AKERNEL_OPENAI_BASE_URL",
48
+ "model": "AKERNEL_OPENAI_MODEL",
49
+ "aux_model": "AKERNEL_OPENAI_AUX_MODEL",
50
+ }
51
+ LEGACY_OPENAI_ENV_KEYS = {
52
+ "api_key": "CONTEXT_KERNEL_OPENAI_API_KEY",
53
+ "base_url": "CONTEXT_KERNEL_OPENAI_BASE_URL",
54
+ "model": "CONTEXT_KERNEL_OPENAI_MODEL",
55
+ "aux_model": "CONTEXT_KERNEL_OPENAI_AUX_MODEL",
56
+ }
45
57
  COMMAND_NAMES = {
46
58
  "agent",
47
59
  "bench",
@@ -613,7 +625,7 @@ def cmd_setup(args: argparse.Namespace) -> None:
613
625
 
614
626
  api_key = args.api_key
615
627
  if api_key is None:
616
- current_key = existing.get("CONTEXT_KERNEL_OPENAI_API_KEY", "")
628
+ current_key = existing_env_value(existing, "api_key")
617
629
  if current_key and interactive:
618
630
  typed = getpass("API key [keep existing]: ").strip()
619
631
  api_key = typed or current_key
@@ -626,18 +638,18 @@ def cmd_setup(args: argparse.Namespace) -> None:
626
638
 
627
639
  base_url = args.base_url
628
640
  if base_url is None:
629
- default_base_url = existing.get("CONTEXT_KERNEL_OPENAI_BASE_URL") or "https://clarmy.cloud/v1"
641
+ default_base_url = existing_env_value(existing, "base_url") or "https://clarmy.cloud/v1"
630
642
  base_url = prompt_text("Base URL", default_base_url, interactive=interactive)
631
643
  base_url = normalize_openai_base_url(base_url)
632
644
 
633
645
  model = args.model
634
646
  if model is None:
635
- default_model = existing.get("CONTEXT_KERNEL_OPENAI_MODEL") or DEFAULT_PRIMARY_MODEL
647
+ default_model = existing_env_value(existing, "model") or DEFAULT_PRIMARY_MODEL
636
648
  model = prompt_text("Primary model", default_model, interactive=interactive)
637
649
 
638
650
  aux_model = args.aux_model
639
651
  if aux_model is None:
640
- default_aux_model = existing.get("CONTEXT_KERNEL_OPENAI_AUX_MODEL") or DEFAULT_AUXILIARY_MODEL
652
+ default_aux_model = existing_env_value(existing, "aux_model") or DEFAULT_AUXILIARY_MODEL
641
653
  aux_model = prompt_text("Auxiliary model", default_aux_model, interactive=interactive)
642
654
 
643
655
  write_project_env(env_path, api_key=api_key, base_url=base_url, model=model, aux_model=aux_model)
@@ -647,17 +659,12 @@ def cmd_setup(args: argparse.Namespace) -> None:
647
659
  print(f"primary_model: {model}")
648
660
  print(f"auxiliary_model: {aux_model}")
649
661
  if args.verify:
650
- previous = {
651
- "CONTEXT_KERNEL_OPENAI_API_KEY": os.environ.get("CONTEXT_KERNEL_OPENAI_API_KEY"),
652
- "CONTEXT_KERNEL_OPENAI_BASE_URL": os.environ.get("CONTEXT_KERNEL_OPENAI_BASE_URL"),
653
- "CONTEXT_KERNEL_OPENAI_MODEL": os.environ.get("CONTEXT_KERNEL_OPENAI_MODEL"),
654
- "CONTEXT_KERNEL_OPENAI_AUX_MODEL": os.environ.get("CONTEXT_KERNEL_OPENAI_AUX_MODEL"),
655
- }
662
+ previous = {key: os.environ.get(key) for key in OPENAI_ENV_KEYS.values()}
656
663
  try:
657
- os.environ["CONTEXT_KERNEL_OPENAI_API_KEY"] = api_key
658
- os.environ["CONTEXT_KERNEL_OPENAI_BASE_URL"] = base_url
659
- os.environ["CONTEXT_KERNEL_OPENAI_MODEL"] = model
660
- os.environ["CONTEXT_KERNEL_OPENAI_AUX_MODEL"] = aux_model
664
+ os.environ[OPENAI_ENV_KEYS["api_key"]] = api_key
665
+ os.environ[OPENAI_ENV_KEYS["base_url"]] = base_url
666
+ os.environ[OPENAI_ENV_KEYS["model"]] = model
667
+ os.environ[OPENAI_ENV_KEYS["aux_model"]] = aux_model
661
668
  models = list_provider_models("openai", base_url=base_url)
662
669
  finally:
663
670
  restore_env(previous)
@@ -686,13 +693,17 @@ def prompt_text(label: str, default: str, *, interactive: bool) -> str:
686
693
  return value or default
687
694
 
688
695
 
696
+ def existing_env_value(existing: dict[str, str], key: str) -> str:
697
+ return existing.get(OPENAI_ENV_KEYS[key]) or existing.get(LEGACY_OPENAI_ENV_KEYS[key]) or ""
698
+
699
+
689
700
  def write_project_env(path: Path, *, api_key: str, base_url: str, model: str, aux_model: str) -> None:
690
701
  path.parent.mkdir(parents=True, exist_ok=True)
691
702
  lines = [
692
- f"CONTEXT_KERNEL_OPENAI_API_KEY={api_key}",
693
- f"CONTEXT_KERNEL_OPENAI_BASE_URL={base_url}",
694
- f"CONTEXT_KERNEL_OPENAI_MODEL={model}",
695
- f"CONTEXT_KERNEL_OPENAI_AUX_MODEL={aux_model}",
703
+ f"{OPENAI_ENV_KEYS['api_key']}={api_key}",
704
+ f"{OPENAI_ENV_KEYS['base_url']}={base_url}",
705
+ f"{OPENAI_ENV_KEYS['model']}={model}",
706
+ f"{OPENAI_ENV_KEYS['aux_model']}={aux_model}",
696
707
  ]
697
708
  path.write_text("\n".join(lines) + "\n", encoding="utf-8")
698
709
 
@@ -1145,8 +1156,8 @@ def cmd_chat(args: argparse.Namespace) -> None:
1145
1156
 
1146
1157
  def print_chat_header(workspace: Workspace, task_id: str, args: argparse.Namespace) -> None:
1147
1158
  model = primary_model(args)
1148
- base_url = args.base_url or env_value("CONTEXT_KERNEL_OPENAI_BASE_URL") or ""
1149
- api_key_set = bool(env_value("CONTEXT_KERNEL_OPENAI_API_KEY"))
1159
+ base_url = args.base_url or env_value("AKERNEL_OPENAI_BASE_URL") or ""
1160
+ api_key_set = bool(env_value("AKERNEL_OPENAI_API_KEY"))
1150
1161
  chat_banner(
1151
1162
  "Context Kernel Agent",
1152
1163
  "Token-frugal task runner for long-lived AI workspaces.",
@@ -1831,7 +1842,7 @@ def print_model_panel(args: argparse.Namespace) -> None:
1831
1842
  ("review_role", "auxiliary reviews primary-model steps when enabled"),
1832
1843
  ("mode", args.model_routing),
1833
1844
  ("review", args.aux_review),
1834
- ("base_url", args.base_url or env_value("CONTEXT_KERNEL_OPENAI_BASE_URL") or "default"),
1845
+ ("base_url", args.base_url or env_value("AKERNEL_OPENAI_BASE_URL") or "default"),
1835
1846
  ],
1836
1847
  )
1837
1848
 
@@ -1859,8 +1870,8 @@ def print_config_panel() -> None:
1859
1870
  "Config",
1860
1871
  [
1861
1872
  ("setup", "akernel setup"),
1862
- ("env", "CONTEXT_KERNEL_OPENAI_API_KEY, CONTEXT_KERNEL_OPENAI_BASE_URL"),
1863
- ("models", "CONTEXT_KERNEL_OPENAI_MODEL, CONTEXT_KERNEL_OPENAI_AUX_MODEL"),
1873
+ ("env", "AKERNEL_OPENAI_API_KEY, AKERNEL_OPENAI_BASE_URL"),
1874
+ ("models", "AKERNEL_OPENAI_MODEL, AKERNEL_OPENAI_AUX_MODEL"),
1864
1875
  ("scope", "current project .env first, installed Context Kernel .env fallback"),
1865
1876
  ],
1866
1877
  )
@@ -1872,11 +1883,11 @@ def chat_prompt(args: argparse.Namespace) -> str:
1872
1883
 
1873
1884
 
1874
1885
  def primary_model(args: argparse.Namespace) -> str:
1875
- return args.model or env_value("CONTEXT_KERNEL_OPENAI_MODEL") or DEFAULT_PRIMARY_MODEL
1886
+ return args.model or env_value("AKERNEL_OPENAI_MODEL") or DEFAULT_PRIMARY_MODEL
1876
1887
 
1877
1888
 
1878
1889
  def auxiliary_model(args: argparse.Namespace) -> str:
1879
- return getattr(args, "aux_model", None) or env_value("CONTEXT_KERNEL_OPENAI_AUX_MODEL") or DEFAULT_AUXILIARY_MODEL
1890
+ return getattr(args, "aux_model", None) or env_value("AKERNEL_OPENAI_AUX_MODEL") or DEFAULT_AUXILIARY_MODEL
1880
1891
 
1881
1892
 
1882
1893
  def model_routing_summary(report: dict[str, Any]) -> str:
@@ -2120,10 +2131,10 @@ def cmd_doctor(args: argparse.Namespace) -> None:
2120
2131
  workspace = Workspace(Path(args.workspace))
2121
2132
  config = workspace.load_config()
2122
2133
  command_policy = summarize_command_policy(workspace)
2123
- base_url = env_value("CONTEXT_KERNEL_OPENAI_BASE_URL")
2124
- api_key = env_value("CONTEXT_KERNEL_OPENAI_API_KEY")
2125
- model = env_value("CONTEXT_KERNEL_OPENAI_MODEL") or DEFAULT_PRIMARY_MODEL
2126
- aux_model = env_value("CONTEXT_KERNEL_OPENAI_AUX_MODEL") or DEFAULT_AUXILIARY_MODEL
2134
+ base_url = env_value("AKERNEL_OPENAI_BASE_URL")
2135
+ api_key = env_value("AKERNEL_OPENAI_API_KEY")
2136
+ model = env_value("AKERNEL_OPENAI_MODEL") or DEFAULT_PRIMARY_MODEL
2137
+ aux_model = env_value("AKERNEL_OPENAI_AUX_MODEL") or DEFAULT_AUXILIARY_MODEL
2127
2138
  print(f"project_root: {Path.cwd().resolve()}")
2128
2139
  print(f"workspace: {workspace.root}")
2129
2140
  print(f"workspace_initialized: {workspace.state.exists()}")
@@ -8,7 +8,7 @@ from .storage import Workspace
8
8
 
9
9
 
10
10
  def global_workspace(root: Path | None = None) -> Workspace:
11
- workspace = Workspace(root or Path.home() / ".context-kernel" / "global")
11
+ workspace = Workspace(root or Path.home() / ".akernel" / "global")
12
12
  workspace.init()
13
13
  return workspace
14
14
 
@@ -855,7 +855,12 @@ def recovery_target_path(request: str) -> str | None:
855
855
  def diagnose_agent_exception(exc: Exception) -> dict[str, str]:
856
856
  message = compact(str(exc), limit=500) or exc.__class__.__name__
857
857
  lower = message.casefold()
858
- if "missing context_kernel_openai_base_url" in lower or "missing context_kernel_openai_api_key" in lower:
858
+ if (
859
+ "missing akernel_openai_base_url" in lower
860
+ or "missing akernel_openai_api_key" in lower
861
+ or "missing context_kernel_openai_base_url" in lower
862
+ or "missing context_kernel_openai_api_key" in lower
863
+ ):
859
864
  return {
860
865
  "category": "provider_configuration",
861
866
  "message": message,
@@ -865,7 +870,7 @@ def diagnose_agent_exception(exc: Exception) -> dict[str, str]:
865
870
  return {
866
871
  "category": "provider_auth",
867
872
  "message": message,
868
- "suggestion": "Check `CONTEXT_KERNEL_OPENAI_API_KEY` in the project `.env` and confirm the endpoint accepts it.",
873
+ "suggestion": "Check `AKERNEL_OPENAI_API_KEY` in the project `.env` and confirm the endpoint accepts it.",
869
874
  }
870
875
  if "provider http 404" in lower:
871
876
  return {
@@ -1049,8 +1054,8 @@ def resolve_role_model(provider_name: str, model: str | None, aux_model: str | N
1049
1054
  if provider_name != "openai":
1050
1055
  return aux_model if role == "auxiliary" else model
1051
1056
  if role == "auxiliary":
1052
- return aux_model or env_value("CONTEXT_KERNEL_OPENAI_AUX_MODEL") or DEFAULT_AUXILIARY_MODEL
1053
- return model or env_value("CONTEXT_KERNEL_OPENAI_MODEL") or DEFAULT_PRIMARY_MODEL
1057
+ return aux_model or env_value("AKERNEL_OPENAI_AUX_MODEL") or DEFAULT_AUXILIARY_MODEL
1058
+ return model or env_value("AKERNEL_OPENAI_MODEL") or DEFAULT_PRIMARY_MODEL
1054
1059
 
1055
1060
 
1056
1061
  def run_auxiliary_review(
@@ -13,6 +13,15 @@ from .policy import command_root_candidates
13
13
  from .tokenizer import estimate_tokens
14
14
 
15
15
 
16
+ ENV_ALIASES = {
17
+ "AKERNEL_OPENAI_API_KEY": "CONTEXT_KERNEL_OPENAI_API_KEY",
18
+ "AKERNEL_OPENAI_BASE_URL": "CONTEXT_KERNEL_OPENAI_BASE_URL",
19
+ "AKERNEL_OPENAI_MODEL": "CONTEXT_KERNEL_OPENAI_MODEL",
20
+ "AKERNEL_OPENAI_AUX_MODEL": "CONTEXT_KERNEL_OPENAI_AUX_MODEL",
21
+ "AKERNEL_PROJECT_ROOT": "CONTEXT_KERNEL_PROJECT_ROOT",
22
+ }
23
+
24
+
16
25
  @dataclass(frozen=True)
17
26
  class ProviderResponse:
18
27
  text: str
@@ -689,14 +698,14 @@ class OpenAICompatibleProvider:
689
698
  api_key: str | None = None,
690
699
  timeout_seconds: int = 120,
691
700
  ):
692
- self.model = model or env_value("CONTEXT_KERNEL_OPENAI_MODEL") or "gpt-5.5"
693
- self.base_url = normalize_openai_base_url(base_url or env_value("CONTEXT_KERNEL_OPENAI_BASE_URL") or "")
694
- self.api_key = api_key or env_value("CONTEXT_KERNEL_OPENAI_API_KEY")
701
+ self.model = model or env_value("AKERNEL_OPENAI_MODEL") or "gpt-5.5"
702
+ self.base_url = normalize_openai_base_url(base_url or env_value("AKERNEL_OPENAI_BASE_URL") or "")
703
+ self.api_key = api_key or env_value("AKERNEL_OPENAI_API_KEY")
695
704
  self.timeout_seconds = timeout_seconds
696
705
  if not self.base_url:
697
- raise ValueError("Missing CONTEXT_KERNEL_OPENAI_BASE_URL for OpenAI-compatible provider.")
706
+ raise ValueError("Missing AKERNEL_OPENAI_BASE_URL for OpenAI-compatible provider.")
698
707
  if not self.api_key:
699
- raise ValueError("Missing CONTEXT_KERNEL_OPENAI_API_KEY for OpenAI-compatible provider.")
708
+ raise ValueError("Missing AKERNEL_OPENAI_API_KEY for OpenAI-compatible provider.")
700
709
 
701
710
  def run(self, packet: dict[str, Any]) -> ProviderResponse:
702
711
  payload = {
@@ -829,8 +838,13 @@ def env_value(name: str) -> str | None:
829
838
  value = os.environ.get(name)
830
839
  if value:
831
840
  return value
841
+ legacy_name = ENV_ALIASES.get(name)
842
+ if legacy_name:
843
+ value = os.environ.get(legacy_name)
844
+ if value:
845
+ return value
832
846
  env_file = project_env_values()
833
- return env_file.get(name)
847
+ return env_file.get(name) or (env_file.get(legacy_name) if legacy_name else None)
834
848
 
835
849
 
836
850
  def project_env_values() -> dict[str, str]:
@@ -838,7 +852,7 @@ def project_env_values() -> dict[str, str]:
838
852
  path = directory / ".env"
839
853
  if path.exists():
840
854
  return parse_env_file(path)
841
- project_root = os.environ.get("CONTEXT_KERNEL_PROJECT_ROOT")
855
+ project_root = os.environ.get("AKERNEL_PROJECT_ROOT") or os.environ.get("CONTEXT_KERNEL_PROJECT_ROOT")
842
856
  if project_root:
843
857
  path = Path(project_root) / ".env"
844
858
  if path.exists():
@@ -305,7 +305,7 @@ class RuntimeTests(unittest.TestCase):
305
305
  with patch.object(
306
306
  AgentRunner,
307
307
  "run",
308
- side_effect=ValueError("Missing CONTEXT_KERNEL_OPENAI_API_KEY for OpenAI-compatible provider."),
308
+ side_effect=ValueError("Missing AKERNEL_OPENAI_API_KEY for OpenAI-compatible provider."),
309
309
  ):
310
310
  report = AgentLoop(workspace).run(
311
311
  "Reply with OK.",
@@ -1249,7 +1249,7 @@ class RuntimeTests(unittest.TestCase):
1249
1249
  self.assertIn("Model Roles", output)
1250
1250
  self.assertIn("auxiliary", output)
1251
1251
  self.assertIn("Models", output)
1252
- self.assertIn("CONTEXT_KERNEL_OPENAI_AUX_MODEL", output)
1252
+ self.assertIn("AKERNEL_OPENAI_AUX_MODEL", output)
1253
1253
  self.assertIn("agent_run:", output)
1254
1254
  self.assertIn("Mock agent response", output)
1255
1255
  self.assertIn("Step Breakdown", output)
@@ -1440,10 +1440,10 @@ class RuntimeTests(unittest.TestCase):
1440
1440
  os.chdir(previous)
1441
1441
 
1442
1442
  values = parse_env_file(Path(tmp) / ".env")
1443
- self.assertEqual(values["CONTEXT_KERNEL_OPENAI_API_KEY"], "sk-test123456789012345")
1444
- self.assertEqual(values["CONTEXT_KERNEL_OPENAI_BASE_URL"], "https://example.test/v1")
1445
- self.assertEqual(values["CONTEXT_KERNEL_OPENAI_MODEL"], "gpt-5.5")
1446
- self.assertEqual(values["CONTEXT_KERNEL_OPENAI_AUX_MODEL"], "gpt-5.3-codex")
1443
+ self.assertEqual(values["AKERNEL_OPENAI_API_KEY"], "sk-test123456789012345")
1444
+ self.assertEqual(values["AKERNEL_OPENAI_BASE_URL"], "https://example.test/v1")
1445
+ self.assertEqual(values["AKERNEL_OPENAI_MODEL"], "gpt-5.5")
1446
+ self.assertEqual(values["AKERNEL_OPENAI_AUX_MODEL"], "gpt-5.3-codex")
1447
1447
  self.assertIn("api_key: set", stdout.getvalue())
1448
1448
  self.assertIn("auxiliary_model: gpt-5.3-codex", stdout.getvalue())
1449
1449
 
@@ -1859,12 +1859,12 @@ class RuntimeTests(unittest.TestCase):
1859
1859
  with tempfile.TemporaryDirectory() as tmp:
1860
1860
  path = Path(tmp) / ".env"
1861
1861
  path.write_text(
1862
- "CONTEXT_KERNEL_OPENAI_BASE_URL=https://clarmy.cloud/v1\n"
1863
- "CONTEXT_KERNEL_OPENAI_MODEL='gpt-5.5'\n",
1862
+ "AKERNEL_OPENAI_BASE_URL=https://clarmy.cloud/v1\n"
1863
+ "AKERNEL_OPENAI_MODEL='gpt-5.5'\n",
1864
1864
  encoding="utf-8",
1865
1865
  )
1866
1866
 
1867
- self.assertEqual(parse_env_file(path)["CONTEXT_KERNEL_OPENAI_MODEL"], "gpt-5.5")
1867
+ self.assertEqual(parse_env_file(path)["AKERNEL_OPENAI_MODEL"], "gpt-5.5")
1868
1868
  self.assertEqual(normalize_openai_base_url("https://clarmy.cloud"), "https://clarmy.cloud/v1")
1869
1869
  self.assertEqual(normalize_openai_base_url("https://clarmy.cloud/v1"), "https://clarmy.cloud/v1")
1870
1870
 
@@ -1873,17 +1873,17 @@ class RuntimeTests(unittest.TestCase):
1873
1873
  root = Path(root_tmp)
1874
1874
  (root / ".env").write_text("CONTEXT_KERNEL_TEST_VALUE=from-project-root\n", encoding="utf-8")
1875
1875
  previous = Path.cwd()
1876
- previous_root = os.environ.get("CONTEXT_KERNEL_PROJECT_ROOT")
1876
+ previous_root = os.environ.get("AKERNEL_PROJECT_ROOT")
1877
1877
  os.chdir(work_tmp)
1878
- os.environ["CONTEXT_KERNEL_PROJECT_ROOT"] = str(root)
1878
+ os.environ["AKERNEL_PROJECT_ROOT"] = str(root)
1879
1879
  try:
1880
1880
  self.assertEqual(env_value("CONTEXT_KERNEL_TEST_VALUE"), "from-project-root")
1881
1881
  finally:
1882
1882
  os.chdir(previous)
1883
1883
  if previous_root is None:
1884
- os.environ.pop("CONTEXT_KERNEL_PROJECT_ROOT", None)
1884
+ os.environ.pop("AKERNEL_PROJECT_ROOT", None)
1885
1885
  else:
1886
- os.environ["CONTEXT_KERNEL_PROJECT_ROOT"] = previous_root
1886
+ os.environ["AKERNEL_PROJECT_ROOT"] = previous_root
1887
1887
 
1888
1888
  def test_eval_runner_can_execute_with_mock_provider(self) -> None:
1889
1889
  with tempfile.TemporaryDirectory() as tmp:
@@ -41,7 +41,7 @@ Import-ProjectEnv $EnvPath
41
41
  Write-Host "Context Kernel is awake."
42
42
  Write-Host "Project: $ProjectRoot"
43
43
  Write-Host "Workspace: $Workspace"
44
- Write-Host "Model: $env:CONTEXT_KERNEL_OPENAI_MODEL"
44
+ Write-Host "Model: $env:AKERNEL_OPENAI_MODEL"
45
45
  Write-Host ""
46
46
 
47
47
  if ($InitWorkspace) {
@@ -53,7 +53,7 @@ if ($ListModels) {
53
53
  }
54
54
 
55
55
  if ($RunSmoke) {
56
- akernel --workspace $Workspace run "In one short sentence, say what Context Kernel is testing." --provider openai --model $env:CONTEXT_KERNEL_OPENAI_MODEL --profile lean
56
+ akernel --workspace $Workspace run "In one short sentence, say what Context Kernel is testing." --provider openai --model $env:AKERNEL_OPENAI_MODEL --profile lean
57
57
  }
58
58
 
59
59
  Write-Host "Useful commands:"
@@ -65,4 +65,4 @@ Write-Host " akernel chat"
65
65
  Write-Host " akernel-chat"
66
66
  Write-Host " akernel --workspace $Workspace bench run examples\benchmarks\phase2"
67
67
  Write-Host " akernel --workspace $Workspace bench gate examples\benchmarks\phase2"
68
- Write-Host " akernel --workspace $Workspace bench run examples\benchmarks\phase2 --execute --provider openai --model $env:CONTEXT_KERNEL_OPENAI_MODEL"
68
+ Write-Host " akernel --workspace $Workspace bench run examples\benchmarks\phase2 --execute --provider openai --model $env:AKERNEL_OPENAI_MODEL"
@@ -1,4 +0,0 @@
1
- CONTEXT_KERNEL_OPENAI_API_KEY=replace-with-your-key
2
- CONTEXT_KERNEL_OPENAI_BASE_URL=https://clarmy.cloud/v1
3
- CONTEXT_KERNEL_OPENAI_MODEL=gpt-5.5
4
- CONTEXT_KERNEL_OPENAI_AUX_MODEL=gpt-5.3-codex
File without changes
File without changes