@sudosandwich/limps 2.13.3 → 3.1.0

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 (254) hide show
  1. package/README.md +168 -115
  2. package/dist/cli/config-cmd.d.ts +22 -194
  3. package/dist/cli/config-cmd.d.ts.map +1 -1
  4. package/dist/cli/config-cmd.js +92 -981
  5. package/dist/cli/config-cmd.js.map +1 -1
  6. package/dist/cli/index.d.ts +1 -2
  7. package/dist/cli/index.d.ts.map +1 -1
  8. package/dist/cli/index.js +2 -3
  9. package/dist/cli/index.js.map +1 -1
  10. package/dist/cli/init-project.d.ts +7 -3
  11. package/dist/cli/init-project.d.ts.map +1 -1
  12. package/dist/cli/init-project.js +43 -51
  13. package/dist/cli/init-project.js.map +1 -1
  14. package/dist/cli/mcp-client-adapter.d.ts +17 -48
  15. package/dist/cli/mcp-client-adapter.d.ts.map +1 -1
  16. package/dist/cli/mcp-client-adapter.js +29 -194
  17. package/dist/cli/mcp-client-adapter.js.map +1 -1
  18. package/dist/cli/mcp-clients.d.ts +2 -40
  19. package/dist/cli/mcp-clients.d.ts.map +1 -1
  20. package/dist/cli/mcp-clients.js +31 -92
  21. package/dist/cli/mcp-clients.js.map +1 -1
  22. package/dist/cli.js +18 -8
  23. package/dist/cli.js.map +1 -1
  24. package/dist/commands/config/index.d.ts.map +1 -1
  25. package/dist/commands/config/index.js +3 -12
  26. package/dist/commands/config/index.js.map +1 -1
  27. package/dist/commands/config/print.d.ts +20 -0
  28. package/dist/commands/config/print.d.ts.map +1 -0
  29. package/dist/commands/config/print.js +51 -0
  30. package/dist/commands/config/print.js.map +1 -0
  31. package/dist/commands/config/update.d.ts +3 -4
  32. package/dist/commands/config/update.d.ts.map +1 -1
  33. package/dist/commands/config/update.js +6 -5
  34. package/dist/commands/config/update.js.map +1 -1
  35. package/dist/commands/config/upgrade.d.ts +1 -1
  36. package/dist/commands/config/upgrade.js +2 -2
  37. package/dist/commands/config/upgrade.js.map +1 -1
  38. package/dist/commands/graph/check.d.ts +0 -1
  39. package/dist/commands/graph/check.d.ts.map +1 -1
  40. package/dist/commands/graph/check.js +4 -13
  41. package/dist/commands/graph/check.js.map +1 -1
  42. package/dist/commands/graph/entity.d.ts +0 -1
  43. package/dist/commands/graph/entity.d.ts.map +1 -1
  44. package/dist/commands/graph/entity.js +4 -13
  45. package/dist/commands/graph/entity.js.map +1 -1
  46. package/dist/commands/graph/health.d.ts +0 -1
  47. package/dist/commands/graph/health.d.ts.map +1 -1
  48. package/dist/commands/graph/health.js +4 -13
  49. package/dist/commands/graph/health.js.map +1 -1
  50. package/dist/commands/graph/index.d.ts.map +1 -1
  51. package/dist/commands/graph/index.js +1 -3
  52. package/dist/commands/graph/index.js.map +1 -1
  53. package/dist/commands/graph/overlap.d.ts +0 -1
  54. package/dist/commands/graph/overlap.d.ts.map +1 -1
  55. package/dist/commands/graph/overlap.js +3 -9
  56. package/dist/commands/graph/overlap.js.map +1 -1
  57. package/dist/commands/graph/reindex.d.ts +0 -1
  58. package/dist/commands/graph/reindex.d.ts.map +1 -1
  59. package/dist/commands/graph/reindex.js +3 -9
  60. package/dist/commands/graph/reindex.js.map +1 -1
  61. package/dist/commands/graph/search.d.ts +0 -1
  62. package/dist/commands/graph/search.d.ts.map +1 -1
  63. package/dist/commands/graph/search.js +3 -9
  64. package/dist/commands/graph/search.js.map +1 -1
  65. package/dist/commands/graph/suggest.d.ts +0 -1
  66. package/dist/commands/graph/suggest.d.ts.map +1 -1
  67. package/dist/commands/graph/suggest.js +4 -13
  68. package/dist/commands/graph/suggest.js.map +1 -1
  69. package/dist/commands/graph/trace.d.ts +0 -1
  70. package/dist/commands/graph/trace.d.ts.map +1 -1
  71. package/dist/commands/graph/trace.js +3 -9
  72. package/dist/commands/graph/trace.js.map +1 -1
  73. package/dist/commands/graph/watch.d.ts +0 -1
  74. package/dist/commands/graph/watch.d.ts.map +1 -1
  75. package/dist/commands/graph/watch.js +2 -5
  76. package/dist/commands/graph/watch.js.map +1 -1
  77. package/dist/commands/health/check.d.ts +0 -1
  78. package/dist/commands/health/check.d.ts.map +1 -1
  79. package/dist/commands/health/check.js +3 -9
  80. package/dist/commands/health/check.js.map +1 -1
  81. package/dist/commands/health/index.d.ts.map +1 -1
  82. package/dist/commands/health/index.js +1 -3
  83. package/dist/commands/health/index.js.map +1 -1
  84. package/dist/commands/health/inference.d.ts +0 -1
  85. package/dist/commands/health/inference.d.ts.map +1 -1
  86. package/dist/commands/health/inference.js +4 -10
  87. package/dist/commands/health/inference.js.map +1 -1
  88. package/dist/commands/health/staleness.d.ts +0 -1
  89. package/dist/commands/health/staleness.d.ts.map +1 -1
  90. package/dist/commands/health/staleness.js +3 -9
  91. package/dist/commands/health/staleness.js.map +1 -1
  92. package/dist/commands/index.d.ts.map +1 -1
  93. package/dist/commands/index.js +1 -1
  94. package/dist/commands/index.js.map +1 -1
  95. package/dist/commands/init.d.ts +4 -6
  96. package/dist/commands/init.d.ts.map +1 -1
  97. package/dist/commands/init.js +8 -8
  98. package/dist/commands/init.js.map +1 -1
  99. package/dist/commands/list-agents.d.ts +0 -1
  100. package/dist/commands/list-agents.d.ts.map +1 -1
  101. package/dist/commands/list-agents.js +6 -17
  102. package/dist/commands/list-agents.js.map +1 -1
  103. package/dist/commands/list-plans.d.ts +0 -1
  104. package/dist/commands/list-plans.d.ts.map +1 -1
  105. package/dist/commands/list-plans.js +6 -12
  106. package/dist/commands/list-plans.js.map +1 -1
  107. package/dist/commands/next-task.d.ts +0 -1
  108. package/dist/commands/next-task.d.ts.map +1 -1
  109. package/dist/commands/next-task.js +7 -18
  110. package/dist/commands/next-task.js.map +1 -1
  111. package/dist/commands/proposals/apply-safe.d.ts +0 -1
  112. package/dist/commands/proposals/apply-safe.d.ts.map +1 -1
  113. package/dist/commands/proposals/apply-safe.js +4 -13
  114. package/dist/commands/proposals/apply-safe.js.map +1 -1
  115. package/dist/commands/proposals/apply.d.ts +0 -1
  116. package/dist/commands/proposals/apply.d.ts.map +1 -1
  117. package/dist/commands/proposals/apply.js +3 -9
  118. package/dist/commands/proposals/apply.js.map +1 -1
  119. package/dist/commands/proposals/index.d.ts +0 -1
  120. package/dist/commands/proposals/index.d.ts.map +1 -1
  121. package/dist/commands/proposals/index.js +4 -10
  122. package/dist/commands/proposals/index.js.map +1 -1
  123. package/dist/commands/reindex.d.ts +0 -1
  124. package/dist/commands/reindex.d.ts.map +1 -1
  125. package/dist/commands/reindex.js +4 -8
  126. package/dist/commands/reindex.js.map +1 -1
  127. package/dist/commands/repair-plans.d.ts +0 -1
  128. package/dist/commands/repair-plans.d.ts.map +1 -1
  129. package/dist/commands/repair-plans.js +3 -6
  130. package/dist/commands/repair-plans.js.map +1 -1
  131. package/dist/commands/reset.d.ts +13 -0
  132. package/dist/commands/reset.d.ts.map +1 -0
  133. package/dist/commands/reset.js +30 -0
  134. package/dist/commands/reset.js.map +1 -0
  135. package/dist/commands/score-all.d.ts +0 -1
  136. package/dist/commands/score-all.d.ts.map +1 -1
  137. package/dist/commands/score-all.js +7 -18
  138. package/dist/commands/score-all.js.map +1 -1
  139. package/dist/commands/score-task.d.ts +0 -1
  140. package/dist/commands/score-task.d.ts.map +1 -1
  141. package/dist/commands/score-task.js +7 -22
  142. package/dist/commands/score-task.js.map +1 -1
  143. package/dist/commands/start.d.ts +15 -0
  144. package/dist/commands/start.d.ts.map +1 -0
  145. package/dist/commands/start.js +131 -0
  146. package/dist/commands/start.js.map +1 -0
  147. package/dist/commands/status-server.d.ts +13 -0
  148. package/dist/commands/status-server.d.ts.map +1 -0
  149. package/dist/commands/status-server.js +114 -0
  150. package/dist/commands/status-server.js.map +1 -0
  151. package/dist/commands/status.d.ts +0 -1
  152. package/dist/commands/status.d.ts.map +1 -1
  153. package/dist/commands/status.js +3 -9
  154. package/dist/commands/status.js.map +1 -1
  155. package/dist/commands/stop.d.ts +12 -0
  156. package/dist/commands/stop.d.ts.map +1 -0
  157. package/dist/commands/stop.js +87 -0
  158. package/dist/commands/stop.js.map +1 -0
  159. package/dist/config.d.ts +34 -0
  160. package/dist/config.d.ts.map +1 -1
  161. package/dist/config.js +101 -0
  162. package/dist/config.js.map +1 -1
  163. package/dist/pidfile.d.ts +55 -0
  164. package/dist/pidfile.d.ts.map +1 -0
  165. package/dist/pidfile.js +103 -0
  166. package/dist/pidfile.js.map +1 -0
  167. package/dist/server-http-entry.d.ts +8 -0
  168. package/dist/server-http-entry.d.ts.map +1 -0
  169. package/dist/server-http-entry.js +42 -0
  170. package/dist/server-http-entry.js.map +1 -0
  171. package/dist/server-http.d.ts +19 -0
  172. package/dist/server-http.d.ts.map +1 -0
  173. package/dist/server-http.js +292 -0
  174. package/dist/server-http.js.map +1 -0
  175. package/dist/server-main.d.ts +3 -3
  176. package/dist/server-main.d.ts.map +1 -1
  177. package/dist/server-main.js +17 -111
  178. package/dist/server-main.js.map +1 -1
  179. package/dist/server-shared.d.ts +30 -0
  180. package/dist/server-shared.d.ts.map +1 -0
  181. package/dist/server-shared.js +110 -0
  182. package/dist/server-shared.js.map +1 -0
  183. package/dist/server.d.ts +2 -1
  184. package/dist/server.d.ts.map +1 -1
  185. package/dist/server.js +4 -3
  186. package/dist/server.js.map +1 -1
  187. package/dist/utils/cli-help.d.ts +0 -2
  188. package/dist/utils/cli-help.d.ts.map +1 -1
  189. package/dist/utils/cli-help.js +0 -6
  190. package/dist/utils/cli-help.js.map +1 -1
  191. package/dist/utils/config-resolver.d.ts +1 -11
  192. package/dist/utils/config-resolver.d.ts.map +1 -1
  193. package/dist/utils/config-resolver.js +2 -34
  194. package/dist/utils/config-resolver.js.map +1 -1
  195. package/dist/utils/http-client.d.ts +72 -0
  196. package/dist/utils/http-client.d.ts.map +1 -0
  197. package/dist/utils/http-client.js +160 -0
  198. package/dist/utils/http-client.js.map +1 -0
  199. package/dist/utils/index.d.ts +0 -1
  200. package/dist/utils/index.d.ts.map +1 -1
  201. package/dist/utils/index.js +0 -1
  202. package/dist/utils/index.js.map +1 -1
  203. package/dist/utils/rate-limiter.d.ts +18 -0
  204. package/dist/utils/rate-limiter.d.ts.map +1 -0
  205. package/dist/utils/rate-limiter.js +60 -0
  206. package/dist/utils/rate-limiter.js.map +1 -0
  207. package/dist/utils/version-state.d.ts.map +1 -1
  208. package/dist/utils/version-state.js +20 -4
  209. package/dist/utils/version-state.js.map +1 -1
  210. package/package.json +1 -1
  211. package/dist/cli/registry.d.ts +0 -94
  212. package/dist/cli/registry.d.ts.map +0 -1
  213. package/dist/cli/registry.js +0 -150
  214. package/dist/cli/registry.js.map +0 -1
  215. package/dist/commands/config/add.d.ts +0 -9
  216. package/dist/commands/config/add.d.ts.map +0 -1
  217. package/dist/commands/config/add.js +0 -20
  218. package/dist/commands/config/add.js.map +0 -1
  219. package/dist/commands/config/discover.d.ts +0 -3
  220. package/dist/commands/config/discover.d.ts.map +0 -1
  221. package/dist/commands/config/discover.js +0 -9
  222. package/dist/commands/config/discover.js.map +0 -1
  223. package/dist/commands/config/list.d.ts +0 -11
  224. package/dist/commands/config/list.d.ts.map +0 -1
  225. package/dist/commands/config/list.js +0 -28
  226. package/dist/commands/config/list.js.map +0 -1
  227. package/dist/commands/config/migrate.d.ts +0 -3
  228. package/dist/commands/config/migrate.d.ts.map +0 -1
  229. package/dist/commands/config/migrate.js +0 -14
  230. package/dist/commands/config/migrate.js.map +0 -1
  231. package/dist/commands/config/remove.d.ts +0 -9
  232. package/dist/commands/config/remove.d.ts.map +0 -1
  233. package/dist/commands/config/remove.js +0 -17
  234. package/dist/commands/config/remove.js.map +0 -1
  235. package/dist/commands/config/set.d.ts +0 -9
  236. package/dist/commands/config/set.d.ts.map +0 -1
  237. package/dist/commands/config/set.js +0 -17
  238. package/dist/commands/config/set.js.map +0 -1
  239. package/dist/commands/config/sync-mcp.d.ts +0 -26
  240. package/dist/commands/config/sync-mcp.d.ts.map +0 -1
  241. package/dist/commands/config/sync-mcp.js +0 -259
  242. package/dist/commands/config/sync-mcp.js.map +0 -1
  243. package/dist/commands/config/use.d.ts +0 -9
  244. package/dist/commands/config/use.d.ts.map +0 -1
  245. package/dist/commands/config/use.js +0 -17
  246. package/dist/commands/config/use.js.map +0 -1
  247. package/dist/commands/serve.d.ts +0 -18
  248. package/dist/commands/serve.d.ts.map +0 -1
  249. package/dist/commands/serve.js +0 -29
  250. package/dist/commands/serve.js.map +0 -1
  251. package/dist/utils/os-paths.d.ts +0 -34
  252. package/dist/utils/os-paths.d.ts.map +0 -1
  253. package/dist/utils/os-paths.js +0 -60
  254. package/dist/utils/os-paths.js.map +0 -1
package/README.md CHANGED
@@ -19,6 +19,7 @@
19
19
  - [How You Can Use It](#how-you-can-use-it)
20
20
  - [Why limps?](#why-limps)
21
21
  - [Installation](#installation)
22
+ - [Upgrading from v2](#upgrading-from-v2)
22
23
  - [Project Setup](#project-setup)
23
24
  - [Client Setup](#client-setup)
24
25
  - [Transport](#transport)
@@ -33,7 +34,6 @@
33
34
  - [Used in Production](#used-in-production)
34
35
  - [Creating a feature plan](#creating-a-feature-plan)
35
36
  - [Deep Dive](#deep-dive)
36
- - [Instructions](#instructions)
37
37
  - [What is MCP?](#what-is-mcp)
38
38
  - [License](#license)
39
39
 
@@ -43,15 +43,19 @@
43
43
  # Install globally
44
44
  npm install -g @sudosandwich/limps
45
45
 
46
- # Initialize a project
47
- limps init my-project --docs-path ~/Documents/my-planning-docs
46
+ # Initialize in your project
47
+ cd ~/Documents/my-planning-docs
48
+ limps init
48
49
 
49
- # Add to your AI assistant (picks up all registered projects)
50
- limps config sync-mcp --client cursor
51
- limps config sync-mcp --client claude-code
50
+ # Start the HTTP daemon
51
+ limps start
52
+
53
+ # Generate MCP client config
54
+ limps config print --client claude-code
55
+ # Copy the output to your MCP client config file
52
56
  ```
53
57
 
54
- Run this in the folder where you want to keep the docs and that's it. Your AI assistant now has access to your documents and nothing else. The folder can be anywhere—local, synced, or in a repo; limps does not require a git repository or a `plans/` directory.
58
+ That's it. Your AI assistant now has access to your documents via HTTP transport. The folder can be anywhere—local, synced, or in a repo; limps does not require a git repository or a `plans/` directory.
55
59
 
56
60
  ## Features
57
61
 
@@ -59,7 +63,7 @@ Run this in the folder where you want to keep the docs and that's it. Your AI as
59
63
  - **Plan + agent workflows** with status tracking and task scoring
60
64
  - **Next-task suggestions** with score breakdowns and bias tuning
61
65
  - **Sandboxed document processing** via `process_doc(s)` helpers
62
- - **Multi-client sync** for Cursor, Claude, Codex, and more
66
+ - **Multi-client support** for Cursor, Claude, Codex, and more
63
67
  - **Extensions** for domain-specific tooling (e.g., limps-headless)
64
68
  - **Knowledge graph** — Entity extraction, hybrid retrieval, conflict detection, and graph-based suggestions
65
69
  - **Health automation** — Staleness detection, code drift checks, status inference, and auto-fix proposals
@@ -81,7 +85,7 @@ Typical flow:
81
85
 
82
86
  1. Point limps at a docs directory (any folder, local or synced).
83
87
  2. Use CLI + MCP tools to create plans/docs, read the current status, update tasks, and close work when done.
84
- 3. Sync MCP configs so Cursor/Claude/Codex all see the same plans.
88
+ 3. Add the limps MCP entry to each client config so Cursor/Claude/Codex all see the same plans.
85
89
 
86
90
  Commands and tools I use most often:
87
91
 
@@ -100,7 +104,7 @@ Full lists are below in "CLI Commands" and "MCP Tools."
100
104
  Common setups:
101
105
 
102
106
  - **Single project**: One docs folder for a product.
103
- - **Multi-project**: Register multiple folders and switch with `limps config use`.
107
+ - **Multi-project**: Each project gets its own `.limps/config.json`; pass `--config` to target a specific one.
104
108
  - **Shared team folder**: Put plans in a shared location and review changes like code.
105
109
  - **Local-first**: Keep everything on disk, no hosted service required.
106
110
 
@@ -115,75 +119,96 @@ Key ideas:
115
119
 
116
120
  **The solution:** limps provides a standardized MCP interface that any tool can access. Your docs live in one place—a folder you choose. Use git (or any sync) if you want version control; limps is not tied to a repository.
117
121
 
118
- ### Supported Clients
119
-
120
- | Client | Config Location | Command |
121
- | ------------------ | -------------------------- | ------------------------------------------------ |
122
- | **Cursor** | `.cursor/mcp.json` (local) | `limps config sync-mcp --client cursor` |
123
- | **Claude Code** | `.mcp.json` (local) | `limps config sync-mcp --client claude-code` |
124
- | **Claude Desktop** | Global config | `limps config sync-mcp --client claude --global` |
125
- | **OpenAI Codex** | `~/.codex/config.toml` | `limps config sync-mcp --client codex --global` |
126
- | **ChatGPT** | Manual setup | `limps config sync-mcp --client chatgpt --print` |
127
-
128
- > **Note:** By default, `sync-mcp` writes to local/project configs. Use `--global` for user-level configs.
129
-
130
122
  ## Installation
131
123
 
132
124
  ```bash
133
125
  npm install -g @sudosandwich/limps
134
126
  ```
135
127
 
128
+ ## Upgrading from v2
129
+
130
+ v3 introduces major changes:
131
+
132
+ ### HTTP Transport (Breaking Change)
133
+
134
+ v3 uses **HTTP transport exclusively**. stdio transport has been removed.
135
+
136
+ **Migration steps:**
137
+
138
+ 1. **Start the HTTP daemon** for each project:
139
+ ```bash
140
+ limps start --config /path/to/.limps/config.json
141
+ ```
142
+
143
+ 2. **Update MCP client configs** — Replace stdio configs with HTTP transport:
144
+ ```json
145
+ {
146
+ "mcpServers": {
147
+ "limps-planning-myproject": {
148
+ "transport": {
149
+ "type": "http",
150
+ "url": "http://127.0.0.1:4269/mcp"
151
+ }
152
+ }
153
+ }
154
+ }
155
+ ```
156
+ Use `limps config print` to generate the correct snippet.
157
+
158
+ ### Per-Project Configs (Breaking Change)
159
+
160
+ v3 removes the centralized project registry. If you previously used `limps config add`, `config use`, or the `--project` flag:
161
+
162
+ 1. **Run `limps init`** in each project directory to create `.limps/config.json`.
163
+ 2. **Update MCP client configs** — Replace `--project <name>` with HTTP transport config (see above).
164
+ 3. **Remove environment variable** — `LIMPS_PROJECT` no longer exists. Use `MCP_PLANNING_CONFIG` to override config path.
165
+
166
+ **Removed commands:** `config list`, `config use`, `config add`, `config remove`, `config set`, `config discover`, `config migrate`, `config sync-mcp`, `serve`.
167
+
168
+ **Replaced by:** `limps init` + `limps start` + `limps config print`.
169
+
136
170
  ## Project Setup
137
171
 
138
172
  ### Initialize a New Project
139
173
 
140
174
  ```bash
141
- limps init my-project --docs-path ~/Documents/my-planning-docs
175
+ cd ~/Documents/my-planning-docs
176
+ limps init
142
177
  ```
143
178
 
144
- This creates a config file and outputs setup instructions.
179
+ This creates `.limps/config.json` in the current directory and prints MCP client setup instructions.
145
180
 
146
- ### Register an Existing Directory
181
+ You can also specify a path:
147
182
 
148
183
  ```bash
149
- limps config add my-project ~/Documents/existing-docs
184
+ limps init ~/Documents/my-planning-docs
150
185
  ```
151
186
 
152
187
  If the directory contains a `plans/` subdirectory, limps uses it. Otherwise, it indexes the entire directory.
153
188
 
154
189
  ### Multiple Projects
155
190
 
156
- ```bash
157
- # Register multiple projects
158
- limps init project-a --docs-path ~/docs/project-a
159
- limps init project-b --docs-path ~/docs/project-b
160
-
161
- # Switch between them
162
- limps config use project-a
191
+ Each project has its own `.limps/config.json`. Use `--config` to target a specific project:
163
192
 
164
- # Or use environment variable
165
- LIMPS_PROJECT=project-b limps list-plans
193
+ ```bash
194
+ limps list-plans --config ~/docs/project-b/.limps/config.json
166
195
  ```
167
196
 
168
197
  ## Client Setup
169
198
 
170
- ### Automatic (Recommended)
199
+ After running `limps init`, you need to add a limps entry to your MCP client's config file. Use `limps config print` to generate the correct snippet for your client, then paste it into the appropriate config file:
171
200
 
172
201
  ```bash
173
- # Add all projects to a client's local config
174
- limps config sync-mcp --client cursor
175
-
176
- # Preview changes without writing
177
- limps config sync-mcp --client cursor --print
202
+ limps config print --client cursor
203
+ limps config print --client claude-code
204
+ limps config print --client claude
205
+ ```
178
206
 
179
- # Write to global config instead of local
180
- limps config sync-mcp --client cursor --global
207
+ The output tells you exactly what JSON (or TOML) to add and where the config file lives.
181
208
 
182
- # Custom config path
183
- limps config sync-mcp --client cursor --path ./custom-mcp.json
184
- ```
209
+ ### Per-Client Examples
185
210
 
186
- ### Manual Setup
211
+ All clients connect to the HTTP daemon. Start the daemon first with `limps start`, then configure your client.
187
212
 
188
213
  <details>
189
214
  <summary><b>Cursor</b></summary>
@@ -193,9 +218,11 @@ Add to `.cursor/mcp.json` in your project:
193
218
  ```json
194
219
  {
195
220
  "mcpServers": {
196
- "limps": {
197
- "command": "limps",
198
- "args": ["serve", "--config", "/path/to/config.json"]
221
+ "limps-planning-myproject": {
222
+ "transport": {
223
+ "type": "http",
224
+ "url": "http://127.0.0.1:4269/mcp"
225
+ }
199
226
  }
200
227
  }
201
228
  }
@@ -211,9 +238,11 @@ Add to `.mcp.json` in your project root:
211
238
  ```json
212
239
  {
213
240
  "mcpServers": {
214
- "limps": {
215
- "command": "limps",
216
- "args": ["serve", "--config", "/path/to/config.json"]
241
+ "limps-planning-myproject": {
242
+ "transport": {
243
+ "type": "http",
244
+ "url": "http://127.0.0.1:4269/mcp"
245
+ }
217
246
  }
218
247
  }
219
248
  }
@@ -224,48 +253,16 @@ Add to `.mcp.json` in your project root:
224
253
  <details>
225
254
  <summary><b>Claude Desktop</b></summary>
226
255
 
227
- Claude Desktop runs in a sandbox—use `npx` instead of global binaries.
228
-
229
256
  Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
230
257
 
231
258
  ```json
232
259
  {
233
260
  "mcpServers": {
234
- "limps": {
235
- "command": "npx",
236
- "args": [
237
- "-y",
238
- "@sudosandwich/limps",
239
- "serve",
240
- "--config",
241
- "/path/to/config.json"
242
- ]
243
- }
244
- }
245
- }
246
- ```
247
-
248
- </details>
249
-
250
- <details>
251
- <summary><b>Windows (npx)</b></summary>
252
-
253
- On Windows, use `cmd /c` to run `npx`:
254
-
255
- ```json
256
- {
257
- "mcpServers": {
258
- "limps": {
259
- "command": "cmd",
260
- "args": [
261
- "/c",
262
- "npx",
263
- "-y",
264
- "@sudosandwich/limps",
265
- "serve",
266
- "--config",
267
- "C:\\path\\to\\config.json"
268
- ]
261
+ "limps-planning-myproject": {
262
+ "transport": {
263
+ "type": "http",
264
+ "url": "http://127.0.0.1:4269/mcp"
265
+ }
269
266
  }
270
267
  }
271
268
  }
@@ -279,9 +276,9 @@ On Windows, use `cmd /c` to run `npx`:
279
276
  Add to `~/.codex/config.toml`:
280
277
 
281
278
  ```toml
282
- [mcp_servers.limps]
283
- command = "limps"
284
- args = ["serve", "--config", "/path/to/config.json"]
279
+ [mcp_servers.limps-planning-myproject.transport]
280
+ type = "http"
281
+ url = "http://127.0.0.1:4269/mcp"
285
282
  ```
286
283
 
287
284
  </details>
@@ -289,26 +286,87 @@ args = ["serve", "--config", "/path/to/config.json"]
289
286
  <details>
290
287
  <summary><b>ChatGPT</b></summary>
291
288
 
292
- ChatGPT requires a remote MCP server over HTTPS. Deploy limps behind an MCP-compatible HTTP/SSE proxy.
289
+ ChatGPT requires a remote MCP server over HTTPS. Deploy limps behind an MCP-compatible HTTPS reverse proxy (nginx, Caddy, etc.) with authentication.
293
290
 
294
291
  In ChatGPT → Settings → Connectors → Add custom connector:
295
292
 
296
293
  - **Server URL**: `https://your-domain.example/mcp`
297
- - **Authentication**: Configure as needed
294
+ - **Authentication**: Configure as needed for your proxy
298
295
 
299
296
  Print setup instructions:
300
297
 
301
298
  ```bash
302
- limps config sync-mcp --client chatgpt --print
299
+ limps config print --client chatgpt
303
300
  ```
304
301
 
305
302
  </details>
306
303
 
307
304
  ## Transport
308
305
 
309
- - **Current**: stdio (local MCP server, launched by your client).
310
- - **Remote clients**: Use an MCP-compatible proxy for HTTPS clients (e.g., ChatGPT).
311
- - **Roadmap**: SSE/HTTP transports are planned but not implemented yet.
306
+ limps v3 uses **HTTP transport exclusively** via a persistent daemon. This allows multiple MCP clients to share a single server instance, avoiding file descriptor bloat from multiple stdio processes.
307
+
308
+ ### Start the HTTP daemon
309
+
310
+ ```bash
311
+ # Start the daemon
312
+ limps start --config /path/to/config.json
313
+
314
+ # Check status (shows uptime, sessions, PID)
315
+ limps status-server --config /path/to/config.json
316
+
317
+ # Stop the daemon
318
+ limps stop --config /path/to/config.json
319
+ ```
320
+
321
+ The daemon runs at `http://127.0.0.1:4269/mcp` by default. Use `limps config print` to generate the correct MCP client configuration:
322
+
323
+ ```bash
324
+ limps config print --client claude-code --config /path/to/config.json
325
+ ```
326
+
327
+ ### MCP Client Configuration
328
+
329
+ All clients use HTTP transport. Example config:
330
+
331
+ ```json
332
+ {
333
+ "mcpServers": {
334
+ "limps-planning-myproject": {
335
+ "transport": {
336
+ "type": "http",
337
+ "url": "http://127.0.0.1:4269/mcp"
338
+ }
339
+ }
340
+ }
341
+ }
342
+ ```
343
+
344
+ ### Server Config Options
345
+
346
+ Customize the HTTP server by adding a `"server"` section to your `config.json`:
347
+
348
+ | Option | Default | Description |
349
+ | ------------------ | -------------- | ---------------------------------------- |
350
+ | `port` | `4269` | HTTP listen port |
351
+ | `host` | `127.0.0.1` | Bind address |
352
+ | `maxSessions` | `100` | Maximum concurrent MCP sessions |
353
+ | `sessionTimeoutMs` | `1800000` | Session idle timeout in ms (30 min) |
354
+ | `corsOrigin` | `""` (none) | CORS origin (`""`, `"*"`, or a URL) |
355
+ | `maxBodySize` | `10485760` | Max request body in bytes (10 MB) |
356
+ | `rateLimit` | `100 req/min` | Rate limit per client IP |
357
+
358
+ Example custom server config:
359
+
360
+ ```json
361
+ {
362
+ "server": {
363
+ "port": 8080,
364
+ "host": "0.0.0.0"
365
+ }
366
+ }
367
+ ```
368
+
369
+ - **Remote clients**: Use an MCP-compatible HTTPS proxy for remote clients (e.g., ChatGPT).
312
370
 
313
371
  ## CLI Commands
314
372
 
@@ -324,12 +382,12 @@ limps next-task <plan> # Get highest-priority available task
324
382
  ### Project Management
325
383
 
326
384
  ```bash
327
- limps init <name> # Initialize new project
328
- limps serve # Start MCP server
329
- limps config list # Show registered projects
330
- limps config use <name> # Switch active project
385
+ limps init [path] # Initialize new project
386
+ limps start # Start HTTP daemon (required for MCP clients)
387
+ limps stop # Stop HTTP daemon
388
+ limps status-server # Show HTTP daemon status
331
389
  limps config show # Display current config
332
- limps config sync-mcp # Add projects to MCP clients
390
+ limps config print # Print MCP client config snippets
333
391
  ```
334
392
 
335
393
  ### Health & Automation
@@ -368,22 +426,16 @@ limps repair-plans [--fix] # Check/fix agent frontmatter
368
426
 
369
427
  ## Configuration
370
428
 
371
- Config location varies by OS:
372
-
373
- | OS | Path |
374
- | ------- | ------------------------------------------------- |
375
- | macOS | `~/Library/Application Support/limps/config.json` |
376
- | Linux | `~/.config/limps/config.json` |
377
- | Windows | `%APPDATA%\limps\config.json` |
429
+ Config lives at `.limps/config.json` in your project directory, created by `limps init`.
378
430
 
379
431
  ### Config Options
380
432
 
381
433
  ```json
382
434
  {
383
- "plansPath": "~/Documents/my-plans",
384
- "docsPaths": ["~/Documents/my-plans"],
435
+ "plansPath": "./plans",
436
+ "docsPaths": ["."],
385
437
  "fileExtensions": [".md"],
386
- "dataPath": "~/Library/Application Support/limps/data",
438
+ "dataPath": ".limps/data",
387
439
  "extensions": ["@sudosandwich/limps-headless"],
388
440
  "tools": {
389
441
  "allowlist": ["list_docs", "search_docs"]
@@ -404,6 +456,7 @@ Config location varies by OS:
404
456
  | `tools` | Tool allowlist/denylist filtering |
405
457
  | `extensions` | Extension packages to load |
406
458
  | `scoring` | Task prioritization weights and biases |
459
+ | `server` | HTTP daemon settings (port, host, CORS, sessions, timeout) |
407
460
  | `graph` | Knowledge graph settings (e.g., entity extraction options) |
408
461
  | `retrieval` | Search recipe configuration for hybrid retrieval |
409
462
 
@@ -411,7 +464,7 @@ Config location varies by OS:
411
464
 
412
465
  | Variable | Description | Example |
413
466
  | ---------------------- | ---------------------------------------------------------- | ------------------------------------------------- |
414
- | `LIMPS_PROJECT` | Select active project for CLI commands | `LIMPS_PROJECT=project-b limps list-plans` |
467
+ | `MCP_PLANNING_CONFIG` | Path to config file (overrides default discovery) | `MCP_PLANNING_CONFIG=./my-config.json limps serve`|
415
468
  | `LIMPS_ALLOWED_TOOLS` | Comma-separated allowlist; only these tools are registered | `LIMPS_ALLOWED_TOOLS="list_docs,search_docs"` |
416
469
  | `LIMPS_DISABLED_TOOLS` | Comma-separated denylist; tools to hide | `LIMPS_DISABLED_TOOLS="process_doc,process_docs"` |
417
470