Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Cloudron Forum

Apps | Demo | Docs | Install
  1. Cloudron Forum
  2. App Wishlist
  3. AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative

AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative

Scheduled Pinned Locked Moved App Wishlist
42 Posts 21 Posters 10.7k Views 29 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • SansGuidonS SansGuidon

    @andreasdueren I'm happy to try it on my instance thanks to you! Installed and deployed 😜 , I'll test

    EDIT: in the end, I notice I don't understand how to make Affine work with my AI subscription (Mistral) and I'm also lost in Affine Admin View . Maybe it's just not mature enough for me at this stage

    Your packaging looks great, at least it works like a charm for me 🙂 (I just had to clone the repo so I have the CloudronManifest available for install).

    Thanks!

    andreasduerenA Offline
    andreasduerenA Offline
    andreasdueren
    wrote last edited by
    #32

    @SansGuidon said in AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative:

    I don't understand how to make Affine work with my AI subscription (Mistral)

    I haven't tested any of the AI features. But in theory you should be able to enter any openai compatible endpoint. I assume, Mistral does have one?

    What are your issues with the admin view? It's pretty basic with few variables able to be set up, most things are set up with env and should be ready with the package as is.

    SansGuidonS 1 Reply Last reply
    1
    • andreasduerenA andreasdueren

      @SansGuidon said in AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative:

      I don't understand how to make Affine work with my AI subscription (Mistral)

      I haven't tested any of the AI features. But in theory you should be able to enter any openai compatible endpoint. I assume, Mistral does have one?

      What are your issues with the admin view? It's pretty basic with few variables able to be set up, most things are set up with env and should be ready with the package as is.

      SansGuidonS Offline
      SansGuidonS Offline
      SansGuidon
      wrote last edited by SansGuidon
      #33

      @andreasdueren said in AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative:

      @SansGuidon said in AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative:

      I don't understand how to make Affine work with my AI subscription (Mistral)

      I haven't tested any of the AI features. But in theory you should be able to enter any openai compatible endpoint. I assume, Mistral does have one?

      What are your issues with the admin view? It's pretty basic with few variables able to be set up, most things are set up with env and should be ready with the package as is.

      What I'm confused about is the onboarding flow: we are directed to the Admin view in the accounts list (which are not verified but I don't see how to solve that).
      I'm trying to configure AI but no way to confirm if my entered settings are valid? The save button is just an icon without text, on a corner of the page, not really a good UX.
      Then how do we find the main app from the Admin view? The main icon at top left is not even a link. Maybe the Admin view is the poor part of the UX, but that's where we land first and it looks like an escape game.

      I find it just not super user friendly, maybe we gets used to it 🙂 but it looks like the Frontend part is worth improving.

      EDIT: I tried to use Mistral but it fails on copilot provider not available, something like that
      I found this blog post, which mentions that maybe we have to tweak the code of Affine to make things work. https://sneekes.app/posts/getting_affine_ai_copilot_working_with_custom_models_and_ollama/

      I'll dig deeper in that later 🙂 , kids require attention 😜

      About me / Now

      andreasduerenA 2 Replies Last reply
      2
      • SansGuidonS SansGuidon

        @andreasdueren said in AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative:

        @SansGuidon said in AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative:

        I don't understand how to make Affine work with my AI subscription (Mistral)

        I haven't tested any of the AI features. But in theory you should be able to enter any openai compatible endpoint. I assume, Mistral does have one?

        What are your issues with the admin view? It's pretty basic with few variables able to be set up, most things are set up with env and should be ready with the package as is.

        What I'm confused about is the onboarding flow: we are directed to the Admin view in the accounts list (which are not verified but I don't see how to solve that).
        I'm trying to configure AI but no way to confirm if my entered settings are valid? The save button is just an icon without text, on a corner of the page, not really a good UX.
        Then how do we find the main app from the Admin view? The main icon at top left is not even a link. Maybe the Admin view is the poor part of the UX, but that's where we land first and it looks like an escape game.

        I find it just not super user friendly, maybe we gets used to it 🙂 but it looks like the Frontend part is worth improving.

        EDIT: I tried to use Mistral but it fails on copilot provider not available, something like that
        I found this blog post, which mentions that maybe we have to tweak the code of Affine to make things work. https://sneekes.app/posts/getting_affine_ai_copilot_working_with_custom_models_and_ollama/

        I'll dig deeper in that later 🙂 , kids require attention 😜

        andreasduerenA Offline
        andreasduerenA Offline
        andreasdueren
        wrote last edited by
        #34

        @SansGuidon said in AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative:

        @andreasdueren said in AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative:

        @SansGuidon said in AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative:

        I don't understand how to make Affine work with my AI subscription (Mistral)

        I haven't tested any of the AI features. But in theory you should be able to enter any openai compatible endpoint. I assume, Mistral does have one?

        What are your issues with the admin view? It's pretty basic with few variables able to be set up, most things are set up with env and should be ready with the package as is.

        What I'm confused about is the onboarding flow: we are directed to the Admin view in the accounts list (which are not verified but I don't see how to solve that).
        I'm trying to configure AI but no way to confirm if my entered settings are valid? The save button is just an icon without text, on a corner of the page, not really a good UX.
        Then how do we find the main app from the Admin view? The main icon at top left is not even a link. Maybe the Admin view is the poor part of the UX, but that's where we land first and it looks like an escape game.

        I find it just not super user friendly, maybe we gets used to it 🙂 but it looks like the Frontend part is worth improving.

        EDIT: I tried to use Mistral but it fails on copilot provider not available, something like that
        I found this blog post, which mentions that maybe we have to tweak the code of Affine to make things work. https://sneekes.app/posts/getting_affine_ai_copilot_working_with_custom_models_and_ollama/

        I'll dig deeper in that later 🙂 , kids require attention 😜

        Yeah onboarding was a bit odd. You land in the admin view and need to manually navigate to the base domain to see the app. After the admin was created you can log in with openID though and make that user an admin.

        1 Reply Last reply
        0
        • SansGuidonS SansGuidon

          @andreasdueren said in AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative:

          @SansGuidon said in AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative:

          I don't understand how to make Affine work with my AI subscription (Mistral)

          I haven't tested any of the AI features. But in theory you should be able to enter any openai compatible endpoint. I assume, Mistral does have one?

          What are your issues with the admin view? It's pretty basic with few variables able to be set up, most things are set up with env and should be ready with the package as is.

          What I'm confused about is the onboarding flow: we are directed to the Admin view in the accounts list (which are not verified but I don't see how to solve that).
          I'm trying to configure AI but no way to confirm if my entered settings are valid? The save button is just an icon without text, on a corner of the page, not really a good UX.
          Then how do we find the main app from the Admin view? The main icon at top left is not even a link. Maybe the Admin view is the poor part of the UX, but that's where we land first and it looks like an escape game.

          I find it just not super user friendly, maybe we gets used to it 🙂 but it looks like the Frontend part is worth improving.

          EDIT: I tried to use Mistral but it fails on copilot provider not available, something like that
          I found this blog post, which mentions that maybe we have to tweak the code of Affine to make things work. https://sneekes.app/posts/getting_affine_ai_copilot_working_with_custom_models_and_ollama/

          I'll dig deeper in that later 🙂 , kids require attention 😜

          andreasduerenA Offline
          andreasduerenA Offline
          andreasdueren
          wrote last edited by andreasdueren
          #35

          @SansGuidon

          I tried to use Mistral but it fails on copilot provider not available, something like that
          I found this blog post, which mentions that maybe we have to tweak the code of Affine to make things work. https://sneekes.app/posts/getting_affine_ai_copilot_working_with_custom_models_and_ollama/

          Weird. I can try to modify something for the package but this makes it sound like you need to select a provider on built which isn’t really optimal.

          Edit: Just sent you a message for further testing.

          1 Reply Last reply
          0
          • andreasduerenA Offline
            andreasduerenA Offline
            andreasdueren
            wrote last edited by
            #36

            I think I also see part of the problem:

            It requires the cloud indexer to be running Indexer

            I'll try to add manticore to the package.

            1 Reply Last reply
            1
            • andreasduerenA Offline
              andreasduerenA Offline
              andreasdueren
              wrote last edited by
              #37

              This is now including manticore: andreasdueren/affine-cloudron:0.25.23

              1 Reply Last reply
              4
              • SansGuidonS Offline
                SansGuidonS Offline
                SansGuidon
                wrote last edited by SansGuidon
                #38

                Thanks @andreasdueren.
                I tried wiring AFFiNE’s openai provider to Mistral (baseUrl=https://api.mistral.ai/v1, model mistral-large-latest + scenarios override), but AFFiNE is calling the new OpenAI Responses API (/v1/responses), while Mistral only exposes the older /v1/chat/completions, so I get 404s ("no Route matched with those values").

                This seems to be the same limitation described in GitHub issues #13617 and #13480, where the suggested fix is to set "oldApiStyle": true under copilot.providers.openai in config.json to force the old chat/completions style. I've tried that without success despite it's part of the code https://github.com/toeverything/AFFiNE/blob/62fe6982fbdbfa9d6fcbad78019e4d6cda62338a/packages/backend/server/src/plugins/copilot/providers/openai.ts#L55

                I’m not sure whether the Cloudron AFFiNE package already includes any other workaround, so right now Mistral isn’t really usable as an OpenAI-compatible backend in this setup.

                Nov 17 09:50:05 APICallError [AI_APICallError]: Not Found
                Nov 17 09:50:05 at file:///run/affine/affine-build/node_modules/@ai-sdk/provider-utils/dist/index.mjs:890:14
                Nov 17 09:50:05 at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
                Nov 17 09:50:05 at async postToApi (file:///run/affine/affine-build/node_modules/@ai-sdk/provider-utils/dist/index.mjs:721:28)
                Nov 17 09:50:05 at async OpenAIResponsesLanguageModel.doStream (file:///run/affine/affine-build/node_modules/@ai-sdk/openai/dist/index.mjs:3631:50)
                Nov 17 09:50:05 at async fn (file:///run/affine/affine-build/node_modules/ai/dist/index.mjs:4987:27)
                Nov 17 09:50:05 at async file:///run/affine/affine-build/node_modules/ai/dist/index.mjs:1544:22
                Nov 17 09:50:05 at async _retryWithExponentialBackoff (file:///run/affine/affine-build/node_modules/ai/dist/index.mjs:1695:12)
                Nov 17 09:50:05 at async streamStep (file:///run/affine/affine-build/node_modules/ai/dist/index.mjs:4943:15)
                Nov 17 09:50:05 at async fn (file:///run/affine/affine-build/node_modules/ai/dist/index.mjs:5284:9)
                Nov 17 09:50:05 at async file:///run/affine/affine-build/node_modules/ai/dist/index.mjs:1544:22 {
                Nov 17 09:50:05 cause: undefined,
                Nov 17 09:50:05 url: 'https://api.mistral.ai/v1/responses',
                Nov 17 09:50:05 requestBodyValues: {
                Nov 17 09:50:05 model: 'mistral-large-latest',
                Nov 17 09:50:05 input: [ [Object], [Object] ],
                Nov 17 09:50:05 temperature: 0,
                Nov 17 09:50:05 top_p: undefined,
                Nov 17 09:50:05 max_output_tokens: 4096,
                Nov 17 09:50:05 max_tool_calls: undefined,
                Nov 17 09:50:05 metadata: undefined,
                Nov 17 09:50:05 parallel_tool_calls: undefined,
                Nov 17 09:50:05 previous_response_id: undefined,
                Nov 17 09:50:05 store: undefined,
                Nov 17 09:50:05 user: '<REDACTED>',
                Nov 17 09:50:05 instructions: undefined,
                Nov 17 09:50:05 service_tier: undefined,
                Nov 17 09:50:05 include: [ 'web_search_call.action.sources' ],
                Nov 17 09:50:05 prompt_cache_key: undefined,
                Nov 17 09:50:05 safety_identifier: undefined,
                Nov 17 09:50:05 top_logprobs: undefined,
                Nov 17 09:50:05 truncation: undefined,
                Nov 17 09:50:05 tools: [
                Nov 17 09:50:05 [Object], [Object],
                Nov 17 09:50:05 [Object], [Object],
                Nov 17 09:50:05 [Object], [Object],
                Nov 17 09:50:05 [Object], [Object]
                Nov 17 09:50:05 ],
                Nov 17 09:50:05 tool_choice: 'auto',
                Nov 17 09:50:05 stream: true
                Nov 17 09:50:05 },
                Nov 17 09:50:05 statusCode: 404,
                Nov 17 09:50:05 responseHeaders: {
                Nov 17 09:50:05 'access-control-allow-origin': '*',
                Nov 17 09:50:05 'alt-svc': 'h3=":443"; ma=86400',
                Nov 17 09:50:05 'cf-cache-status': 'DYNAMIC',
                Nov 17 09:50:05 'cf-ray': '99fdfa7caeef2c00-FRA',
                Nov 17 09:50:05 connection: 'keep-alive',
                Nov 17 09:50:05 'content-encoding': 'br',
                Nov 17 09:50:05 'content-type': 'application/json; charset=utf-8',
                Nov 17 09:50:05 date: 'Mon, 17 Nov 2025 08:50:04 GMT',
                Nov 17 09:50:05 server: 'cloudflare',
                Nov 17 09:50:05 'set-cookie': '_cfuvid=<REDACTED>-1763369404992-<REDACTED_IP>-604800000; path=/; domain=.mistral.ai; HttpOnly; Secure; SameSite=None',
                Nov 17 09:50:05 'strict-transport-security': 'max-age=15552000; includeSubDomains; preload',
                Nov 17 09:50:05 'transfer-encoding': 'chunked',
                Nov 17 09:50:05 'x-content-type-options': 'nosniff',
                Nov 17 09:50:05 'x-kong-response-latency': '1'
                Nov 17 09:50:05 },
                Nov 17 09:50:05 responseBody: '{\n' +
                Nov 17 09:50:05 ' "message":"no Route matched with those values",\n' +
                Nov 17 09:50:05 ' "request_id":"<REDACTED>"\n' +
                Nov 17 09:50:05 '}',
                Nov 17 09:50:05 isRetryable: false,
                Nov 17 09:50:05 data: undefined,
                Nov 17 09:50:05 [Symbol(vercel.ai.error)]: true,
                Nov 17 09:50:05 [Symbol(vercel.ai.error.AI_APICallError)]: true
                Nov 17 09:50:05 }
                
                

                Also interesting read: https://sneekes.app/posts/getting_affine_ai_copilot_working_with_custom_models_and_ollama/

                TLDR: Too bad for me 💊

                EDIT: after deleting the keys from table app_configs and forcing the oldApiStyle: true in openai provider config, I get a different stack trace but still not solving the issue 😜 , see below

                Nov 17 10:06:30 [Nest] 72 - 11/17/2025, 9:06:30 AM ERROR [OpenAIProvider] <selfhosted:event:27148b39-55a5-4e71-91ec-ce77dd2bb451> Failed to fetch available models
                Nov 17 10:06:30 ZodError: [
                Nov 17 10:06:30 {
                Nov 17 10:06:30 "code": "invalid_type",
                Nov 17 10:06:30 "expected": "array",
                Nov 17 10:06:30 "received": "undefined",
                Nov 17 10:06:30 "path": [
                Nov 17 10:06:30 "data"
                Nov 17 10:06:30 ],
                Nov 17 10:06:30 "message": "Required"
                Nov 17 10:06:30 }
                Nov 17 10:06:30 ]
                Nov 17 10:06:30 at get error (file:///run/affine/affine-build/node_modules/zod/dist/esm/v3/types.js:51:31)
                Nov 17 10:06:30 at ZodObject.parse (file:///run/affine/affine-build/node_modules/zod/dist/esm/v3/types.js:126:22)
                Nov 17 10:06:30 at file:///run/affine/affine-build/dist/main.js:122774:66
                Nov 17 10:06:30 at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
                Nov 17 10:06:30 at async OpenAIProvider.refreshOnlineModels (file:///run/affine/affine-build/dist/main.js:122769:34)
                Nov 17 10:06:30 <REDACTED_IP> - - [17/Nov/2025:09:06:30 +0000] "GET /api/auth/session HTTP/1.1" 200 193 "https://affine.zoemp.be/workspace/4Ob0-Wxj2fHaDhkgaW6gC/Y4cspZCWKz" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<REDACTED_IP> Safari/537.36"
                ...
                
                ...
                Nov 17 10:06:37 [Nest] 72 - 11/17/2025, 9:06:37 AM DEBUG [CopilotProviderFactory] <selfhosted:http:ef38c027-0882-4057-9f12-f7a552f391a6> Resolving copilot provider for output type: object
                Nov 17 10:06:37 [Nest] 72 - 11/17/2025, 9:06:37 AM ERROR [Sse] <selfhosted:http:ef38c027-0882-4057-9f12-f7a552f391a6> no_copilot_provider_available ({"sessionId":"<REDACTED>","params":{"messageId":"79b66a60-8f15-43fe-ac11-6b90e2a7e300"},"throwInStream":false})
                Nov 17 10:06:37 no_copilot_provider_available: No copilot provider available: mistral-large-latest
                Nov 17 10:06:37 at CopilotController.chooseProvider (file:///run/affine/affine-build/dist/main.js:130026:19)
                Nov 17 10:06:37 at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
                Nov 17 10:06:37 at async CopilotController.prepareChatSession (file:///run/affine/affine-build/dist/main.js:130080:37)
                Nov 17 10:06:37 at async CopilotController.chatStreamObject (file:///run/affine/affine-build/dist/main.js:130214:64)
                Nov 17 10:06:37 at async CopilotController.<anonymous> (file:///run/affine/affine-build/dist/main.js:6374:20)
                

                About me / Now

                andreasduerenA 1 Reply Last reply
                1
                • SansGuidonS SansGuidon

                  Thanks @andreasdueren.
                  I tried wiring AFFiNE’s openai provider to Mistral (baseUrl=https://api.mistral.ai/v1, model mistral-large-latest + scenarios override), but AFFiNE is calling the new OpenAI Responses API (/v1/responses), while Mistral only exposes the older /v1/chat/completions, so I get 404s ("no Route matched with those values").

                  This seems to be the same limitation described in GitHub issues #13617 and #13480, where the suggested fix is to set "oldApiStyle": true under copilot.providers.openai in config.json to force the old chat/completions style. I've tried that without success despite it's part of the code https://github.com/toeverything/AFFiNE/blob/62fe6982fbdbfa9d6fcbad78019e4d6cda62338a/packages/backend/server/src/plugins/copilot/providers/openai.ts#L55

                  I’m not sure whether the Cloudron AFFiNE package already includes any other workaround, so right now Mistral isn’t really usable as an OpenAI-compatible backend in this setup.

                  Nov 17 09:50:05 APICallError [AI_APICallError]: Not Found
                  Nov 17 09:50:05 at file:///run/affine/affine-build/node_modules/@ai-sdk/provider-utils/dist/index.mjs:890:14
                  Nov 17 09:50:05 at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
                  Nov 17 09:50:05 at async postToApi (file:///run/affine/affine-build/node_modules/@ai-sdk/provider-utils/dist/index.mjs:721:28)
                  Nov 17 09:50:05 at async OpenAIResponsesLanguageModel.doStream (file:///run/affine/affine-build/node_modules/@ai-sdk/openai/dist/index.mjs:3631:50)
                  Nov 17 09:50:05 at async fn (file:///run/affine/affine-build/node_modules/ai/dist/index.mjs:4987:27)
                  Nov 17 09:50:05 at async file:///run/affine/affine-build/node_modules/ai/dist/index.mjs:1544:22
                  Nov 17 09:50:05 at async _retryWithExponentialBackoff (file:///run/affine/affine-build/node_modules/ai/dist/index.mjs:1695:12)
                  Nov 17 09:50:05 at async streamStep (file:///run/affine/affine-build/node_modules/ai/dist/index.mjs:4943:15)
                  Nov 17 09:50:05 at async fn (file:///run/affine/affine-build/node_modules/ai/dist/index.mjs:5284:9)
                  Nov 17 09:50:05 at async file:///run/affine/affine-build/node_modules/ai/dist/index.mjs:1544:22 {
                  Nov 17 09:50:05 cause: undefined,
                  Nov 17 09:50:05 url: 'https://api.mistral.ai/v1/responses',
                  Nov 17 09:50:05 requestBodyValues: {
                  Nov 17 09:50:05 model: 'mistral-large-latest',
                  Nov 17 09:50:05 input: [ [Object], [Object] ],
                  Nov 17 09:50:05 temperature: 0,
                  Nov 17 09:50:05 top_p: undefined,
                  Nov 17 09:50:05 max_output_tokens: 4096,
                  Nov 17 09:50:05 max_tool_calls: undefined,
                  Nov 17 09:50:05 metadata: undefined,
                  Nov 17 09:50:05 parallel_tool_calls: undefined,
                  Nov 17 09:50:05 previous_response_id: undefined,
                  Nov 17 09:50:05 store: undefined,
                  Nov 17 09:50:05 user: '<REDACTED>',
                  Nov 17 09:50:05 instructions: undefined,
                  Nov 17 09:50:05 service_tier: undefined,
                  Nov 17 09:50:05 include: [ 'web_search_call.action.sources' ],
                  Nov 17 09:50:05 prompt_cache_key: undefined,
                  Nov 17 09:50:05 safety_identifier: undefined,
                  Nov 17 09:50:05 top_logprobs: undefined,
                  Nov 17 09:50:05 truncation: undefined,
                  Nov 17 09:50:05 tools: [
                  Nov 17 09:50:05 [Object], [Object],
                  Nov 17 09:50:05 [Object], [Object],
                  Nov 17 09:50:05 [Object], [Object],
                  Nov 17 09:50:05 [Object], [Object]
                  Nov 17 09:50:05 ],
                  Nov 17 09:50:05 tool_choice: 'auto',
                  Nov 17 09:50:05 stream: true
                  Nov 17 09:50:05 },
                  Nov 17 09:50:05 statusCode: 404,
                  Nov 17 09:50:05 responseHeaders: {
                  Nov 17 09:50:05 'access-control-allow-origin': '*',
                  Nov 17 09:50:05 'alt-svc': 'h3=":443"; ma=86400',
                  Nov 17 09:50:05 'cf-cache-status': 'DYNAMIC',
                  Nov 17 09:50:05 'cf-ray': '99fdfa7caeef2c00-FRA',
                  Nov 17 09:50:05 connection: 'keep-alive',
                  Nov 17 09:50:05 'content-encoding': 'br',
                  Nov 17 09:50:05 'content-type': 'application/json; charset=utf-8',
                  Nov 17 09:50:05 date: 'Mon, 17 Nov 2025 08:50:04 GMT',
                  Nov 17 09:50:05 server: 'cloudflare',
                  Nov 17 09:50:05 'set-cookie': '_cfuvid=<REDACTED>-1763369404992-<REDACTED_IP>-604800000; path=/; domain=.mistral.ai; HttpOnly; Secure; SameSite=None',
                  Nov 17 09:50:05 'strict-transport-security': 'max-age=15552000; includeSubDomains; preload',
                  Nov 17 09:50:05 'transfer-encoding': 'chunked',
                  Nov 17 09:50:05 'x-content-type-options': 'nosniff',
                  Nov 17 09:50:05 'x-kong-response-latency': '1'
                  Nov 17 09:50:05 },
                  Nov 17 09:50:05 responseBody: '{\n' +
                  Nov 17 09:50:05 ' "message":"no Route matched with those values",\n' +
                  Nov 17 09:50:05 ' "request_id":"<REDACTED>"\n' +
                  Nov 17 09:50:05 '}',
                  Nov 17 09:50:05 isRetryable: false,
                  Nov 17 09:50:05 data: undefined,
                  Nov 17 09:50:05 [Symbol(vercel.ai.error)]: true,
                  Nov 17 09:50:05 [Symbol(vercel.ai.error.AI_APICallError)]: true
                  Nov 17 09:50:05 }
                  
                  

                  Also interesting read: https://sneekes.app/posts/getting_affine_ai_copilot_working_with_custom_models_and_ollama/

                  TLDR: Too bad for me 💊

                  EDIT: after deleting the keys from table app_configs and forcing the oldApiStyle: true in openai provider config, I get a different stack trace but still not solving the issue 😜 , see below

                  Nov 17 10:06:30 [Nest] 72 - 11/17/2025, 9:06:30 AM ERROR [OpenAIProvider] <selfhosted:event:27148b39-55a5-4e71-91ec-ce77dd2bb451> Failed to fetch available models
                  Nov 17 10:06:30 ZodError: [
                  Nov 17 10:06:30 {
                  Nov 17 10:06:30 "code": "invalid_type",
                  Nov 17 10:06:30 "expected": "array",
                  Nov 17 10:06:30 "received": "undefined",
                  Nov 17 10:06:30 "path": [
                  Nov 17 10:06:30 "data"
                  Nov 17 10:06:30 ],
                  Nov 17 10:06:30 "message": "Required"
                  Nov 17 10:06:30 }
                  Nov 17 10:06:30 ]
                  Nov 17 10:06:30 at get error (file:///run/affine/affine-build/node_modules/zod/dist/esm/v3/types.js:51:31)
                  Nov 17 10:06:30 at ZodObject.parse (file:///run/affine/affine-build/node_modules/zod/dist/esm/v3/types.js:126:22)
                  Nov 17 10:06:30 at file:///run/affine/affine-build/dist/main.js:122774:66
                  Nov 17 10:06:30 at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
                  Nov 17 10:06:30 at async OpenAIProvider.refreshOnlineModels (file:///run/affine/affine-build/dist/main.js:122769:34)
                  Nov 17 10:06:30 <REDACTED_IP> - - [17/Nov/2025:09:06:30 +0000] "GET /api/auth/session HTTP/1.1" 200 193 "https://affine.zoemp.be/workspace/4Ob0-Wxj2fHaDhkgaW6gC/Y4cspZCWKz" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/<REDACTED_IP> Safari/537.36"
                  ...
                  
                  ...
                  Nov 17 10:06:37 [Nest] 72 - 11/17/2025, 9:06:37 AM DEBUG [CopilotProviderFactory] <selfhosted:http:ef38c027-0882-4057-9f12-f7a552f391a6> Resolving copilot provider for output type: object
                  Nov 17 10:06:37 [Nest] 72 - 11/17/2025, 9:06:37 AM ERROR [Sse] <selfhosted:http:ef38c027-0882-4057-9f12-f7a552f391a6> no_copilot_provider_available ({"sessionId":"<REDACTED>","params":{"messageId":"79b66a60-8f15-43fe-ac11-6b90e2a7e300"},"throwInStream":false})
                  Nov 17 10:06:37 no_copilot_provider_available: No copilot provider available: mistral-large-latest
                  Nov 17 10:06:37 at CopilotController.chooseProvider (file:///run/affine/affine-build/dist/main.js:130026:19)
                  Nov 17 10:06:37 at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
                  Nov 17 10:06:37 at async CopilotController.prepareChatSession (file:///run/affine/affine-build/dist/main.js:130080:37)
                  Nov 17 10:06:37 at async CopilotController.chatStreamObject (file:///run/affine/affine-build/dist/main.js:130214:64)
                  Nov 17 10:06:37 at async CopilotController.<anonymous> (file:///run/affine/affine-build/dist/main.js:6374:20)
                  
                  andreasduerenA Offline
                  andreasduerenA Offline
                  andreasdueren
                  wrote last edited by
                  #39

                  @SansGuidon Hmm yes it doesn't seem to be very flexible about what kind of models you use.

                  SansGuidonS 1 Reply Last reply
                  0
                  • andreasduerenA andreasdueren

                    @SansGuidon Hmm yes it doesn't seem to be very flexible about what kind of models you use.

                    SansGuidonS Offline
                    SansGuidonS Offline
                    SansGuidon
                    wrote last edited by
                    #40

                    @andreasdueren said in AFFiNE - open-source Notion, Miro, Monday, Outline, Appflowy alternative:

                    @SansGuidon Hmm yes it doesn't seem to be very flexible about what kind of models you use.

                    I've reached out to the AFFINE's community on some issue to have an idea if i's difficult to solve🙏🏼 I'll keep you posted!
                    Anyway, thank you ☺️

                    About me / Now

                    1 Reply Last reply
                    2
                    • andreasduerenA Offline
                      andreasduerenA Offline
                      andreasdueren
                      wrote last edited by
                      #41

                      In general I'm not sure how these settings work either. For example if I change Chat to claude, it still sticks with Gemini. And if I select Gemini Pro, it tells me I need a subscription. 🤷

                      Screenshot 2025-11-17 at 08.09.49.png
                      Screenshot 2025-11-17 at 08.07.52.png
                      Screenshot 2025-11-17 at 08.10.43.png

                      1 Reply Last reply
                      0
                      • andreasduerenA Offline
                        andreasduerenA Offline
                        andreasdueren
                        wrote last edited by
                        #42

                        AFFiNE Copilot Findings

                        • Config lives in /app/data/config/config.json – The admin UI doesn’t honor scenario overrides reliably, so edit the file directly (File Manager works). Set copilot.scenarios.override_enabled: true, assign each scenario to a model you actually have access to, and restart the app. ENV overrides are gone; this file is the single source of truth.
                        • Gemini model gating – AFFiNE’s frontend marks “Gemini Pro/Flash” as locked unless upstream billing flags are set. Those flags aren’t exposed in the self-host build, so the UI always shows the lock even if you provide a valid API key. Workaround: keep providers.gemini populated, set the model name directly in config.json, and ignore the badge—the backend will still call that model.
                        • Error if Gemini models remain without keys – Jobs like copilot.session.generateTitle still reference gemini-2.5-flash by default. If you remove the Gemini key but leave that model in the scenarios, the logs fill with no_copilot_provider_available errors and document-context chats fail (“I don’t see a document”).
                        • UI limitations – Even after the config update, the provider dropdown often stays empty. That’s cosmetic: check actual usage via cloudron logs --app affine.tld.com | grep CopilotProvider. Responses are coming from whichever model you configured, regardless of what the UI shows.
                        • Net result – All Copilot behavior is driven by config.json; there’s no built-in way to “unlock” premium models in the UI because the hosted billing feature flags aren’t exposed. If you want to use Gemini Pro, set it manually in config.json (with a valid key) and ignore the warning.
                        1 Reply Last reply
                        1
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Bookmarks
                        • Search