From 47401419856ff1fe375274f05d9cb96b947dc855 Mon Sep 17 00:00:00 2001 From: Lan_zhijiang Date: Mon, 21 Sep 2026 23:56:09 +0800 Subject: [PATCH 01/22] =?UTF-8?q?docs(guide):=20=E6=94=B6=E6=95=9B?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=85=A5=E9=97=A8=E4=BF=A1=E6=81=AF=E6=9E=B6?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- website/.vitepress/config.mts | 44 +++++++++------- website/README.md | 10 ++-- website/content/en/getting-started.md | 18 ++++--- website/content/en/guide/first-source.md | 5 +- website/content/en/guide/index-schedule.md | 36 +++++++++++++ website/content/en/guide/schedules.md | 51 +++++-------------- website/content/en/guide/search.md | 17 ++++--- website/content/en/self-hosted/advanced.md | 2 +- .../content/en/self-hosted/getting-started.md | 25 +++++---- website/content/en/self-hosted/heroku-neon.md | 2 +- website/content/en/self-hosted/index.md | 11 ++-- website/content/en/self-hosted/render-neon.md | 2 +- 12 files changed, 129 insertions(+), 94 deletions(-) create mode 100644 website/content/en/guide/index-schedule.md diff --git a/website/.vitepress/config.mts b/website/.vitepress/config.mts index 02c527f..aba327d 100644 --- a/website/.vitepress/config.mts +++ b/website/.vitepress/config.mts @@ -56,16 +56,22 @@ export default defineConfig({ ], sidebar: { '/': [ - { text: 'Getting Started', link: '/getting-started' }, { text: 'User Guide', items: [ - { text: 'Connect to Your Instance', link: '/guide/connect' }, + { + text: 'Getting Started', + link: '/getting-started', + items: [ + { text: 'Connect to Your Instance', link: '/guide/connect' }, + { text: 'Prepare an Extension', link: '/guide/extensions' }, + { text: 'Collect Your First Source', link: '/guide/first-source' }, + { text: 'Run a Collection', link: '/guide/collect' }, + { text: 'Find What You Saved', link: '/guide/search' }, + { text: 'Use Your Information', link: '/guide/daily-use' }, + ], + }, { text: 'CLI / Agent Connection', link: '/guide/connect-cli' }, - { text: 'Prepare an Extension', link: '/guide/extensions' }, - { text: 'Collect Your First Source', link: '/guide/first-source' }, - { text: 'Find What You Saved', link: '/guide/search' }, - { text: 'Schedule Collection and Indexing', link: '/guide/schedules' }, { text: 'Connect More Sources', link: '/guide/sources', @@ -76,27 +82,27 @@ export default defineConfig({ { text: 'Telegram Inbox', link: '/guide/sources/telegram' }, { text: 'Twitter / X Bookmarks', link: '/guide/sources/twitter' }, { text: 'Memos-Compatible Capture', link: '/guide/sources/memos' }, - { text: 'Run a Collection', link: '/guide/collect' }, ], }, + { text: 'Schedule Collection', link: '/guide/schedules' }, + { text: 'Schedule Index Maintenance', link: '/guide/index-schedule' }, { - text: 'Use Your Information', - link: '/guide/daily-use', + text: 'Sinks', items: [{ text: 'Sinks: ChatGPT via MCP', link: '/guide/sinks/chatgpt' }], }, + { + text: 'Self-Hosted', + link: '/self-hosted/', + items: [ + { text: 'Set Up an Instance', link: '/self-hosted/getting-started' }, + { text: 'Render and Neon', link: '/self-hosted/render-neon' }, + { text: 'Heroku and Neon', link: '/self-hosted/heroku-neon' }, + { text: 'Advanced Self-Hosting', link: '/self-hosted/advanced' }, + ], + }, { text: 'Troubleshooting', link: '/guide/troubleshooting' }, ], }, - { - text: 'Self-Hosted', - items: [ - { text: 'Overview', link: '/self-hosted/' }, - { text: 'Getting Started', link: '/self-hosted/getting-started' }, - { text: 'Render and Neon', link: '/self-hosted/render-neon' }, - { text: 'Heroku and Neon', link: '/self-hosted/heroku-neon' }, - { text: 'Advanced', link: '/self-hosted/advanced' }, - ], - }, ], '/developer/': [ { diff --git a/website/README.md b/website/README.md index 1b8d8ec..43d0b89 100644 --- a/website/README.md +++ b/website/README.md @@ -30,13 +30,17 @@ pnpm --dir website audit --audit-level high - Only English is active until the Chinese route set is complete or the locale switch has a deliberate fallback. - `/getting-started` owns the application-level What, Why, and How introduction. -- `/self-hosted/` contains its Getting Started path, Render/Heroku quick-deployment guides, and - Advanced guide. Its Getting Started page orders the journey rather than duplicating procedures. +- `/getting-started` and its sidebar children form one linear path inside the User Guide. Advanced + topics such as more sources and self-hosting remain separate User Guide sections. +- `/self-hosted/` contains instance setup, Render/Heroku quick-deployment guides, and the Advanced + guide. It is not a second Getting Started hierarchy. - `/guide/` leaf pages own reusable client, collection, retrieval, scheduling, source, daily-use, and troubleshooting procedures. Link to these pages from any onboarding path rather than to sections buried inside the self-hosted walkthrough. - `/guide/sources` selects independent source tutorials under `/guide/sources/`; `/guide/collect` - owns shared collection and Job observation. Memos is documented separately as write-in capture. + owns shared collection and Job observation. Collection scheduling and index-maintenance scheduling + stay on separate pages; indexing is retrieval support, not Organization. Memos is documented + separately as write-in capture. - `/developer/` separates ecosystem integration guidance under `/developer/ecosystem/` from architecture and core contribution guidance; `/about/` describes the project. - Section indexes use trailing-slash routes, such as `/developer/`. diff --git a/website/content/en/getting-started.md b/website/content/en/getting-started.md index eec100f..2d6447b 100644 --- a/website/content/en/getting-started.md +++ b/website/content/en/getting-started.md @@ -47,9 +47,9 @@ as the [Web app](https://app.inkcre.dev/settings), connects to that instance. Op does not create an instance for you. - **Run your own instance:** choose [Self-Hosted](/self-hosted/). Its - [Getting Started](/self-hosted/getting-started) guide walks through quick deployment and your - first collection. [Advanced](/self-hosted/advanced) covers manual deployment and operating it on - infrastructure you choose. + [setup guide](/self-hosted/getting-started) walks through quick deployment before you rejoin this + journey. [Advanced Self-Hosting](/self-hosted/advanced) covers manual deployment and operating it + on infrastructure you choose. - **Already have access to an instance:** obtain connection details from the person operating it, then [connect the Web app or your Agent](/guide/connect), [collect a source](/guide/first-source), and [connect your everyday tools](/guide/daily-use). Skip the deployment steps. Only connect @@ -70,7 +70,8 @@ permissions each requires. Follow [Find What You Saved](/guide/search) to maintain the search index, search for something you remember, and open a result. Then [Use Your Information](/guide/daily-use) to connect the Web app or -a tool you already use. These guides work independently of your deployment choice. +a tool you already use. This completes the linear Getting Started path, independently of your +deployment choice. AI organization and semantic retrieval are optional next steps with their own provider and maintenance setup. InKCre does not automatically configure a daily digest or Telegram/email push @@ -79,6 +80,9 @@ notifications: making information available in your tools is distinct from proac ## Your next step If you do not have an instance yet, open [Self-Hosted](/self-hosted/) and choose a deployment path. -If you want to understand or contribute to the implementation, use the -[Developer Guide](/developer/) instead. For the project's values and direction, read -[About InKCre](/about/). +After the first-use path works, the User Guide covers optional topics such as +[more sources](/guide/sources), [collection schedules](/guide/schedules), +[index-maintenance schedules](/guide/index-schedule), and +[advanced self-hosting](/self-hosted/advanced). If you want to understand or contribute to the +implementation, use the [Developer Guide](/developer/) instead. For the project's values and +direction, read [About InKCre](/about/). diff --git a/website/content/en/guide/first-source.md b/website/content/en/guide/first-source.md index 6590c23..7c80077 100644 --- a/website/content/en/guide/first-source.md +++ b/website/content/en/guide/first-source.md @@ -30,10 +30,11 @@ Python-only collector; the browser does not need to run that Extension itself. 2. [Run a Collection](/guide/collect) and wait for the returned **Job ID** to finish. These are different IDs: the Source persists across runs; each Job represents one run. 3. [Find What You Saved](/guide/search): maintain the lexical index and search for a known item. -4. Only after that works, [schedule collection and indexing](/guide/schedules). **Done means you retrieved a real item**, not just that installation or a Job succeeded. A successful empty collection may be normal; each source guide explains what is eligible for collection. -Next: [Connect More Sources](/guide/sources), or [Use Your Information](/guide/daily-use). +Next: [Use Your Information](/guide/daily-use). After the Getting Started path works, you can +[connect more sources](/guide/sources), [schedule collection](/guide/schedules), or +[schedule index maintenance](/guide/index-schedule). diff --git a/website/content/en/guide/index-schedule.md b/website/content/en/guide/index-schedule.md new file mode 100644 index 0000000..6edc2fd --- /dev/null +++ b/website/content/en/guide/index-schedule.md @@ -0,0 +1,36 @@ +--- +title: Schedule Index Maintenance +outline: false +description: Keep the lexical search index current independently from collection and organization. +--- + +# Schedule Index Maintenance + +Index maintenance makes existing info-base content available to lexical search. It is application +support: it does not collect information and it does not organize or author meaning in the +info-base. + +First complete [one collection](/guide/collect) and [a successful search](/guide/search). Ask your +operator or trusted Agent to check whether the instance already has an index-maintenance schedule; +create only one if it does not: + +```sh +inkcre-cli cron create --job-type core.feature_retrieval.lexical.maintain.v1 --input-json '{"schedule":"*/10 * * * *","job_parameters":{}}' +``` + +This five-field schedule runs every ten minutes while Core is available. Inspect the returned Cron +and its `last_job`; maintenance processes a bounded batch, and the Job carries its own result and +diagnostics. Avoid duplicate schedules. Sleeping hosts miss occurrences and do not automatically +catch up. + +To pause future maintenance while keeping the Cron record, run: + +```sh +inkcre-cli cron disable ID +``` + +Replace `ID` with the actual Cron ID. Pausing index maintenance does not stop collection or remove +stored information. Likewise, a [collection schedule](/guide/schedules) does not maintain this +index. + +Next: [Connect More Sources](/guide/sources), or [Use Your Information](/guide/daily-use). diff --git a/website/content/en/guide/schedules.md b/website/content/en/guide/schedules.md index d4430dc..18d36ee 100644 --- a/website/content/en/guide/schedules.md +++ b/website/content/en/guide/schedules.md @@ -1,10 +1,10 @@ --- -title: Schedule Collection and Indexing +title: Schedule Collection outline: false -description: Keep sources and search indexes current with explicit schedules. +description: Keep information sources current with explicit collection schedules. --- -# Schedule Collection and Indexing +# Schedule Collection Start with a [connected interface](/guide/connect). Choose Web for your own setup, or CLI / Agent for terminal instructions. @@ -26,20 +26,12 @@ First complete [a manual collection](/guide/collect) and [find a known item](/gu Existing Jobs and collected information remain. An Agent can instead disable a Cron through the CLI if you want to retain it for later re-enabling. -## Keep the search index current +This schedule only collects from the Source. It does not maintain a search index or run +Organization. Configure [index maintenance separately](/guide/index-schedule) if you want newly +collected items to become searchable without a manual maintenance Job. -The Source schedule does **not** maintain the lexical index. Ask your operator or Agent to create -one separate index-maintenance schedule if the instance does not already have it: - -```sh -inkcre-cli cron create --job-type core.feature_retrieval.lexical.maintain.v1 --input-json '{"schedule":"*/10 * * * *","job_parameters":{}}' -``` - -This is currently a CLI operation. Inspect the resulting Cron and its `last_job`, and avoid -duplicate schedules. Independent indexing means newly collected items may not be searchable -immediately. - -Next: [Connect More Sources](/guide/sources). +Next: [Schedule Index Maintenance](/guide/index-schedule), or +[Connect More Sources](/guide/sources). diff --git a/website/content/en/guide/search.md b/website/content/en/guide/search.md index ac3e18f..80394c3 100644 --- a/website/content/en/guide/search.md +++ b/website/content/en/guide/search.md @@ -25,8 +25,9 @@ inkcre-cli job wait JOB_ID --for 30s ``` Replace `JOB_ID` with the returned number. Inspect its state and diagnostics; maintenance handles a -bounded batch, so a larger import can need another run. An [index schedule](/guide/schedules) avoids -needing this manual step for every collection. +bounded batch, so a larger import can need another run. An +[index-maintenance schedule](/guide/index-schedule) avoids needing this manual step for every +collection. 2. Open **Info Base** in client-web. Enter a distinctive phrase from the collected item and search. 3. Select a result, inspect its details, use **View content** where supported, and follow its graph @@ -37,7 +38,7 @@ needing this manual step for every collection. separate; an AI key is not required for lexical search. Source-derived relationships do not mean that InKCre has automatically summarized or reorganized everything with AI. -Next: [Schedule Collection and Indexing](/guide/schedules). +Next: [Use Your Information](/guide/daily-use). diff --git a/website/content/en/self-hosted/advanced.md b/website/content/en/self-hosted/advanced.md index cec8c35..6e26515 100644 --- a/website/content/en/self-hosted/advanced.md +++ b/website/content/en/self-hosted/advanced.md @@ -8,7 +8,7 @@ description: This guide is for people who want to manage the runtime directly or move beyond the fork-based quick deployments. If you want the shortest route to your first collected information, start with -[Self-Hosted Getting Started](/self-hosted/getting-started). +[Set Up a Self-Hosted Instance](/self-hosted/getting-started). ## Manual deployment diff --git a/website/content/en/self-hosted/getting-started.md b/website/content/en/self-hosted/getting-started.md index f6d3d3c..afd4d36 100644 --- a/website/content/en/self-hosted/getting-started.md +++ b/website/content/en/self-hosted/getting-started.md @@ -1,12 +1,13 @@ --- -title: Getting Started -description: Follow the self-hosted path from deployment to collecting and using your information. +title: Set Up a Self-Hosted Instance +description: Deploy your own instance, then join the shared user journey for collection and use. --- -# Self-Hosted Getting Started +# Set Up a Self-Hosted Instance -This is the [Self-Hosted](/self-hosted/) path through InKCre: you will operate your own instance. -For the application's What, Why, and How, begin with [Getting Started](/getting-started). +This [Self-Hosted](/self-hosted/) guide gives you an instance that you operate. For the +application's What, Why, and linear first-use journey, begin with +[Getting Started](/getting-started). You will use the Web app for interactive setup. A trusted Agent or operator can handle the remaining terminal-only operations, such as installing Core collectors and scheduling indexing. No InKCre @@ -37,15 +38,17 @@ Follow these shared user guides in order. If you already have an instance, start **Checkpoint:** you can retrieve a real item from your source. Collection and indexing are separate; neither requires you to set up AI organization first. -## 3. Make it useful day to day +## 3. Continue through the User Guide -- [Schedule collection and indexing](/guide/schedules) after the manual steps work. +Finish the linear Getting Started journey with [Use Your Information](/guide/daily-use). After the +manual steps work, choose the separate User Guide topics that match your needs: + +- [Schedule collection](/guide/schedules). +- [Schedule index maintenance](/guide/index-schedule). - [Connect more sources](/guide/sources), such as GitHub saves, email, and Telegram messages. -- [Use your information](/guide/daily-use) from the Web app, a terminal, or a trusted assistant. - This also explains optional AI organization and MCP access. +- [Advanced Self-Hosting](/self-hosted/advanced) for backups, upgrades, and manual operations. These paths make information available on demand. They do not configure automatic daily digests or Telegram/email push notifications. Hosting that sleeps cannot guarantee continuous collection. -If a step fails, use [Troubleshooting](/guide/troubleshooting). For backups, upgrades, and ongoing -hosting responsibilities, return to [Advanced Self-Hosting](/self-hosted/advanced). +If a step fails, use [Troubleshooting](/guide/troubleshooting). diff --git a/website/content/en/self-hosted/heroku-neon.md b/website/content/en/self-hosted/heroku-neon.md index a3a8a72..09e8368 100644 --- a/website/content/en/self-hosted/heroku-neon.md +++ b/website/content/en/self-hosted/heroku-neon.md @@ -53,4 +53,4 @@ public fork. This deployment does not isolate different users from one another. information and trusted devices. Next: [Connect the CLI](/guide/connect-cli), or return to the -[self-hosted walkthrough](/self-hosted/getting-started). +[self-hosted setup guide](/self-hosted/getting-started). diff --git a/website/content/en/self-hosted/index.md b/website/content/en/self-hosted/index.md index a53bfc0..1dfbde8 100644 --- a/website/content/en/self-hosted/index.md +++ b/website/content/en/self-hosted/index.md @@ -10,8 +10,8 @@ sources it collects, and which clients can access it. You also manage credential availability, backups, and updates. This section is for users choosing that responsibility. For the application-level introduction and access choices, start with -[Getting Started](/getting-started). Here, choose between the step-by-step -[self-hosted walkthrough](/self-hosted/getting-started) and +[Getting Started](/getting-started). Self-hosting is a separate User Guide topic: use the +[instance setup guide](/self-hosted/getting-started) for a fork-based deployment, or [Advanced Self-Hosting](/self-hosted/advanced) for manual deployment and operations. ## Choose a deployment path @@ -29,8 +29,9 @@ plans need particular care if you want continuous collection. ## From an empty instance to useful information -Follow [Getting Started](/self-hosted/getting-started) to deploy an instance, collect one RSS feed, -find a saved item, and add the sources you use. The guide then connects the instance to the Web app -and everyday tools. It assumes basic technical familiarity but no InKCre development setup. +Follow [Set Up a Self-Hosted Instance](/self-hosted/getting-started) to deploy an instance, then +return to the shared [Getting Started](/getting-started) path to connect, collect one source, find a +saved item, and use it. The setup guide assumes basic technical familiarity but no InKCre +development setup. If you already operate a compatible instance, begin at [connecting the CLI](/guide/connect-cli). diff --git a/website/content/en/self-hosted/render-neon.md b/website/content/en/self-hosted/render-neon.md index b3d1edc..9572470 100644 --- a/website/content/en/self-hosted/render-neon.md +++ b/website/content/en/self-hosted/render-neon.md @@ -55,4 +55,4 @@ public fork. This deployment does not isolate different users from one another. information and trusted devices. Next: [Connect the CLI](/guide/connect-cli), or return to the -[self-hosted walkthrough](/self-hosted/getting-started). +[self-hosted setup guide](/self-hosted/getting-started). From 773d1b6667e71482f6f465bb090fc8e3e2a53fb3 Mon Sep 17 00:00:00 2001 From: Lan_zhijiang Date: Tue, 22 Sep 2026 00:08:37 +0800 Subject: [PATCH 02/22] =?UTF-8?q?fix(preview):=20=E5=85=B3=E8=81=94?= =?UTF-8?q?=E7=B2=BE=E7=A1=AE=20PR=20deployment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/pages-preview.yml | 46 +++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pages-preview.yml b/.github/workflows/pages-preview.yml index f2b415a..9d41b1c 100644 --- a/.github/workflows/pages-preview.yml +++ b/.github/workflows/pages-preview.yml @@ -81,10 +81,32 @@ jobs: statuses: write runs-on: ubuntu-latest timeout-minutes: 15 - environment: - name: preview - url: ${{ steps.pages.outputs.pages-deployment-alias-url }} steps: + - name: Create the exact pull-request deployment + id: deployment + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + PREVIEW_HEAD_SHA: ${{ needs.identity.outputs.head_sha }} + with: + script: | + const { data: deployment } = await github.rest.repos.createDeployment({ + ...context.repo, + ref: process.env.PREVIEW_HEAD_SHA, + environment: 'preview', + auto_merge: false, + required_contexts: [], + transient_environment: true, + production_environment: false, + description: 'Cloudflare Pages pull-request preview', + }) + core.setOutput('deployment_id', String(deployment.id)) + await github.rest.repos.createDeploymentStatus({ + ...context.repo, + deployment_id: deployment.id, + state: 'in_progress', + log_url: `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`, + }) + - name: Mark the pull-request preview pending uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 env: @@ -159,6 +181,24 @@ jobs: CLOUDFLARE_PAGES_DEPLOYMENT_URL: ${{ steps.pages.outputs.pages-deployment-alias-url }} INKCRE_PAGES_SMOKE_MODE: preview + - name: Report the exact pull-request deployment + if: ${{ always() && steps.deployment.outputs.deployment_id != '' }} + uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 + env: + DEPLOYMENT_ID: ${{ steps.deployment.outputs.deployment_id }} + PREVIEW_RESULT: ${{ job.status }} + PREVIEW_URL: ${{ steps.pages.outputs.pages-deployment-alias-url }} + with: + script: | + const succeeded = process.env.PREVIEW_RESULT === 'success' + await github.rest.repos.createDeploymentStatus({ + ...context.repo, + deployment_id: Number(process.env.DEPLOYMENT_ID), + state: succeeded ? 'success' : 'failure', + log_url: `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`, + ...(process.env.PREVIEW_URL ? { environment_url: process.env.PREVIEW_URL } : {}), + }) + - name: Report the preview result on the pull-request commit if: ${{ always() }} uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 From ef4e714620b9ce2eec7f9e8e2ee962174688ecd3 Mon Sep 17 00:00:00 2001 From: Lan_zhijiang Date: Tue, 22 Sep 2026 00:12:24 +0800 Subject: [PATCH 03/22] =?UTF-8?q?docs(self-hosted):=20=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E5=AE=9E=E4=BE=8B=E8=AE=BE=E7=BD=AE=E8=B7=AF=E7=94=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- website/.vitepress/config.mts | 2 +- website/content/en/getting-started.md | 6 +++--- website/content/en/self-hosted/advanced.md | 2 +- website/content/en/self-hosted/heroku-neon.md | 2 +- website/content/en/self-hosted/index.md | 9 ++++----- website/content/en/self-hosted/render-neon.md | 2 +- .../en/self-hosted/{getting-started.md => setup.md} | 0 7 files changed, 11 insertions(+), 12 deletions(-) rename website/content/en/self-hosted/{getting-started.md => setup.md} (100%) diff --git a/website/.vitepress/config.mts b/website/.vitepress/config.mts index aba327d..11db8f3 100644 --- a/website/.vitepress/config.mts +++ b/website/.vitepress/config.mts @@ -94,7 +94,7 @@ export default defineConfig({ text: 'Self-Hosted', link: '/self-hosted/', items: [ - { text: 'Set Up an Instance', link: '/self-hosted/getting-started' }, + { text: 'Set Up an Instance', link: '/self-hosted/setup' }, { text: 'Render and Neon', link: '/self-hosted/render-neon' }, { text: 'Heroku and Neon', link: '/self-hosted/heroku-neon' }, { text: 'Advanced Self-Hosting', link: '/self-hosted/advanced' }, diff --git a/website/content/en/getting-started.md b/website/content/en/getting-started.md index 2d6447b..4f1c4cf 100644 --- a/website/content/en/getting-started.md +++ b/website/content/en/getting-started.md @@ -47,9 +47,9 @@ as the [Web app](https://app.inkcre.dev/settings), connects to that instance. Op does not create an instance for you. - **Run your own instance:** choose [Self-Hosted](/self-hosted/). Its - [setup guide](/self-hosted/getting-started) walks through quick deployment before you rejoin this - journey. [Advanced Self-Hosting](/self-hosted/advanced) covers manual deployment and operating it - on infrastructure you choose. + [setup guide](/self-hosted/setup) walks through quick deployment before you rejoin this journey. + [Advanced Self-Hosting](/self-hosted/advanced) covers manual deployment and operating it on + infrastructure you choose. - **Already have access to an instance:** obtain connection details from the person operating it, then [connect the Web app or your Agent](/guide/connect), [collect a source](/guide/first-source), and [connect your everyday tools](/guide/daily-use). Skip the deployment steps. Only connect diff --git a/website/content/en/self-hosted/advanced.md b/website/content/en/self-hosted/advanced.md index 6e26515..cc5fdee 100644 --- a/website/content/en/self-hosted/advanced.md +++ b/website/content/en/self-hosted/advanced.md @@ -8,7 +8,7 @@ description: This guide is for people who want to manage the runtime directly or move beyond the fork-based quick deployments. If you want the shortest route to your first collected information, start with -[Set Up a Self-Hosted Instance](/self-hosted/getting-started). +[Set Up a Self-Hosted Instance](/self-hosted/setup). ## Manual deployment diff --git a/website/content/en/self-hosted/heroku-neon.md b/website/content/en/self-hosted/heroku-neon.md index 09e8368..16c2c8c 100644 --- a/website/content/en/self-hosted/heroku-neon.md +++ b/website/content/en/self-hosted/heroku-neon.md @@ -53,4 +53,4 @@ public fork. This deployment does not isolate different users from one another. information and trusted devices. Next: [Connect the CLI](/guide/connect-cli), or return to the -[self-hosted setup guide](/self-hosted/getting-started). +[self-hosted setup guide](/self-hosted/setup). diff --git a/website/content/en/self-hosted/index.md b/website/content/en/self-hosted/index.md index 1dfbde8..6afd8ba 100644 --- a/website/content/en/self-hosted/index.md +++ b/website/content/en/self-hosted/index.md @@ -11,7 +11,7 @@ availability, backups, and updates. This section is for users choosing that resp For the application-level introduction and access choices, start with [Getting Started](/getting-started). Self-hosting is a separate User Guide topic: use the -[instance setup guide](/self-hosted/getting-started) for a fork-based deployment, or +[instance setup guide](/self-hosted/setup) for a fork-based deployment, or [Advanced Self-Hosting](/self-hosted/advanced) for manual deployment and operations. ## Choose a deployment path @@ -29,9 +29,8 @@ plans need particular care if you want continuous collection. ## From an empty instance to useful information -Follow [Set Up a Self-Hosted Instance](/self-hosted/getting-started) to deploy an instance, then -return to the shared [Getting Started](/getting-started) path to connect, collect one source, find a -saved item, and use it. The setup guide assumes basic technical familiarity but no InKCre -development setup. +Follow [Set Up a Self-Hosted Instance](/self-hosted/setup) to deploy an instance, then return to the +shared [Getting Started](/getting-started) path to connect, collect one source, find a saved item, +and use it. The setup guide assumes basic technical familiarity but no InKCre development setup. If you already operate a compatible instance, begin at [connecting the CLI](/guide/connect-cli). diff --git a/website/content/en/self-hosted/render-neon.md b/website/content/en/self-hosted/render-neon.md index 9572470..b095563 100644 --- a/website/content/en/self-hosted/render-neon.md +++ b/website/content/en/self-hosted/render-neon.md @@ -55,4 +55,4 @@ public fork. This deployment does not isolate different users from one another. information and trusted devices. Next: [Connect the CLI](/guide/connect-cli), or return to the -[self-hosted setup guide](/self-hosted/getting-started). +[self-hosted setup guide](/self-hosted/setup). diff --git a/website/content/en/self-hosted/getting-started.md b/website/content/en/self-hosted/setup.md similarity index 100% rename from website/content/en/self-hosted/getting-started.md rename to website/content/en/self-hosted/setup.md From caa27ef0709de5f5674321dd112d93c93fdd67db Mon Sep 17 00:00:00 2001 From: Lan_zhijiang Date: Tue, 22 Sep 2026 09:40:01 +0800 Subject: [PATCH 04/22] =?UTF-8?q?docs(guide):=20=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E7=BB=84=E7=BB=87=E4=B8=8E=E8=87=AA=E9=83=A8=E7=BD=B2=E6=8C=87?= =?UTF-8?q?=E5=BC=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- website/.vitepress/config.mts | 4 +- website/README.md | 13 +- website/content/en/about/index.md | 9 +- website/content/en/developer/architecture.md | 142 ++++++++++-------- .../content/en/developer/ecosystem/index.md | 13 +- website/content/en/getting-started.md | 33 ++-- website/content/en/guide/collect.md | 4 + website/content/en/guide/daily-use.md | 18 +-- website/content/en/guide/first-source.md | 2 +- website/content/en/guide/index-schedule.md | 36 ----- website/content/en/guide/organization.md | 95 ++++++++++++ website/content/en/guide/schedules.md | 7 +- website/content/en/guide/search.md | 9 +- website/content/en/guide/sources/memos.md | 4 + website/content/en/guide/sources/twitter.md | 4 + website/content/en/index.md | 14 +- website/content/en/self-hosted/advanced.md | 80 ---------- website/content/en/self-hosted/custom.md | 123 +++++++++++++++ website/content/en/self-hosted/heroku-neon.md | 2 +- website/content/en/self-hosted/index.md | 5 +- website/content/en/self-hosted/render-neon.md | 2 +- website/content/en/self-hosted/setup.md | 10 +- .../images/client-web/collection-job.png | Bin 0 -> 55967 bytes .../images/client-web/lexical-search.png | Bin 0 -> 32256 bytes .../public/images/client-web/memos-setup.png | Bin 0 -> 67828 bytes .../images/client-web/twitter-setup.png | Bin 0 -> 80375 bytes 26 files changed, 379 insertions(+), 250 deletions(-) delete mode 100644 website/content/en/guide/index-schedule.md create mode 100644 website/content/en/guide/organization.md delete mode 100644 website/content/en/self-hosted/advanced.md create mode 100644 website/content/en/self-hosted/custom.md create mode 100644 website/content/public/images/client-web/collection-job.png create mode 100644 website/content/public/images/client-web/lexical-search.png create mode 100644 website/content/public/images/client-web/memos-setup.png create mode 100644 website/content/public/images/client-web/twitter-setup.png diff --git a/website/.vitepress/config.mts b/website/.vitepress/config.mts index 11db8f3..1d1d254 100644 --- a/website/.vitepress/config.mts +++ b/website/.vitepress/config.mts @@ -85,7 +85,7 @@ export default defineConfig({ ], }, { text: 'Schedule Collection', link: '/guide/schedules' }, - { text: 'Schedule Index Maintenance', link: '/guide/index-schedule' }, + { text: 'Organize Your Information', link: '/guide/organization' }, { text: 'Sinks', items: [{ text: 'Sinks: ChatGPT via MCP', link: '/guide/sinks/chatgpt' }], @@ -97,7 +97,7 @@ export default defineConfig({ { text: 'Set Up an Instance', link: '/self-hosted/setup' }, { text: 'Render and Neon', link: '/self-hosted/render-neon' }, { text: 'Heroku and Neon', link: '/self-hosted/heroku-neon' }, - { text: 'Advanced Self-Hosting', link: '/self-hosted/advanced' }, + { text: 'Custom Self-Hosting', link: '/self-hosted/custom' }, ], }, { text: 'Troubleshooting', link: '/guide/troubleshooting' }, diff --git a/website/README.md b/website/README.md index 43d0b89..be62d9e 100644 --- a/website/README.md +++ b/website/README.md @@ -30,24 +30,25 @@ pnpm --dir website audit --audit-level high - Only English is active until the Chinese route set is complete or the locale switch has a deliberate fallback. - `/getting-started` owns the application-level What, Why, and How introduction. -- `/getting-started` and its sidebar children form one linear path inside the User Guide. Advanced +- `/getting-started` and its sidebar children form one linear path inside the User Guide. Optional topics such as more sources and self-hosting remain separate User Guide sections. -- `/self-hosted/` contains instance setup, Render/Heroku quick-deployment guides, and the Advanced +- `/self-hosted/` contains instance setup, Render/Heroku quick-deployment guides, and the Custom guide. It is not a second Getting Started hierarchy. - `/guide/` leaf pages own reusable client, collection, retrieval, scheduling, source, daily-use, and troubleshooting procedures. Link to these pages from any onboarding path rather than to sections buried inside the self-hosted walkthrough. - `/guide/sources` selects independent source tutorials under `/guide/sources/`; `/guide/collect` - owns shared collection and Job observation. Collection scheduling and index-maintenance scheduling - stay on separate pages; indexing is retrieval support, not Organization. Memos is documented - separately as write-in capture. + owns shared collection and Job observation. Collection scheduling stays separate from Organization + guidance; indexing is retrieval support, not Organization. Memos is documented separately as + write-in capture. - `/developer/` separates ecosystem integration guidance under `/developer/ecosystem/` from architecture and core contribution guidance; `/about/` describes the project. - Section indexes use trailing-slash routes, such as `/developer/`. - Leaf pages use lowercase ASCII kebab-case routes without an extension, such as `/developer/architecture`. - Source ordering belongs in navigation configuration, not numeric filename prefixes. -- Published routes are compatibility contracts. Move one only with a direct permanent redirect. +- Once a published route has external references, treat it as a compatibility contract and move it + only with a direct permanent redirect. - `scripts/site-contract.mjs` owns the route matrix shared by generated-output and deployment verification. diff --git a/website/content/en/about/index.md b/website/content/en/about/index.md index 9255b54..e6f9ae4 100644 --- a/website/content/en/about/index.md +++ b/website/content/en/about/index.md @@ -5,16 +5,17 @@ description: The identity, purpose, values, and current stage of InKCre. # About InKCre -InKCre is an open project for making collected information durable, organized, and reusable. The -project and the public development effort share the name **InKCre**. +InKCre is an open project for collecting information into reusable product memory, improving that +information when useful, and making it available for later work. The project and the public +development effort share the name **InKCre**. ## Why InKCre exists Information is distributed across many systems. Collection alone does not preserve its value when the result remains source-specific, difficult to connect, or unavailable to later work. -InKCre exists to help information remain reusable—from collection and organization to later use and -creation. +InKCre exists to help information remain reusable through independent Collection, Organization, and +Application capabilities. A useful item does not have to pass through every capability first. ## The name diff --git a/website/content/en/developer/architecture.md b/website/content/en/developer/architecture.md index 3e1ae4a..3358804 100644 --- a/website/content/en/developer/architecture.md +++ b/website/content/en/developer/architecture.md @@ -1,103 +1,115 @@ --- title: Architecture -description: A shared mental model of the InKCre info-base, peer runtimes, and ecosystem surfaces. +description: + A shared mental model of the InKCre info-base, knowledge capabilities, and peer runtimes. --- # Architecture -InKCre turns collected information into reusable product memory. Its architecture separates -collection, authoritative organization, interpretation, raw-content retrieval, and downstream use so -that no single runtime or transport becomes the whole product. +InKCre is built around one reusable **info-base**. Collection brings information into it; +Organization may improve information already there; Application retrieves, navigates, or uses it. +These are independent actions over shared graph authority, not mandatory stages in a pipeline. -## Product flow +## Knowledge capabilities ```text -external systems - -> sources collect information - -> blocks and relations enter the info-base - -> resolvers interpret; storage retrieves raw content when needed - -> sinks retrieve, index, and serve downstream use +source-native input -> Collection -----------+ + | + v + Blocks + Relations + | + Organization -------------+------------- Application + improve later use obtain useful results ``` -A **source** gathers data from an external system. The **info-base** owns the persisted blocks and -relations that make information durable and reusable. A **resolver** interprets a block and its -local graph context, while **storage** retrieves raw content that is not inline in the block. A -**sink** consumes organized information for retrieval, indexing, embedding, or another downstream -workflow. +- **Collection** maps source-native information into durable Blocks and Relations. Correct source + mapping may create a graph; that does not make every collected relationship an Organization + result. +- **Organization** acts on information already in the info-base when splitting, merging, linking, + interpreting, or another change can improve later use. It may honestly make no change. +- **Application** finds, navigates, compares, or otherwise uses existing information. Lexical + indexes, embeddings, and projections support these queries but do not become graph authority or + Organization output. + +A **Resolver** derives use-facing meaning from a Block, its hydrated content, and the direct context +required by its contract. **Storage** owns actual bytes and opaque pointers. Neither silently gains +Collection or Organization authority. See the canonical [product glossary](https://github.com/InKCre/docs/blob/main/10-prd/glossary.md) -for the complete shared vocabulary. +and +[knowledge capability contract](https://github.com/InKCre/docs/blob/main/20-product-tdd/knowledge-capability-contract.md) +for the shared semantics. + +## Info-base authority + +Persisted Blocks and Relations are the shared information authority. Source-native objects, resolver +output, search indexes, embeddings, and client views may represent or accelerate parts of that +information, but none creates a parallel authoritative store merely because its native shape is +convenient. + +PostgreSQL owns shared persisted state. The admitted `inkcre` schema exposes versioned relations and +functions to authenticated Peers through native PostgreSQL or PostgREST. Direct database +participation means using that protocol—not arbitrary SQL access to internal schemas or provider +objects. + +The canonical +[peer database runtime contract](https://github.com/InKCre/docs/blob/main/20-product-tdd/peer-database-runtime-contract.md) +defines principals, protocol admission, lifecycle, readiness, and JWT claims. ## Peer runtimes, not frontend and backend tiers -`core-py`, `client-web`, and future units are peers around the same shared info-base. PostgreSQL is -authoritative for shared persisted state. `core-py` owns migrations and the executable database -lifecycle contract, but that responsibility does not make it the owner of every request path or -product behavior. +`core-py`, `client-web`, and compatible future runtimes participate as Peers around the same +info-base. `core-py` owns migrations and the executable database lifecycle contract, but it is not a +central owner of every request path or product behavior. -The web client demonstrates this topology today: its database client reads and writes through -PostgREST while other runtime behavior can use native HTTP surfaces. The durable boundary is the -admitted protocol, not a permanent frontend/backend hierarchy. +Client-web demonstrates this topology: database operations use PostgREST, while runtime-owned +capabilities may use native HTTP surfaces advertised by an online Peer. The durable boundary is the +admitted protocol and capability contract, not a permanent frontend/backend hierarchy. Read the canonical [unit topology](https://github.com/InKCre/docs/blob/main/20-product-tdd/unit-topology.md) and [state authority](https://github.com/InKCre/docs/blob/main/20-product-tdd/system-state-and-authority.md) for the cross-unit contract. -## Database protocol - -The `inkcre` PostgreSQL schema is the admitted, versioned relation and function surface for -authenticated peers. Native PostgreSQL and PostgREST expose the same admitted semantics through -different transports. - -Direct database participation therefore does **not** mean arbitrary SQL access. A usable peer must -respect the admitted schema, explicit privileges, migration and lifecycle state, protocol revision, -and coordinated compatibility rules. Administrative schemas, provider internals, and objects without -contract admission are outside the protocol. - -The canonical -[peer database runtime contract](https://github.com/InKCre/docs/blob/main/20-product-tdd/peer-database-runtime-contract.md) -defines protocol admission, principals, lifecycle, readiness, JWT claims, and portable acceptance. - ## Ecosystem surfaces {#ecosystem-surfaces} -### Database peers +### Database Peers -Database peer participation is the foundational ecosystem surface. An authenticated runtime can use -native PostgreSQL or PostgREST to operate the admitted protocol without becoming subordinate to one -central application server. - -The current contract is concrete, but a complete third-party guide for identity, privileges, -compatibility, and worked examples is still deferred. +An authenticated runtime can participate through native PostgreSQL or PostgREST while respecting the +admitted schema, privileges, protocol revision, and compatibility rules. Administrative schemas and +provider internals remain outside that surface. ### Extensions -An Extension is an installable capability that adds source, resolver, or sink behavior without -forking core ownership boundaries. Installation, client-scoped enablement, and current runtime -activity are separate states: - -- **installed**: the deployment has the package and persisted installation record; -- **enabled**: a particular client is permitted to run it; -- **running**: the current runtime has started it and applied its side effects. +An Extension packages one or more capabilities for a compatible Host. A deployment installs one +exact version; each Peer records whether it should enable that Extension. For normal operation, +**online Peer + enabled intent** means the Host is expected to run it best-effort. There is no +second durable `running` flag for users to maintain. Runtime errors and capability observations can +still show that expected activation failed. -Core supports native Python wheels with versioned Registry releases and explicit Host compatibility. -The [Source Extension tutorial](/developer/ecosystem/source-extension) covers the current Core Host -0.2 path. Its Source programming interfaces still import Core modules; the delivery Toolkit is not a -standalone Source SDK or a promise of compatibility with every future Host. +Core supports Python wheels with explicit Host compatibility. A release may also contain a browser +distribution for client-web setup or rendering. The +[Source Extension tutorial](/developer/ecosystem/source-extension) covers the current Core Host SDK +`0.3.x` path; those programming interfaces still import Core modules and are not a standalone, +permanently stable Source SDK. -### APIs +### Native HTTP and sinks -PostgREST and native HTTP implementations expose real integration surfaces. Their existence does not -by itself create a versioned public API promise. Endpoint reference, authentication examples, and -compatibility policy will be documented when a supported external contract is ready. +An Extension may expose its own HTTP protocol through its Host, and a Sink may make admitted +capabilities available to another tool. These are integration surfaces, not ownership shortcuts: +retrieval remains Application, Organization remains explicit, and transport does not redefine graph +authority. ## Boundaries worth preserving -- Sources may propose graph data; the info-base owns persisted graph insertion. -- Source, info-base, and sink responsibilities remain distinct. -- Resolver interpretation and storage retrieval remain distinct. -- Embeddings are sink-owned even when ingestion triggers their generation. -- Extension `installed`, `enabled`, and `running` states must not collapse into one flag. +- Collection, Organization, and Application remain independent actions rather than information + states or a mandatory pipeline. +- Source-authored facts remain distinguishable from Organization-authored meaning. +- Blocks and Relations remain authoritative; indexes, embeddings, projections, and caches are + derived support. +- Resolver meaning and Storage byte access remain distinct. +- Delivery owner, Host, Peer enablement, and capability owner do not collapse merely because one + first-party repository currently implements several of them. These boundaries are maintained in the canonical [product rules](https://github.com/InKCre/docs/blob/main/10-prd/behavior/rules-and-invariants.md) diff --git a/website/content/en/developer/ecosystem/index.md b/website/content/en/developer/ecosystem/index.md index 8c2d7cd..ad8cf78 100644 --- a/website/content/en/developer/ecosystem/index.md +++ b/website/content/en/developer/ecosystem/index.md @@ -17,14 +17,15 @@ need to contribute it to the Core repository. Start with the boundary your integ ## What an Extension supplies -A Source fetches and maps external information. A Resolver interprets stored content and relations. -A Sink makes information useful downstream. An Extension packages one or more such capabilities for -a particular Host; not every integration needs all three or a custom browser interface. +A Source contributes Collection by mapping external information into the info-base. A Resolver +derives use-facing meaning from stored content and required context. A Sink exposes capabilities to +another tool. An Extension packages one or more capabilities for a compatible Host; not every +integration needs all three or a custom browser interface. The Python path uses a native wheel, the `inkcre.core.extensions` entry point, and an exact Registry -Release. Core installs that release, a Peer enables it, and the running Host activates its behavior. -These are separate steps. Browser code is a separate native distribution, not automatically produced -by a Python wheel. +Release. Core installs that release and a Peer records its enabled intent. An online Host then +activates the Extension best-effort; users do not maintain a second durable running flag. Browser +code is a separate distribution, not automatically produced by a Python wheel. The Source tutorial targets **Core Host SDK 0.3.x**. Its Python programming interfaces currently import Core modules; they are not an independent, universally stable Source SDK. The Extension diff --git a/website/content/en/getting-started.md b/website/content/en/getting-started.md index 4f1c4cf..ca29dc7 100644 --- a/website/content/en/getting-started.md +++ b/website/content/en/getting-started.md @@ -6,23 +6,24 @@ description: # Getting Started -InKCre helps you turn information scattered across your tools into a collection you can return to +InKCre helps you bring information scattered across your tools into an info-base you can return to and use. Start here to understand the experience, then choose how you will access an instance. You do not need to be an InKCre developer to begin. ## What is InKCre? -InKCre collects information, organizes it in an **info-base**, and makes it available for retrieval -and use in other tools. Think of the info-base as your reusable collection, including connections -between pieces of information rather than only a folder of copies. +InKCre collects information into an **info-base**, can organize information already there when that +improves later use, and makes it available for retrieval and other tools. Think of the info-base as +reusable product memory built from Blocks and Relations, rather than only a folder of copies. For example, you might collect articles from RSS feeds, keep track of saved GitHub repositories, and capture messages you forward to a Telegram bot. Later, you can find an article from a phrase you remember, follow its related information, or make it available to a trusted assistant. -These are connected capabilities, not mandatory stages: you can collect and retrieve information -without first configuring AI organization. Extensions provide integrations with different sources -and tools; each integration has its own setup and limits. +Collection, Organization, and Application are connected capabilities, not mandatory stages. A +collector may preserve source relationships without performing Organization, and you can retrieve +information without first configuring an AI provider. Extensions add integrations with different +sources and tools; each has its own setup and limits. ## Why use it? @@ -30,9 +31,9 @@ Saving information is useful only if you can find and reuse it. An article in on in another, and a note in a third can become difficult to bring together when you need them. InKCre gives that information a common home without making its usefulness depend on the original -collector or a single client. You choose the sources that matter, then access the collection from -the Web app, the command line, or connected tools in your workflow. Self-hosting also lets you -choose where the instance runs and where its information is stored. +collector or a single client. You choose the sources that matter, then access the info-base from the +Web app, the command line, or connected tools in your workflow. Self-hosting also lets you choose +where the instance runs and where its information is stored. Start with a concrete need—such as finding useful articles from your subscriptions—rather than connecting every source at once. One working source and a successful search are a better first @@ -48,8 +49,8 @@ does not create an instance for you. - **Run your own instance:** choose [Self-Hosted](/self-hosted/). Its [setup guide](/self-hosted/setup) walks through quick deployment before you rejoin this journey. - [Advanced Self-Hosting](/self-hosted/advanced) covers manual deployment and operating it on - infrastructure you choose. + [Custom Self-Hosting](/self-hosted/custom) covers a step-by-step deployment on infrastructure you + choose. - **Already have access to an instance:** obtain connection details from the person operating it, then [connect the Web app or your Agent](/guide/connect), [collect a source](/guide/first-source), and [connect your everyday tools](/guide/daily-use). Skip the deployment steps. Only connect @@ -73,8 +74,8 @@ remember, and open a result. Then [Use Your Information](/guide/daily-use) to co a tool you already use. This completes the linear Getting Started path, independently of your deployment choice. -AI organization and semantic retrieval are optional next steps with their own provider and -maintenance setup. InKCre does not automatically configure a daily digest or Telegram/email push +Model-assisted Organization and semantic retrieval are optional next steps with their own provider +and maintenance setup. InKCre does not automatically configure a daily digest or Telegram/email push notifications: making information available in your tools is distinct from proactively sending it. ## Your next step @@ -82,7 +83,7 @@ notifications: making information available in your tools is distinct from proac If you do not have an instance yet, open [Self-Hosted](/self-hosted/) and choose a deployment path. After the first-use path works, the User Guide covers optional topics such as [more sources](/guide/sources), [collection schedules](/guide/schedules), -[index-maintenance schedules](/guide/index-schedule), and -[advanced self-hosting](/self-hosted/advanced). If you want to understand or contribute to the +[Organization and retrieval maintenance](/guide/organization), and +[custom self-hosting](/self-hosted/custom). If you want to understand or contribute to the implementation, use the [Developer Guide](/developer/) instead. For the project's values and direction, read [About InKCre](/about/). diff --git a/website/content/en/guide/collect.md b/website/content/en/guide/collect.md index fc415cd..e176697 100644 --- a/website/content/en/guide/collect.md +++ b/website/content/en/guide/collect.md @@ -25,6 +25,10 @@ for terminal instructions. 5. If creation could not be confirmed, check the Jobs list before submitting again. A timeout does not prove the first request did nothing. +![A finished RSS collection Job with its Source, timestamps, state, and diagnostics](/images/client-web/collection-job.png) + +_A finished Job is the place to verify what the collector actually did._ + The Source ID persists across runs; each run has its own Job ID. A successful empty collection can be normal. Do not repeatedly create Jobs to work around a provider error. diff --git a/website/content/en/guide/daily-use.md b/website/content/en/guide/daily-use.md index 8f004f7..320f46a 100644 --- a/website/content/en/guide/daily-use.md +++ b/website/content/en/guide/daily-use.md @@ -1,6 +1,6 @@ --- title: Use Your Information -description: Connect the Web app and everyday tools, with optional AI organization. +description: Connect the Web app and everyday tools, with optional Organization. --- # Use Your Information @@ -46,17 +46,11 @@ owns the endpoint and authentication contract. These paths make your saved information available on demand. They do not configure proactive notifications or a daily briefing. -## Add AI organization when you need it +## Organize information when it improves later use -Once collection and reading work, configure a model provider and Agent for rumination, then -explicitly reconsider a Block. Follow the -[Core organization configuration](https://github.com/InKCre/core-py/blob/main/docs/30-unit-tdd/organization.md) -for the Agent and deployment settings before using **Ruminate** or -`inkcre-cli organization ruminate BLOCK_ID`. - -Inspect the Job and graph afterward. A valid result may add nothing. Re-index after new content is -added to find it by words. Semantic search additionally needs an embedding provider/profile and -maintenance; an LLM API key alone does not enable it. Selected content leaves your instance for -configured AI providers and may incur charges. +Once collection and reading work, follow [Organize Your Information](/guide/organization) to choose +one concrete improvement, configure the required Agent, run a best-effort Organization Job, and +inspect its graph effect. That guide also keeps lexical and semantic retrieval maintenance separate +from Organization. An LLM API key alone does not enable every capability. Next: [Troubleshooting](/guide/troubleshooting). diff --git a/website/content/en/guide/first-source.md b/website/content/en/guide/first-source.md index 7c80077..3e8082b 100644 --- a/website/content/en/guide/first-source.md +++ b/website/content/en/guide/first-source.md @@ -37,4 +37,4 @@ collection. Next: [Use Your Information](/guide/daily-use). After the Getting Started path works, you can [connect more sources](/guide/sources), [schedule collection](/guide/schedules), or -[schedule index maintenance](/guide/index-schedule). +[organize information and maintain retrieval support](/guide/organization). diff --git a/website/content/en/guide/index-schedule.md b/website/content/en/guide/index-schedule.md deleted file mode 100644 index 6edc2fd..0000000 --- a/website/content/en/guide/index-schedule.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Schedule Index Maintenance -outline: false -description: Keep the lexical search index current independently from collection and organization. ---- - -# Schedule Index Maintenance - -Index maintenance makes existing info-base content available to lexical search. It is application -support: it does not collect information and it does not organize or author meaning in the -info-base. - -First complete [one collection](/guide/collect) and [a successful search](/guide/search). Ask your -operator or trusted Agent to check whether the instance already has an index-maintenance schedule; -create only one if it does not: - -```sh -inkcre-cli cron create --job-type core.feature_retrieval.lexical.maintain.v1 --input-json '{"schedule":"*/10 * * * *","job_parameters":{}}' -``` - -This five-field schedule runs every ten minutes while Core is available. Inspect the returned Cron -and its `last_job`; maintenance processes a bounded batch, and the Job carries its own result and -diagnostics. Avoid duplicate schedules. Sleeping hosts miss occurrences and do not automatically -catch up. - -To pause future maintenance while keeping the Cron record, run: - -```sh -inkcre-cli cron disable ID -``` - -Replace `ID` with the actual Cron ID. Pausing index maintenance does not stop collection or remove -stored information. Likewise, a [collection schedule](/guide/schedules) does not maintain this -index. - -Next: [Connect More Sources](/guide/sources), or [Use Your Information](/guide/daily-use). diff --git a/website/content/en/guide/organization.md b/website/content/en/guide/organization.md new file mode 100644 index 0000000..18ae794 --- /dev/null +++ b/website/content/en/guide/organization.md @@ -0,0 +1,95 @@ +--- +title: Organize Your Information +outline: false +description: Improve information already in your info-base and keep retrieval support current. +--- + +# Organize Your Information + +Organization acts on information already in your info-base to make it more useful later. It can +split, merge, link, interpret, or otherwise improve that information. Collection is different: it +brings source information into the info-base and may preserve source-authored relationships while +doing so. Finding information is Application; its indexes and embeddings are derived retrieval +support, not Organization output. + +These are independent actions, not mandatory stages. You can collect and retrieve useful information +without running Organization first. + +## Before you organize + +1. Finish [one collection](/guide/collect) and [retrieve a known item](/guide/search). +2. Choose a concrete improvement, such as interpreting an image or reconsidering one Block in its + immediate context. Do not run Organization merely to make the graph look tidy. +3. Ask your operator to configure a compatible model provider and Agent for the exact behavior. + Organization may send selected content to that provider and may incur charges. + +The +[Core Organization guide](https://github.com/InKCre/core-py/blob/main/docs/30-unit-tdd/organization.md) +owns the current behavior and configuration contracts. A configured model alone does not schedule or +run Organization. + +## Reconsider one Block + +For one item that would benefit from additional context or connections, retain its Block ID and ask +a trusted Agent or operator to run: + +```sh +inkcre-cli organization ruminate BLOCK_ID +``` + +The command creates a Job. Observe that Job, then inspect the Block and its neighborhood again. +Rumination is additive and best-effort: it may add ordinary Blocks and Relations, or finish without +writing when the Agent has no useful change. It does not replace or delete the original Block. + +## Run Organization automatically + +Some Organization behaviors select their own candidates, including media interpretation. They use +ordinary typed Jobs and do not receive a schedule automatically. First ask your operator to verify +that the chosen behavior is configured and available on an online Peer. Run it once and inspect its +Job and graph effects before creating a Cron. + +For example, a configured media-interpreting instance can run this parameterless Job type: + +```sh +inkcre-cli job create --type core.organization.media_interpretation.v1 --input-json '{"parameters":{}}' +``` + +A finished Job is not a blanket quality verdict. One candidate may produce no useful output, and +already committed effects remain when another candidate fails. Review representative results before +choosing a schedule suitable for your information and provider budget. For example, after the manual +media Job works, schedule the same behavior once each night: + +```sh +inkcre-cli cron create --job-type core.organization.media_interpretation.v1 --input-json '{"schedule":"0 3 * * *","job_parameters":{}}' +``` + +Inspect the returned Cron and its later Jobs. Use a different frequency only when your incoming +media volume and provider budget justify it. + +## Keep retrieval support current + +Lexical maintenance makes existing info-base content searchable by remembered words. It does not +collect information or author graph meaning. Ask your operator or trusted Agent to check whether the +instance already has a maintenance schedule; create only one if it does not: + +```sh +inkcre-cli cron create --job-type core.feature_retrieval.lexical.maintain.v1 --input-json '{"schedule":"*/10 * * * *","job_parameters":{}}' +``` + +This five-field schedule runs every ten minutes while Core is available. Inspect the returned Cron +and its `last_job`; maintenance processes a bounded batch, and the Job carries its own result and +diagnostics. Avoid duplicate schedules. Sleeping hosts miss occurrences and do not automatically +catch up. + +To pause future maintenance while keeping the Cron record, run: + +```sh +inkcre-cli cron disable ID +``` + +Replace `ID` with the actual Cron ID. Pausing index maintenance does not stop collection, +Organization, or remove stored information. Likewise, a [collection schedule](/guide/schedules) does +not maintain this index. Semantic retrieval uses its own embedding profile and maintenance; an LLM +key or lexical schedule does not enable it. + +Next: [Connect More Sources](/guide/sources), or [Use Your Information](/guide/daily-use). diff --git a/website/content/en/guide/schedules.md b/website/content/en/guide/schedules.md index 18d36ee..634f93e 100644 --- a/website/content/en/guide/schedules.md +++ b/website/content/en/guide/schedules.md @@ -27,11 +27,10 @@ First complete [a manual collection](/guide/collect) and [find a known item](/gu CLI if you want to retain it for later re-enabling. This schedule only collects from the Source. It does not maintain a search index or run -Organization. Configure [index maintenance separately](/guide/index-schedule) if you want newly +Organization. Configure [retrieval maintenance separately](/guide/organization) if you want newly collected items to become searchable without a manual maintenance Job. -Next: [Schedule Index Maintenance](/guide/index-schedule), or -[Connect More Sources](/guide/sources). +Next: [Organize Your Information](/guide/organization), or [Connect More Sources](/guide/sources). diff --git a/website/content/en/guide/search.md b/website/content/en/guide/search.md index 80394c3..412d094 100644 --- a/website/content/en/guide/search.md +++ b/website/content/en/guide/search.md @@ -26,7 +26,7 @@ inkcre-cli job wait JOB_ID --for 30s Replace `JOB_ID` with the returned number. Inspect its state and diagnostics; maintenance handles a bounded batch, so a larger import can need another run. An -[index-maintenance schedule](/guide/index-schedule) avoids needing this manual step for every +[retrieval-maintenance schedule](/guide/organization) avoids needing this manual step for every collection. 2. Open **Info Base** in client-web. Enter a distinctive phrase from the collected item and search. @@ -34,6 +34,11 @@ collection. relationships. Some content needs a compatible browser Extension for rich rendering; an Agent can also retrieve Core-resolved text through the CLI. +![Lexical search in Info Base returning a collected RSS item](/images/client-web/lexical-search.png) + +_Search for a phrase you recognize; the result should be the information itself, not merely a +successful maintenance Job._ + **Checkpoint:** you found a real item and its source relationships. Collection and indexing are separate; an AI key is not required for lexical search. Source-derived relationships do not mean that InKCre has automatically summarized or reorganized everything with AI. @@ -79,7 +84,7 @@ Organization operation and do not mean InKCre has already summarized, tagged, or information with AI. Next: [Use Your Information](/guide/daily-use). To automate maintenance later, add an -[index-maintenance schedule](/guide/index-schedule). +[retrieval-maintenance schedule](/guide/organization). diff --git a/website/content/en/guide/sources/memos.md b/website/content/en/guide/sources/memos.md index 588b600..ba35bc3 100644 --- a/website/content/en/guide/sources/memos.md +++ b/website/content/en/guide/sources/memos.md @@ -29,6 +29,10 @@ a bounded Memos `0.29.1` API subset; the previously accepted client is MoeMemos 5. Write a distinctive note, refresh the client, and reopen it. Then [index and search](/guide/search) for the same text in InKCre. +![Memos setup showing a ready Server URL and masked Personal Access Token](/images/client-web/memos-setup.png) + +_Copy both values from Setup; keep the PAT masked and private._ + If setup reports a missing public address, set your Core's **Public HTTP Base URL** in **Clients → Config**, then refresh setup. The address must be reachable from your Memos client. The **Memos connection help** link opens the installed version's step-by-step guide; the Extension card also diff --git a/website/content/en/guide/sources/twitter.md b/website/content/en/guide/sources/twitter.md index c9f26c3..e7c0bd0 100644 --- a/website/content/en/guide/sources/twitter.md +++ b/website/content/en/guide/sources/twitter.md @@ -38,6 +38,10 @@ Do not downgrade to `0.3.0`: its Python package targets Core Host `0.1.x`. 3. Choose your online Core Peer/client in the wizard. Enable Twitter there if prompted. Core handles the callback and collection; browser enablement alone is insufficient. +![Twitter setup wizard showing the account-connection step](/images/client-web/twitter-setup.png) + +_The wizard keeps preparation, account connection, Source selection, and review as separate steps._ + ### 2. Authorize your X account 1. Copy the callback URL displayed by the wizard. In your X developer app's authentication settings, diff --git a/website/content/en/index.md b/website/content/en/index.md index 3613760..f842a0b 100644 --- a/website/content/en/index.md +++ b/website/content/en/index.md @@ -2,15 +2,15 @@ layout: home title: InKCre description: - InKCre collects information, organizes it into a reusable info-base, and makes it available for - later use. + InKCre collects information into a reusable info-base, can improve what is already there, and + makes it available for later use. hero: name: InKCre text: A shared base for reusable information. tagline: - Collect information, organize it into an info-base, and make it available for later retrieval, - indexing, and downstream use. + Collect information into an info-base, improve it when useful, and retrieve or use it where you + work. actions: - theme: brand text: Getting Started @@ -27,11 +27,11 @@ hero: features: - title: Collect - details: Bring information from external systems into durable, reusable units. + details: Map information from external systems into durable Blocks and Relations. - title: Organize - details: Connect blocks and relations inside a shared information base. + details: Improve information already in the info-base when that helps later use. - title: Use - details: Retrieve, index, and apply organized information in downstream work. + details: Find, navigate, and apply information with the retrieval support each task needs. --- ## Under active development diff --git a/website/content/en/self-hosted/advanced.md b/website/content/en/self-hosted/advanced.md deleted file mode 100644 index cc5fdee..0000000 --- a/website/content/en/self-hosted/advanced.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Advanced Self-Hosting -description: - Deploy InKCre on your own infrastructure and plan its operation, upgrades, and recovery. ---- - -# Advanced Self-Hosting - -This guide is for people who want to manage the runtime directly or move beyond the fork-based quick -deployments. If you want the shortest route to your first collected information, start with -[Set Up a Self-Hosted Instance](/self-hosted/setup). - -## Manual deployment - -You can use your own machine, VPS, containers, or other hosting. No GitHub fork, Neon account, -Render account, or Heroku account is inherently required. These providers automate a portable -runtime consisting of: - -| Component | Responsibility | -| ----------------------------------------------------------- | --------------------------------------------------------------------------------------- | -| PostgreSQL with the required extensions, including pgvector | Persists the info-base and shared configuration. | -| Database initializer | Creates/migrates the schema, provisions runtime roles, and reconciles built-in records. | -| PostgREST | Exposes the admitted database API used by the Web client. | -| Core Python program | Runs collection, Jobs, Extensions, and the Core HTTP API. | - -The initializer is a deployment step, not an additional always-running service. Core and PostgREST -connect to the same initialized database with different runtime roles. The CLI connects to Core; the -Web client uses PostgREST and discovers Core capabilities. The Web app itself can remain at -`app.inkcre.dev` or be hosted separately. - -For a manual installation, work through these steps using the runtime documentation for the Core -revision you selected: - -1. Provision PostgreSQL with the required extensions. Retain an owner connection for initialization - and migrations; do not use that privileged connection as the application's runtime connection. -2. Run Core's ordered database initializer with the runtime profile. It provisions schema and roles - as well as migrations: starting an empty database and only launching Python is not enough. The - [database lifecycle guide](https://github.com/InKCre/core-py/blob/main/docs/40-deployment/database-contract.md) - owns the initializer commands, credentials, and readiness checks. -3. Configure PostgREST with the `authenticator` connection, the admitted `inkcre` schema, and the - deployment's JWT settings. Configure Core with the `inkcre_core` connection and matching JWT - settings. Keep the migration-owner credentials out of both running services. -4. Start the Core Python program with its pinned dependencies, or use its container image, and start - PostgREST. The [Core README](https://github.com/InKCre/core-py#readme) and - [container/runtime guide](https://github.com/InKCre/core-py/blob/main/docs/40-deployment/docker.md) - own the supported entry points. The Compose stack is a useful topology reference, but its - development credentials and defaults are not a production configuration. -5. Configure HTTPS and reachable service URLs, advertise Core's public address in its Peer - configuration, and arrange process restarts, backups, and upgrades. Verify Core `/readyz` and - authenticated database access before connecting clients. The - [runtime orchestration guide](https://github.com/InKCre/core-py/blob/main/docs/40-deployment/runtime-orchestration.md) - explains readiness and capability availability. - -## Operate your instance - -A successful first deployment is the beginning of operating the instance. Before relying on it for -important information: - -- Choose hosting that keeps Core available for scheduled collection; sleeping plans cannot promise - continuous collection. -- Keep database backups and verify how you will restore them. Your source accounts and repository - fork are not backups of the info-base. -- Retain deployment credentials securely. Coordinate changes to database passwords and JWT settings - across the services and clients that use them. -- Plan upgrades against the selected Core revision's migration and deployment instructions. Inspect - readiness and collection Jobs after changes; do not treat a running process as proof that - collection succeeded. - -Provider-specific procedures remain in the -[Render deployment guide](https://github.com/InKCre/core-py/blob/main/docs/40-deployment/render-neon-self-host.md) -and -[Heroku deployment guide](https://github.com/InKCre/core-py/blob/main/docs/40-deployment/heroku-neon-self-host.md). -The Core runtime documentation linked above owns exact commands and recovery procedures. - -## Continue with collection and use - -Once Core and PostgREST are ready, retain both URLs, the private JWT secret, and the Core Peer -identity. Continue with [Connect the CLI](/guide/connect-cli), -[your first source](/guide/first-source), [search](/guide/search), and -[everyday tools](/guide/daily-use). These shared guides apply to manual and quick deployments alike. diff --git a/website/content/en/self-hosted/custom.md b/website/content/en/self-hosted/custom.md new file mode 100644 index 0000000..36ed2a1 --- /dev/null +++ b/website/content/en/self-hosted/custom.md @@ -0,0 +1,123 @@ +--- +title: Custom Self-Hosting +description: Deploy InKCre step by step on infrastructure and services you choose. +--- + +# Custom Self-Hosting + +Choose this path when you want infrastructure other than the maintained Render or Heroku workflows, +or when you want to control each service directly. It is more customizable, not a test of technical +seniority. The steps below explain what each component does, what you need to retain, and how to +check your progress. + +For the shortest maintained deployment, use [Set Up a Self-Hosted Instance](/self-hosted/setup) +instead. + +## What you will run + +You can use your own machine, VPS, containers, or other hosting. No GitHub fork, Neon account, +Render account, or Heroku account is inherently required. These providers automate a portable +runtime consisting of: + +| Component | Responsibility | +| ----------------------------------------------------------- | --------------------------------------------------------------------------------------- | +| PostgreSQL with the required extensions, including pgvector | Persists the info-base and shared configuration. | +| Database initializer | Creates/migrates the schema, provisions runtime roles, and reconciles built-in records. | +| PostgREST | Exposes the admitted database API used by the Web client. | +| Core Python program | Runs collection, Jobs, Extensions, and the Core HTTP API. | + +The initializer is a command you run during deployment, not another permanent service. Core and +PostgREST then connect to the initialized database with separate limited roles. The CLI talks to +Core; client-web talks to PostgREST and discovers Core capabilities. You can continue using +`app.inkcre.dev` rather than hosting client-web yourself. + +## 1. Choose a Core release and runtime shape + +Choose one exact Core release or commit and use its deployment documentation throughout. Decide +where PostgreSQL, PostgREST, and Core will run and how both HTTP services will receive HTTPS URLs. +They may share a machine, but they remain separate processes. + +**Checkpoint:** you have an exact Core revision and two planned public URLs—one for Core and one for +PostgREST. + +## 2. Prepare PostgreSQL and credentials + +1. Provision PostgreSQL with the extensions required by your chosen Core revision. +2. Retain its owner connection only for initialization, migrations, and recovery. +3. Generate separate strong passwords for the `inkcre_core` and `authenticator` login roles. +4. Generate one private JWT secret that PostgREST and your clients will share. + +Do not give either running service the database-owner URL. Keep the three generated secrets in your +hosting provider's secret storage. + +**Checkpoint:** PostgreSQL is reachable from your deployment environment, and you have an owner URL, +two different role passwords, and one JWT secret. + +## 3. Initialize the database + +Run Core's ordered runtime initializer for a production-shaped environment. It applies migrations, +creates the limited roles, and reconciles built-in records. Launching Python against an empty +database is not initialization. + +Use the exact command and image from the selected revision's +[database lifecycle guide](https://github.com/InKCre/core-py/blob/main/docs/40-deployment/database-contract.md), +then run its read-only readiness command. The initializer is safe to repeat when deploying the same +profile. + +**Checkpoint:** database readiness reports the expected migration, roles, privileges, and protocol +contract without exposing the owner URL. + +## 4. Start PostgREST + +Configure PostgREST to connect as `authenticator`, expose only the admitted `inkcre` schema, reject +anonymous access, and validate the JWT secret and claims required by the selected Core revision. Put +it behind HTTPS. + +**Checkpoint:** the public PostgREST URL answers, anonymous access is denied, and an authenticated +request with your deployment JWT reaches the admitted API. + +## 5. Start Core + +Run the pinned Python program or its container image with the `inkcre_core` database connection and +the same JWT settings. Supply Core's public HTTPS base URL so its Peer can advertise callable HTTP +capabilities. The +[container guide](https://github.com/InKCre/core-py/blob/main/docs/40-deployment/docker.md) and +[Core README](https://github.com/InKCre/core-py#readme) own the supported entry points. + +**Checkpoint:** Core `/livez` and `/readyz` return HTTP `200`, and the runtime has published a live +Peer lease and its public capabilities. + +## 6. Connect and complete a real journey + +Retain the Core URL, PostgREST URL, JWT secret, and Core Peer ID. Follow +[Connect to Your Instance](/guide/connect), then collect one small source and retrieve an item you +recognize. A healthy process is necessary, but a real collection-and-retrieval loop proves that the +services work together. + +**Checkpoint:** client-web can reach PostgREST and the online Core Peer, and you can retrieve one +collected item. + +## Operate your instance + +A successful first deployment is the beginning of operating the instance. Before relying on it for +important information: + +- Choose hosting that keeps Core available for scheduled collection; sleeping plans cannot promise + continuous collection. +- Keep database backups and verify how you will restore them. Your source accounts and repository + fork are not backups of the info-base. +- Retain deployment credentials securely. Coordinate changes to database passwords and JWT settings + across the services and clients that use them. +- Plan upgrades against the selected Core revision's migration and deployment instructions. Inspect + readiness and collection Jobs after changes; do not treat a running process as proof that + collection succeeded. + +Provider-specific examples remain in the +[Render deployment guide](https://github.com/InKCre/core-py/blob/main/docs/40-deployment/render-neon-self-host.md) +and +[Heroku deployment guide](https://github.com/InKCre/core-py/blob/main/docs/40-deployment/heroku-neon-self-host.md). +The Core runtime documentation linked above owns exact commands and recovery procedures. + +The Core +[runtime orchestration guide](https://github.com/InKCre/core-py/blob/main/docs/40-deployment/runtime-orchestration.md) +owns readiness and shutdown details for the selected revision. diff --git a/website/content/en/self-hosted/heroku-neon.md b/website/content/en/self-hosted/heroku-neon.md index 16c2c8c..72d05dd 100644 --- a/website/content/en/self-hosted/heroku-neon.md +++ b/website/content/en/self-hosted/heroku-neon.md @@ -7,7 +7,7 @@ description: Deploy your own InKCre instance using a GitHub fork, Neon, and Hero Use this fork-based quick deployment if you do not have an instance yet. You need GitHub, Neon, and a compute-provider account. These providers are convenience options, not InKCre requirements; -[Advanced Self-Hosting](/self-hosted/advanced) covers your own infrastructure. +[Custom Self-Hosting](/self-hosted/custom) covers your own infrastructure. Keep credentials in a password manager. API keys let the workflow act on your hosting accounts; they are different from sign-in passwords. diff --git a/website/content/en/self-hosted/index.md b/website/content/en/self-hosted/index.md index 6afd8ba..37f6bbe 100644 --- a/website/content/en/self-hosted/index.md +++ b/website/content/en/self-hosted/index.md @@ -12,7 +12,8 @@ availability, backups, and updates. This section is for users choosing that resp For the application-level introduction and access choices, start with [Getting Started](/getting-started). Self-hosting is a separate User Guide topic: use the [instance setup guide](/self-hosted/setup) for a fork-based deployment, or -[Advanced Self-Hosting](/self-hosted/advanced) for manual deployment and operations. +[Custom Self-Hosting](/self-hosted/custom) for a step-by-step deployment on infrastructure you +choose. ## Choose a deployment path @@ -20,7 +21,7 @@ For the application-level introduction and access choices, start with | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | | Fork quick deployment: Neon + Render | Provider accounts and GitHub settings; the workflow initializes the database and deploys Core and PostgREST. | [Render walkthrough](/self-hosted/render-neon) | | Fork quick deployment: Neon + Heroku | The same topology on Heroku, with its billing and runtime settings. | [Heroku walkthrough](/self-hosted/heroku-neon) | -| Manual deployment | PostgreSQL initialization, PostgREST, the Core Python process or container, and hosting operations on infrastructure you choose. | [Advanced](/self-hosted/advanced) | +| Custom deployment | PostgreSQL initialization, PostgREST, the Core Python process or container, and hosting operations on infrastructure you choose. | [Custom guide](/self-hosted/custom) | Neon, Render, and Heroku are convenient deployment options, not product dependencies. Forking provides a ready-made deployment workflow; it is not required to run InKCre. Both quick deployments diff --git a/website/content/en/self-hosted/render-neon.md b/website/content/en/self-hosted/render-neon.md index b095563..80a1837 100644 --- a/website/content/en/self-hosted/render-neon.md +++ b/website/content/en/self-hosted/render-neon.md @@ -7,7 +7,7 @@ description: Deploy your own InKCre instance using a GitHub fork, Neon, and Rend Use this fork-based quick deployment if you do not have an instance yet. You need GitHub, Neon, and a compute-provider account. These providers are convenience options, not InKCre requirements; -[Advanced Self-Hosting](/self-hosted/advanced) covers your own infrastructure. +[Custom Self-Hosting](/self-hosted/custom) covers your own infrastructure. Keep credentials in a password manager. API keys let the workflow act on your hosting accounts; they are different from sign-in passwords. diff --git a/website/content/en/self-hosted/setup.md b/website/content/en/self-hosted/setup.md index afd4d36..55dd39b 100644 --- a/website/content/en/self-hosted/setup.md +++ b/website/content/en/self-hosted/setup.md @@ -20,8 +20,8 @@ Choose **one** deployment guide: - [Render and Neon](/self-hosted/render-neon): fork-based quick deployment on Render. - [Heroku and Neon](/self-hosted/heroku-neon): the equivalent quick deployment on Heroku. -- [Advanced Self-Hosting](/self-hosted/advanced): initialize PostgreSQL, configure PostgREST, and - run Core on infrastructure you choose. +- [Custom Self-Hosting](/self-hosted/custom): initialize PostgreSQL, configure PostgREST, and run + Core on infrastructure you choose. Neon and the compute providers are convenience options, not requirements. At the end, retain a ready Core URL, a PostgREST URL, your private JWT secret, and the Core Peer ID. @@ -36,7 +36,7 @@ Follow these shared user guides in order. If you already have an instance, start 3. [Find what you saved](/guide/search): maintain the lexical index, search, and inspect a result. **Checkpoint:** you can retrieve a real item from your source. Collection and indexing are separate; -neither requires you to set up AI organization first. +neither requires you to set up Organization first. ## 3. Continue through the User Guide @@ -44,9 +44,9 @@ Finish the linear Getting Started journey with [Use Your Information](/guide/dai manual steps work, choose the separate User Guide topics that match your needs: - [Schedule collection](/guide/schedules). -- [Schedule index maintenance](/guide/index-schedule). +- [Organize information and maintain retrieval support](/guide/organization). - [Connect more sources](/guide/sources), such as GitHub saves, email, and Telegram messages. -- [Advanced Self-Hosting](/self-hosted/advanced) for backups, upgrades, and manual operations. +- [Custom Self-Hosting](/self-hosted/custom) for more infrastructure choices and manual operations. These paths make information available on demand. They do not configure automatic daily digests or Telegram/email push notifications. Hosting that sleeps cannot guarantee continuous collection. diff --git a/website/content/public/images/client-web/collection-job.png b/website/content/public/images/client-web/collection-job.png new file mode 100644 index 0000000000000000000000000000000000000000..9f2a1125b14111763ed8d843b2e2c15a28794697 GIT binary patch literal 55967 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 G^S=R7*oJff literal 0 HcmV?d00001 diff --git a/website/content/public/images/client-web/lexical-search.png b/website/content/public/images/client-web/lexical-search.png new file mode 100644 index 0000000000000000000000000000000000000000..737a1fc5abcc10904f4a15c283af68638c9d3eaa GIT binary patch literal 32256 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ÅYD%Kw1iqmqAxR>hdA7+ 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 literal 0 HcmV?d00001 diff --git a/website/content/public/images/client-web/twitter-setup.png b/website/content/public/images/client-web/twitter-setup.png new file mode 100644 index 0000000000000000000000000000000000000000..c6050fa086e33ffee2358e3a1fdc0a90bc2f827a GIT binary patch literal 80375 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 pnmkZ%u2-YS^}{$H?%=qLaH literal 0 HcmV?d00001 From fddc49d0a19651c3fd6d6d3536c68f677f84c45a Mon Sep 17 00:00:00 2001 From: Lan_zhijiang Date: Tue, 22 Sep 2026 10:19:57 +0800 Subject: [PATCH 05/22] =?UTF-8?q?docs(guide):=20=E4=BB=A5=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E4=BB=BB=E5=8A=A1=E9=87=8D=E7=BB=84=20Web=20=E6=8C=87?= =?UTF-8?q?=E5=BC=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- website/.vitepress/config.mts | 45 ++++++++++-------- website/README.md | 18 +++---- .../content/en/developer/ecosystem/index.md | 10 ++-- .../developer/ecosystem/source-extension.md | 20 ++++---- website/content/en/getting-started.md | 18 ++++--- website/content/en/guide/connect-cli.md | 12 ++--- website/content/en/guide/connect.md | 20 ++++---- website/content/en/guide/daily-use.md | 25 +++++----- website/content/en/guide/extensions.md | 5 ++ website/content/en/guide/first-source.md | 9 +++- website/content/en/guide/organization.md | 17 +++---- website/content/en/guide/schedules.md | 5 ++ website/content/en/guide/search.md | 8 ++-- website/content/en/guide/sinks/chatgpt.md | 24 +++++----- website/content/en/guide/sources.md | 4 +- website/content/en/guide/sources/mail.md | 5 ++ website/content/en/guide/sources/twitter.md | 15 +++--- website/content/en/guide/troubleshooting.md | 4 +- website/content/en/self-hosted/custom.md | 4 +- website/content/en/self-hosted/heroku-neon.md | 11 +++-- website/content/en/self-hosted/render-neon.md | 11 +++-- website/content/en/self-hosted/setup.md | 6 +-- .../client-web/extension-management.png | Bin 0 -> 55856 bytes .../images/client-web/info-base-graph.png | Bin 0 -> 91126 bytes .../public/images/client-web/mail-content.png | Bin 0 -> 52490 bytes .../images/client-web/settings-overview.png | Bin 0 -> 43383 bytes .../images/client-web/source-schedule.png | Bin 0 -> 55187 bytes .../images/client-web/sources-overview.png | Bin 0 -> 35049 bytes 28 files changed, 160 insertions(+), 136 deletions(-) create mode 100644 website/content/public/images/client-web/extension-management.png create mode 100644 website/content/public/images/client-web/info-base-graph.png create mode 100644 website/content/public/images/client-web/mail-content.png create mode 100644 website/content/public/images/client-web/settings-overview.png create mode 100644 website/content/public/images/client-web/source-schedule.png create mode 100644 website/content/public/images/client-web/sources-overview.png diff --git a/website/.vitepress/config.mts b/website/.vitepress/config.mts index 1d1d254..2da8a27 100644 --- a/website/.vitepress/config.mts +++ b/website/.vitepress/config.mts @@ -59,36 +59,41 @@ export default defineConfig({ { text: 'User Guide', items: [ + { text: 'Getting Started', link: '/getting-started' }, { - text: 'Getting Started', - link: '/getting-started', + text: 'Collection', items: [ - { text: 'Connect to Your Instance', link: '/guide/connect' }, { text: 'Prepare an Extension', link: '/guide/extensions' }, { text: 'Collect Your First Source', link: '/guide/first-source' }, { text: 'Run a Collection', link: '/guide/collect' }, - { text: 'Find What You Saved', link: '/guide/search' }, - { text: 'Use Your Information', link: '/guide/daily-use' }, + { + text: 'Connect More Sources', + link: '/guide/sources', + items: [ + { text: 'RSS and Atom', link: '/guide/sources/rss' }, + { text: 'GitHub Stars and Lists', link: '/guide/sources/github' }, + { text: 'Email over IMAP', link: '/guide/sources/mail' }, + { text: 'Telegram Inbox', link: '/guide/sources/telegram' }, + { text: 'Twitter / X Bookmarks', link: '/guide/sources/twitter' }, + { text: 'Memos-Compatible Capture', link: '/guide/sources/memos' }, + ], + }, + { text: 'Schedule Collection', link: '/guide/schedules' }, ], }, - { text: 'CLI / Agent Connection', link: '/guide/connect-cli' }, { - text: 'Connect More Sources', - link: '/guide/sources', - items: [ - { text: 'RSS and Atom', link: '/guide/sources/rss' }, - { text: 'GitHub Stars and Lists', link: '/guide/sources/github' }, - { text: 'Email over IMAP', link: '/guide/sources/mail' }, - { text: 'Telegram Inbox', link: '/guide/sources/telegram' }, - { text: 'Twitter / X Bookmarks', link: '/guide/sources/twitter' }, - { text: 'Memos-Compatible Capture', link: '/guide/sources/memos' }, - ], + text: 'Organization', + items: [{ text: 'Organize Your Information', link: '/guide/organization' }], }, - { text: 'Schedule Collection', link: '/guide/schedules' }, - { text: 'Organize Your Information', link: '/guide/organization' }, { - text: 'Sinks', - items: [{ text: 'Sinks: ChatGPT via MCP', link: '/guide/sinks/chatgpt' }], + text: 'Use', + items: [ + { text: 'Connect the Web App', link: '/guide/connect' }, + { text: 'Find What You Saved', link: '/guide/search' }, + { text: 'Browse and Use Your Information', link: '/guide/daily-use' }, + { text: 'CLI / Agent Connection', link: '/guide/connect-cli' }, + { text: 'ChatGPT via MCP', link: '/guide/sinks/chatgpt' }, + ], }, { text: 'Self-Hosted', diff --git a/website/README.md b/website/README.md index be62d9e..1dbf876 100644 --- a/website/README.md +++ b/website/README.md @@ -30,13 +30,13 @@ pnpm --dir website audit --audit-level high - Only English is active until the Chinese route set is complete or the locale switch has a deliberate fallback. - `/getting-started` owns the application-level What, Why, and How introduction. -- `/getting-started` and its sidebar children form one linear path inside the User Guide. Optional - topics such as more sources and self-hosting remain separate User Guide sections. +- `/getting-started` introduces one linear path whose pages are filed under Collection and Use in + the task-oriented sidebar. Optional topics remain outside that first-use sequence. - `/self-hosted/` contains instance setup, Render/Heroku quick-deployment guides, and the Custom guide. It is not a second Getting Started hierarchy. -- `/guide/` leaf pages own reusable client, collection, retrieval, scheduling, source, daily-use, - and troubleshooting procedures. Link to these pages from any onboarding path rather than to - sections buried inside the self-hosted walkthrough. +- The User Guide sidebar groups reusable procedures by Collection, Organization, and Use. Web and + Agent connections, Info Base browsing, and Sinks are Use topics; self-hosting remains a separate + deployment section. - `/guide/sources` selects independent source tutorials under `/guide/sources/`; `/guide/collect` owns shared collection and Job observation. Collection scheduling stays separate from Organization guidance; indexing is retrieval support, not Organization. Memos is documented separately as @@ -58,13 +58,13 @@ are resolved from the rewritten route, not the source file location. ## Page Authoring - User procedures default to client-web. Use the shared `InterfaceGuide` component with `#web` and - `#cli` slots for alternate steps on the same route; CLI instructions primarily serve Agents and - operators. The choice survives client-side navigation, not a full reload. Without JavaScript, both - sections remain readable. Keep shared prerequisites and limitations outside the slots. + `#cli` slots for alternate steps on the same route; CLI instructions primarily serve Agents. The + choice survives client-side navigation, not a full reload. Without JavaScript, both sections + remain readable. Keep shared prerequisites and limitations outside the slots. - Set `outline: false` on interface-switching pages: the default VitePress outline includes hidden slot headings. Do not expose links to invisible instructions. The site sidebar remains available. - State actual interface gaps instead of implying feature parity. Core package installation and - lexical maintenance still need CLI/operator steps; a browser wizard requires a compatible native + lexical maintenance may still need the user's Agent; a browser wizard requires a compatible native distribution as well as its Core collector. Check both against published Registry releases. - Keep exactly one H1 per page. - Add a concise page `description` in frontmatter. diff --git a/website/content/en/developer/ecosystem/index.md b/website/content/en/developer/ecosystem/index.md index ad8cf78..dd4eb23 100644 --- a/website/content/en/developer/ecosystem/index.md +++ b/website/content/en/developer/ecosystem/index.md @@ -5,8 +5,8 @@ description: Add integrations to InKCre without contributing to its core impleme # Ecosystem Developers -Build an integration for your own workflow or distribute it to other InKCre operators. You do not -need to contribute it to the Core repository. Start with the boundary your integration needs: +Build an integration for your own workflow or distribute it to other InKCre users. You do not need +to contribute it to the Core repository. Start with the boundary your integration needs: | Goal | Integration path | | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | @@ -34,13 +34,13 @@ Toolkit builds delivery metadata and preview registries; it does not run collect ## Trust and delivery An admitted Extension is trusted in-process code, not sandboxed user content. A malicious package -could access the runtime's information and credentials. Operators must review what they install; +could access the runtime's information and credentials. Users must review what they install; Registry publication is not proof of isolation. Use a separate test deployment and non-sensitive fixtures during development, with its own database and credentials. Package identity, Host compatibility, dependencies, and immutable releases are part of delivering a usable integration. Keep your own package, tests, release history, and user setup guide in your -repository. A public Registry requires its operator's namespace and publishing authorization; a -private development preview does not grant those rights. +repository. A public Registry requires a namespace and publishing authorization; a private +development preview does not grant those rights. Continue with [Build a Source Extension](/developer/ecosystem/source-extension). diff --git a/website/content/en/developer/ecosystem/source-extension.md b/website/content/en/developer/ecosystem/source-extension.md index 850f53e..4ca9421 100644 --- a/website/content/en/developer/ecosystem/source-extension.md +++ b/website/content/en/developer/ecosystem/source-extension.md @@ -81,7 +81,7 @@ namespaces = true The product coordinate (`yourname/notebook`), Python project name, and module path serve different purposes. The entry-point name and Extension's `ext_id` must agree. Declare direct dependencies; Core checks them against its existing environment and will not fetch arbitrary missing dependencies -while enabling your Extension. A new dependency may require an operator-built Core image. +while enabling your Extension. A new dependency may require a custom Core image. Save `extensions/notebook/__init__.py`: @@ -126,7 +126,7 @@ class Note(BaseModel): class Source(SourceBase[SourceConfig], config_cls=SourceConfig): - """Save changes to one operator-selected JSON document as text snapshots.""" + """Save changes to one user-selected JSON document as text snapshots.""" async def collect(self, job: JobModel, config: BaseModel) -> None: source_config = await self.get_config() @@ -165,9 +165,9 @@ indexable. This is a snapshot collector: a changed response creates another snapshot; returning to older text can create another one too. It neither reconciles a whole remote collection nor deletes earlier -snapshots. The endpoint is selected by the trusted operator, not exposed as a public URL-fetching -API. For a real service, add its authentication, bounded response handling, native identity, -pagination, rate limits, and incremental state according to that service's contract. +snapshots. The endpoint is selected by the user, not exposed as a public URL-fetching API. For a +real service, add its authentication, bounded response handling, native identity, pagination, rate +limits, and incremental state according to that service's contract. Source configuration is long-lived input, Source state remembers progress, and Job parameters/state belong to one execution. Use `collect_config_cls` for typed per-run options and @@ -223,8 +223,8 @@ public Registry. In the terminal with your CLI, inspect `inkcre-cli peer get self` and `inkcre-cli config get extension.registry`. Record the prior setting (a missing config is normal). A Peer-level `extension_registry_url` override takes precedence; use a test Peer without an override -or have its operator adjust that override. On this **isolated test instance only**, set the -deployment Registry origin, replacing the URL if Core is remote: +or adjust that override. On this **isolated test instance only**, set the deployment Registry +origin, replacing the URL if Core is remote: ```sh inkcre-cli config replace extension.registry --schema-id extension.registry.config.v1 --input-json '{"extension_registry_url":"http://127.0.0.1:8766"}' @@ -272,9 +272,9 @@ overwrite published bytes or treat disable/re-enable as Python module reload. Keep the package in your own repository. To distribute through a Registry, obtain permission for your namespace, prepare the exact release association, upload the finalized wheel, and publish the -release using the [Extension Toolkit](https://github.com/InKCre/ext-reg/tree/main/toolkit). -Operators then install your exact coordinate/version and follow your source-specific setup guide. -The static preview is a development path, not authorization to publish to `registry.inkcre.dev`. +release using the [Extension Toolkit](https://github.com/InKCre/ext-reg/tree/main/toolkit). Users +then install your exact coordinate/version and follow your source-specific setup guide. The static +preview is a development path, not authorization to publish to `registry.inkcre.dev`. For larger collectors, study the [RSS implementation](https://github.com/InKCre/core-py/tree/main/extensions/rss) for incremental diff --git a/website/content/en/getting-started.md b/website/content/en/getting-started.md index ca29dc7..3f966ac 100644 --- a/website/content/en/getting-started.md +++ b/website/content/en/getting-started.md @@ -51,14 +51,12 @@ does not create an instance for you. [setup guide](/self-hosted/setup) walks through quick deployment before you rejoin this journey. [Custom Self-Hosting](/self-hosted/custom) covers a step-by-step deployment on infrastructure you choose. -- **Already have access to an instance:** obtain connection details from the person operating it, - then [connect the Web app or your Agent](/guide/connect), [collect a source](/guide/first-source), - and [connect your everyday tools](/guide/daily-use). Skip the deployment steps. Only connect - information and tools you are authorized to use with that instance. +- **Already deployed your instance:** reuse the connection details you retained, then + [connect the Web app or your Agent](/guide/connect), [collect a source](/guide/first-source), and + [connect your everyday tools](/guide/daily-use). Skip the deployment steps. -This guide does not assume a hosted sign-up service or separate private user accounts inside an -instance. Access arrangements and trust matter; do not treat a shared instance as an isolated -personal account. +This guide assumes one user-owned deployment. InKCre is not a hosted sign-up service or a multi-user +account system; keep its instance authority on devices and tools you trust. ### 2. Collect one useful source @@ -70,9 +68,9 @@ permissions each requires. ### 3. Find and use what you collected Follow [Find What You Saved](/guide/search) to maintain the search index, search for something you -remember, and open a result. Then [Use Your Information](/guide/daily-use) to connect the Web app or -a tool you already use. This completes the linear Getting Started path, independently of your -deployment choice. +remember, and open a result. Then [Browse and Use Your Information](/guide/daily-use) to connect the +Web app or a tool you already use. This completes the linear Getting Started path, independently of +your deployment choice. Model-assisted Organization and semantic retrieval are optional next steps with their own provider and maintenance setup. InKCre does not automatically configure a daily digest or Telegram/email push diff --git a/website/content/en/guide/connect-cli.md b/website/content/en/guide/connect-cli.md index 9572698..3ad2e83 100644 --- a/website/content/en/guide/connect-cli.md +++ b/website/content/en/guide/connect-cli.md @@ -5,8 +5,8 @@ description: Connect the command-line tool to an existing InKCre instance. # Connect the CLI -You need a ready Core URL and the instance's private JWT secret. Obtain them from your deployment or -its operator. Keep the secret private; it grants instance authority, not an isolated personal login. +You need a ready Core URL and the instance's private JWT secret from your deployment. Keep the +secret private; it grants full deployment authority, not a limited app session. The CLI is primarily for your trusted Agent, and also supports manual terminal use. For your own interactive setup, start with [Connect to Your Instance](/guide/connect) and choose the Web app. The @@ -37,8 +37,8 @@ CLI connects over HTTPS; it does not run another server on your computer. } ``` - Replace both values, preserving the quotes. Use the Core base URL without `/readyz`. This file - contains a credential; keep it private. + Replace both values, preserving the quotes. Use the Core base URL without an endpoint path. This + file contains a credential; keep it private. 4. From that folder, save and check the connection: @@ -53,8 +53,8 @@ CLI connects over HTTPS; it does not run another server on your computer. directory. Protect that file too. **Checkpoint:** `connection check` can read your instance. For `401`, check the secret; for a -connection failure, check the Core URL and wake `/readyz`. In later terminal sessions, reactivate -the environment before using `inkcre-cli`. +connection failure, check the Core URL and wake Core from Web app Settings. In later terminal +sessions, reactivate the environment before using `inkcre-cli`. The [CLI reference](https://github.com/InKCre/core-py/blob/main/cli/README.md) owns command details. `--help` explains a command; `--schema` on input-taking commands shows the configuration accepted by diff --git a/website/content/en/guide/connect.md b/website/content/en/guide/connect.md index 95fc69f..2816931 100644 --- a/website/content/en/guide/connect.md +++ b/website/content/en/guide/connect.md @@ -7,26 +7,30 @@ description: Use the Web app yourself, or connect a trusted Agent through the CL # Connect to Your Instance Use **client-web** for your own day-to-day setup and reading. The **CLI** is primarily an interface -for your trusted Agent, and also works for operators who prefer a terminal. You do not need to -configure every interface before starting. The selector on these guides changes the instructions, -not your instance, and keeps your choice while navigating the site. +for your trusted Agent. You do not need to configure every interface before starting. The selector +on these guides changes the instructions, not your instance, and keeps your choice while navigating +the site. diff --git a/website/content/en/guide/sinks/chatgpt.md b/website/content/en/guide/sinks/chatgpt.md index 902c1c3..3ccf662 100644 --- a/website/content/en/guide/sinks/chatgpt.md +++ b/website/content/en/guide/sinks/chatgpt.md @@ -21,8 +21,7 @@ operate; it does not have to run beside Core. Keep it running whenever ChatGPT n ## Before you start - Have a working instance and complete [a known-item search](/guide/search) first. Retain its Core - URL and private JWT secret. If someone else operates the instance, ask them to perform the Sink - setup rather than requesting their administrator credentials. + URL and private JWT secret. - Install the CLI environment from [Connect the CLI](/guide/connect-cli). The setup example below uses its installed Python dependencies because the CLI does not yet have a `sink` command. - Confirm that your ChatGPT account/workspace permits developer-mode MCP connections and that you @@ -84,11 +83,11 @@ with httpx.Client(timeout=30, headers={"Authorization": f"Bearer {token}"}) as c print(f"MCP endpoint: {core_url}/sinks/{sink_id}/mcp") ``` -Save the printed Sink ID and MCP endpoint. Enabling applies to the Core Peer you contacted. Do not -append this path to the PostgREST URL or to `/readyz`. +Save the printed Sink ID and MCP endpoint. Enabling applies to the Core Peer you contacted. Append +the Sink path to the Core base URL, not the PostgREST URL. If a request times out or enabling fails, inspect the existing Sink before repeating creation: the -first write may already have succeeded. The operator can use authenticated `GET /sinks` and +first write may already have succeeded. You can use authenticated `GET /sinks` and `POST /sinks/{id}/enable` with the same short-lived Bearer JWT pattern. Do not publish a Sink management response; it can contain configuration credentials. The authoritative API and lifecycle details are in @@ -136,11 +135,10 @@ Replace the tunnel ID and server URL before running. The environment value conta are needed because discovery/probes and regular calls reach the protected Sink separately. See the [tunnel configuration reference](https://github.com/openai/tunnel-client/blob/master/docs/configuration.md). -In another terminal, run `curl --fail http://127.0.0.1:8080/readyz`; continue when it returns -HTTP 200. The local diagnostics UI is at `http://127.0.0.1:8080/ui`. If port 8080 is occupied, -choose another loopback port in the command and both URLs. Keep this listener local; do not expose -its UI as the MCP endpoint. Core must remain reachable too, including when hosted on a sleeping -plan. +Wait until the tunnel client reports that it is ready. Its local diagnostics UI is available from +the loopback address shown in its output. If port 8080 is occupied, choose another loopback port in +the command. Keep this listener local; do not expose its UI as the MCP endpoint. Core must remain +reachable too, including when hosted on a sleeping plan. ## 4. Add the connection in ChatGPT @@ -191,6 +189,6 @@ results. Refresh the ChatGPT connection after changing server tool metadata, then test in a new chat. Stopping `tunnel-client` interrupts this tunnel path; closing its terminal or sleeping its host does the same. Remove the connection from ChatGPT when no longer needed. To revoke the endpoint itself, -the operator can call authenticated `POST /sinks/{id}/disable`; disable before deleting a Sink. For -a leaked PAT, rotate the Sink config and update the tunnel environment before restarting it. Never -disable PAT authentication just to make discovery pass. +you can call authenticated `POST /sinks/{id}/disable`; disable before deleting a Sink. For a leaked +PAT, rotate the Sink config and update the tunnel environment before restarting it. Never disable +PAT authentication just to make discovery pass. diff --git a/website/content/en/guide/sources.md b/website/content/en/guide/sources.md index 0c39c3f..8a0cefb 100644 --- a/website/content/en/guide/sources.md +++ b/website/content/en/guide/sources.md @@ -12,7 +12,7 @@ first. Choose **Web app** for your own setup or **CLI / Agent** for terminal instructions. The choice follows you between guide pages. Shared prerequisites and source limitations apply to both. The [Extension guide](/guide/extensions) distinguishes browser setup from Core installation and calls -out operations that still need an operator or Agent. +out operations that still need your Agent. | What you want to collect | Setup guide | What you need | | -------------------------------------------- | ------------------------------------------------ | ---------------------------------------- | @@ -44,4 +44,4 @@ want to connect another service, follow [Build a Source Extension](/developer/ecosystem/source-extension). That is the ecosystem developer path; changing InKCre itself has a separate [contributor guide](/developer/contributing). -Next: [Use Your Information](/guide/daily-use). +Next: [Browse and Use Your Information](/guide/daily-use). diff --git a/website/content/en/guide/sources/mail.md b/website/content/en/guide/sources/mail.md index a185e1e..c0a1e43 100644 --- a/website/content/en/guide/sources/mail.md +++ b/website/content/en/guide/sources/mail.md @@ -51,6 +51,11 @@ Choose dates appropriate to your mailbox. The start is included and the end excl Job, then [index and search](/guide/search) for a known email. This collector does not send mail or generate email digests. Keep credentials and diagnostics private. +![A collected email opened in Info Base with content, attachments, and related messages](/images/client-web/mail-content.png) + +_After indexing, open a collected message from Info Base to read its content and follow related +mail._ + -Next: [Collect Your First Source](/guide/first-source). +Next: [Choose Your First Source](/guide/first-source). diff --git a/website/content/en/guide/daily-use.md b/website/content/en/guide/daily-use.md index ae5c44e..1649788 100644 --- a/website/content/en/guide/daily-use.md +++ b/website/content/en/guide/daily-use.md @@ -49,5 +49,4 @@ owns the endpoint and authentication contract. These paths make your saved information available on demand. They do not configure proactive notifications or a daily briefing. -Next: [Organize Your Information](/guide/organization), or use -[Troubleshooting](/guide/troubleshooting) when a workflow fails. +Use [Troubleshooting](/guide/troubleshooting) when a workflow fails. diff --git a/website/content/en/guide/first-source.md b/website/content/en/guide/first-source.md index 1d55e55..42dc492 100644 --- a/website/content/en/guide/first-source.md +++ b/website/content/en/guide/first-source.md @@ -1,16 +1,14 @@ --- -title: Collect Your First Source -description: Choose a source and complete your first collection and search. +title: Choose Your First Source +description: Choose one small information source for your first collection. --- -# Collect Your First Source +# Choose Your First Source Start with a working instance and a [connected Web app or Agent](/guide/connect). The guides default to Web instructions, with a CLI / Agent alternative. You do not need to connect every account at once: choose one small source with an item you will recognize. -## Choose your first source - [RSS or Atom](/guide/sources/rss) is a useful first choice because a public feed needs no account credentials. If you prefer your own saved information, start with [GitHub Stars](/guide/sources/github), [email](/guide/sources/mail), @@ -23,13 +21,12 @@ automatically enable it or collect anything. [Prepare the Extension](/guide/exte then configure the Source in the Web app. Select the online Core client when installing a Python-only collector; the browser does not need to run that Extension itself. -## Complete the first loop +## Continue the first loop -1. Follow your chosen source's guide to enable its Extension and create the Source. Open its details - in the Web app, or retain the returned **Source ID** when using the CLI. -2. [Run a Collection](/guide/collect) and wait for the returned **Job ID** to finish. These are - different IDs: the Source persists across runs; each Job represents one run. -3. [Find What You Saved](/guide/search): maintain the lexical index and search for a known item. +1. [Prepare the Extension](/guide/extensions) named by your source guide. +2. Return to that guide to create the Source. +3. [Run a Collection](/guide/collect) and wait for its Job to finish. +4. [Find What You Saved](/guide/search) and open a known item. ![The client-web Sources page showing saved Sources and their collection actions](/images/client-web/sources-overview.png) @@ -40,7 +37,4 @@ collection from the row._ successful empty collection may be normal; each source guide explains what is eligible for collection. -After you [find a real item](/guide/search), Getting Started is complete. Continue with -[Application / Use](/guide/daily-use), [connect more sources](/guide/sources), -[schedule collection](/guide/schedules), or -[organize information and maintain retrieval support](/guide/organization). +After you find a real item, Getting Started is complete. diff --git a/website/content/en/guide/organization.md b/website/content/en/guide/organization.md index f29ec69..bd7109a 100644 --- a/website/content/en/guide/organization.md +++ b/website/content/en/guide/organization.md @@ -1,7 +1,7 @@ --- title: Organize Your Information outline: false -description: Improve information already in your info-base and keep retrieval support current. +description: Improve information already collected in your InKCre instance. --- # Organize Your Information @@ -66,31 +66,5 @@ inkcre-cli cron create --job-type core.organization.media_interpretation.v1 --in Inspect the returned Cron and its later Jobs. Use a different frequency only when your incoming media volume and provider budget justify it. -## Keep retrieval support current - -Lexical maintenance makes existing info-base content searchable by remembered words. It does not -collect information or author graph meaning. Ask your trusted Agent to check whether the instance -already has a maintenance schedule; create only one if it does not: - -```sh -inkcre-cli cron create --job-type core.feature_retrieval.lexical.maintain.v1 --input-json '{"schedule":"*/10 * * * *","job_parameters":{}}' -``` - -This five-field schedule runs every ten minutes while Core is available. Inspect the returned Cron -and its `last_job`; maintenance processes a bounded batch, and the Job carries its own result and -diagnostics. Avoid duplicate schedules. Sleeping hosts miss occurrences and do not automatically -catch up. - -To pause future maintenance while keeping the Cron record, run: - -```sh -inkcre-cli cron disable ID -``` - -Replace `ID` with the actual Cron ID. Pausing index maintenance does not stop collection, -Organization, or remove stored information. Likewise, a [collection schedule](/guide/schedules) does -not maintain this index. Semantic retrieval uses its own embedding profile and maintenance; an LLM -key or lexical schedule does not enable it. - -Next: [Connect More Sources](/guide/sources), or -[Browse and Use Your Information](/guide/daily-use). +Search indexes and embeddings are retrieval support, not Organization output. Maintain them through +[Find What You Saved](/guide/search#keep-search-current). diff --git a/website/content/en/guide/schedules.md b/website/content/en/guide/schedules.md index 1a91112..b24bd48 100644 --- a/website/content/en/guide/schedules.md +++ b/website/content/en/guide/schedules.md @@ -6,14 +6,11 @@ description: Keep information sources current with explicit collection schedules # Schedule Collection -Start with a [connected interface](/guide/connect). Choose Web for your own setup, or CLI / Agent -for terminal instructions. +You need a [connected interface](/guide/connect) and a Source with one successful manual run. diff --git a/website/content/en/guide/search.md b/website/content/en/guide/search.md index b638d20..aa5b817 100644 --- a/website/content/en/guide/search.md +++ b/website/content/en/guide/search.md @@ -6,28 +6,24 @@ description: Index collected information and retrieve it by remembered words. # Find What You Saved -Start with a [connected interface](/guide/connect). Choose Web for your own setup, or CLI / Agent -for terminal instructions. +You need a [connected interface](/guide/connect) and at least one completed collection.