@ainyc/canonry 1.3.0 → 1.4.1

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.
package/README.md CHANGED
@@ -74,7 +74,9 @@ canonry export <project> # Export project as YAML
74
74
  ### Config-as-Code
75
75
 
76
76
  ```bash
77
- canonry apply canonry.yaml # Declarative project apply
77
+ canonry apply canonry.yaml # Single project
78
+ canonry apply projects/*.yaml # Multiple files
79
+ canonry apply multi-projects.yaml # Multi-doc YAML (---separated)
78
80
  ```
79
81
 
80
82
  ### Scheduling and Notifications
@@ -118,10 +120,11 @@ spec:
118
120
  - local
119
121
  ```
120
122
 
121
- Apply with the CLI or the API:
123
+ Apply with the CLI or the API. Multiple projects can live in one file separated by `---`, or pass multiple files:
122
124
 
123
125
  ```bash
124
126
  canonry apply canonry.yaml
127
+ canonry apply project-a.yaml project-b.yaml
125
128
  ```
126
129
 
127
130
  ```bash
@@ -199,7 +202,7 @@ Access it at [http://localhost:4100](http://localhost:4100) after running `canon
199
202
  ## Requirements
200
203
 
201
204
  - Node.js >= 20
202
- - At least one provider API key (or a local LLM endpoint)
205
+ - At least one provider API key to run visibility sweeps (configurable after startup via the dashboard or CLI)
203
206
  - A C++ toolchain for building `better-sqlite3` native bindings (only needed if prebuilt binaries aren't available for your platform)
204
207
 
205
208
  ### Native dependency setup
@@ -266,44 +269,51 @@ No CORS configuration is required for this Docker setup. The dashboard and API a
266
269
 
267
270
  Use the **repo root** as the service root. `@ainyc/canonry` depends on shared workspace packages under `packages/*`, so deploying from a subdirectory will break the build.
268
271
 
269
- ### Hosted environment variables
272
+ Canonry runs as a **single service** -- the API, web dashboard, and job scheduler all run in one process. No provider API keys are required at startup; configure them later through the web dashboard.
270
273
 
271
- Set at least one provider:
274
+ ### Railway
272
275
 
273
- - `GEMINI_API_KEY`
274
- - `OPENAI_API_KEY`
275
- - `ANTHROPIC_API_KEY`
276
- - `LOCAL_BASE_URL` (plus optional `LOCAL_API_KEY` and `LOCAL_MODEL`)
276
+ [![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/deploy/ENziH9?referralCode=0vODBs&utm_medium=integration&utm_source=template&utm_campaign=generic)
277
277
 
278
- Set these for hosted persistence/bootstrap:
278
+ **One-click deploy:**
279
279
 
280
- - `CANONRY_CONFIG_DIR=/data/canonry`
281
- - Optional `CANONRY_API_KEY=cnry_...` to pin the generated API key instead of letting bootstrap create one
282
- - Optional `CANONRY_DATABASE_PATH=/data/canonry/data.db`
280
+ 1. Click the button above (or create a service from this repo manually)
281
+ 2. Railway builds the `Dockerfile` automatically -- no custom build or start commands needed
282
+ 3. Right-click the service and select **Create Volume**, set the mount path to `/data`
283
+ 4. Generate a public domain under **Settings > Networking** (port `8080`)
284
+ 5. Open the dashboard and follow the setup wizard to configure providers and create your first project
283
285
 
284
- The hosted bootstrap command is idempotent. It creates `config.yaml`, creates or migrates the SQLite database, and inserts the API key row the server expects.
286
+ **Manual setup:**
285
287
 
286
- ### Railway
288
+ 1. Create a new service from this GitHub repo
289
+ 2. **Dockerfile Path**: `Dockerfile` (the default)
290
+ 3. **Custom Build Command**: leave empty
291
+ 4. **Custom Start Command**: leave empty
292
+ 5. Add a **Volume** mounted at `/data` (right-click the service > Create Volume)
293
+ 6. Generate a public domain under **Settings > Networking**
294
+ 7. No environment variables are required to start -- the bootstrap creates a SQLite database and API key automatically
287
295
 
288
- Create one service from this repo using the checked-in `Dockerfile`, then attach a persistent volume mounted at `/data`.
296
+ **Optional environment variables:**
289
297
 
290
- - Add the provider and Canonry env vars in the service's **Variables** tab. Railway can also bulk import them from `.env` files or the Raw Editor.
291
- - Leave the start command unset so Railway uses the image `ENTRYPOINT`.
292
- - Health check: `/health`
293
- - Recommended env: `CANONRY_CONFIG_DIR=/data/canonry`
298
+ | Variable | Description |
299
+ |----------|-------------|
300
+ | `GEMINI_API_KEY` | Google Gemini provider key |
301
+ | `OPENAI_API_KEY` | OpenAI provider key |
302
+ | `ANTHROPIC_API_KEY` | Anthropic/Claude provider key |
303
+ | `LOCAL_BASE_URL` | Local LLM endpoint (Ollama, LM Studio, etc.) |
304
+ | `CANONRY_API_KEY` | Pin a specific API key instead of auto-generating one |
294
305
 
295
- SQLite should live on the mounted volume, so keep the service to a single instance.
306
+ Provider keys can also be configured at any time via the Settings page in the dashboard.
307
+
308
+ Keep the service to a **single replica** -- SQLite does not support concurrent writers.
296
309
 
297
310
  ### Render
298
311
 
299
312
  Create one **Web Service** from this repo with runtime **Docker**, then attach a persistent disk mounted at `/data`.
300
313
 
301
- - Add the provider and Canonry env vars in the service's **Environment** settings or an Environment Group.
302
- - Leave the start command unset so Render uses the image `ENTRYPOINT`.
314
+ - Leave build and start commands unset so Render uses the image `ENTRYPOINT`.
303
315
  - Health check path: `/health`
304
- - Recommended env: `CANONRY_CONFIG_DIR=/data/canonry`
305
-
306
- Render makes Docker service env vars available at runtime and also exposes them to Docker builds as build args. This image does not use `ARG` for provider secrets, so those values are only consumed at runtime by the entry script and Canonry process.
316
+ - No environment variables are required at startup. Configure providers via the dashboard.
307
317
 
308
318
  SQLite should live on the persistent disk, so keep the service to a single instance.
309
319