You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It is **local-first by design**. Index, config, runs, rollups, and memory all live under `~/.ashlr/`. Agent runs default to local models and refuse to touch a cloud endpoint unless you explicitly opt in. Telemetry is metadata-only; secrets flow through Phantom, never through the hub.
@@ -643,7 +644,7 @@ Runs stream progress live to stderr (task starts, model deltas, tool calls, retr
643
644
|`ashlr run show <id>`| Print the full `RunState` for a past run. |
644
645
|`ashlr runs [--json]`| List all past runs, newest first. |
### Local Weapon (v3) — make local models genuinely capable
698
+
699
+
v3 is a focused push to close the quality gap between local models (Ollama / LM Studio) and the cloud, without ever leaving your machine. Four shipped pieces — all opt-in, all bounded.
700
+
701
+
#### Adaptive prompts (M41)
702
+
703
+
A model-adaptive, layered system-prompt suite. ashlr auto-detects a per-model profile from the model name (size band + coder/general/small) and tunes **prompt verbosity, ReAct step cap, and sampling temperature** to fit the model actually serving the task — a 1.5B chat model and a 32B coder get very different scaffolding. Off by default; opt-in.
704
+
705
+
```sh
706
+
ashlr config set models.adaptivePrompts true# config opt-in (default: false)
707
+
ASHLR_ADAPTIVE_PROMPTS=1 ashlr run "<goal>"# env opt-in (overrides config)
708
+
```
709
+
710
+
With the flag off the harness uses its legacy prompts and step cap unchanged — the whole suite is additive and gated.
711
+
712
+
#### Engineering tool surface (M42)
713
+
714
+
Give the local agent **real, sandboxed engineering tools** — read / glob / grep / write / edit — confined to a throwaway git worktree. The agent never touches your live working tree: the resulting diff is routed to the Approval Inbox as a PENDING proposal, exactly like every other outward action.
715
+
716
+
```sh
717
+
ashlr run "<goal>" --engineer # sandboxed read/glob/grep/write/edit → inbox
718
+
ashlr run "<goal>" --engineer --bash # also allow sandboxed command/test execution
719
+
ashlr inbox # review the proposed diff; nothing applies until you approve
720
+
```
721
+
722
+
Requires the repo to be **enrolled** (`ashlr enroll add <repo>`) and the kill switch off. Off by default.
723
+
724
+
**Security posture** (structurally enforced):
725
+
726
+
-**Kill-switch gated** — every mutating tool is REFUSED when `~/.ashlr/KILL` is set; checked first, cannot be bypassed.
727
+
-**Workspace-boundary + enrollment enforced** — writes resolve only inside the sandbox worktree of an enrolled repo; paths outside the boundary are refused.
728
+
-**Secret-scrubbed output** — tool output is secret-scrubbed before it reaches the model or any store.
729
+
-**Diffs to inbox, never the live tree** — `write`/`edit` produce a proposal; approval is human-only via `ashlr inbox approve` (there is no agent-reachable apply path).
730
+
-**Double opt-in for bash** — `--bash` is local code execution and requires `--engineer`**and**`--bash` together; it too is kill-switch gated and confined to the sandbox.
731
+
732
+
#### Verify→repair loop (M43)
733
+
734
+
After each task the agent runs the repo's detected typecheck / test / lint commands and feeds any failures back into a bounded repair pass. This generalizes the prior single retry into a loop — bounded by `--max-steps` and the run budget, so it can never spin without limit. Tune the headroom via the run budget flags (`--budget` / `--max-steps`).
735
+
736
+
#### Eval harness (M44)
737
+
738
+
Measure the local-model uplift on your own machine. `ashlr eval` runs a fixed fixture set through the agent loop twice per fixture — adaptive prompts **OFF** then **ON** — and reports steps-to-done, done count, and tokens for each.
Needs a local model running (Ollama / LM Studio). When none is reachable it **skips gracefully** — prints a hint and exits 0, never an error.
747
+
748
+
#### Cross-platform
749
+
750
+
ashlr runs on **macOS, Linux, and Windows**. The engineering tools resolve the platform shell at runtime (e.g. `cmd.exe` on Windows, so `npm.cmd` / `npx.cmd` shims resolve via `PATHEXT`), and the local-model providers (Ollama / LM Studio) are plain HTTP, so no platform-specific runtime is required.
751
+
696
752
### Observe
697
753
698
754
```sh
@@ -803,7 +859,8 @@ ashlr telemetry test # emit a synthetic test span; reports ok/fail
803
859
804
860
## Requirements
805
861
806
-
-**macOS** · **Node.js 22+** · `~/.local/bin` on your `PATH`
862
+
-**macOS, Linux, or Windows** · **Node.js 22+** · `~/.local/bin` on your `PATH` (POSIX)
863
+
- The engineering tools (M42) resolve the platform shell at runtime (`cmd.exe` on Windows); the local-model providers are HTTP-based, so no platform-specific runtime is required.
807
864
- Optional: [Ollama](https://ollama.com) or [LM Studio](https://lmstudio.ai) for local agent runs; [`phantom`](https://github.com/nicholasgasior/phantom) for secrets management; [Raycast](https://raycast.com) for the extension.
0 commit comments