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
44 Posts 21 Posters 11.5k 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.
  • L Offline
    L Offline
    lukas
    wrote on last edited by
    #21

    AFFiNE would be really cool to have it on Cloudron πŸ‘

    1 Reply Last reply
    0
    • U Offline
      U Offline
      ulis
      wrote on last edited by
      #22

      Please Add to Cloudron!

      1 Reply Last reply
      1
      • SansGuidonS Offline
        SansGuidonS Offline
        SansGuidon
        wrote on last edited by
        #23

        I'm about to test it on my vps-hosted Coolify which I run in addition to Cloudron. I'll check if that consumes a lot of resources or not. If that's a nice app, I might help to package it for Cloudron, if doable.

        About me / Now

        1 Reply Last reply
        1
        • SansGuidonS Offline
          SansGuidonS Offline
          SansGuidon
          wrote on last edited by
          #24

          Unfortunately the AI features are not available yet for the self hosted version. I also found the tool Interface quite confusing. Maybe I'll wait and package something else, but I'm likely not the ideal target for Affine.

          About me / Now

          1 Reply Last reply
          1
          • N Offline
            N Offline
            neki
            wrote on last edited by neki
            #25

            As a long-term Notion user, I have been testing it locally for a few days. It seems very promising; the import of simple pages from Notion is smooth and easy. It would be great to run it on Cloudron.

            1 Reply Last reply
            2
            • S Offline
              S Offline
              stevespaw
              wrote last edited by
              #26

              This looks good, I have launched a simple deployment via docker compose. Seems like a great Cloudron addition.
              https://docs.affine.pro/self-host-affine/install/docker-compose-recommend

              1 Reply Last reply
              1
              • rstockmR Offline
                rstockmR Offline
                rstockm
                wrote last edited by
                #27

                I would love to see this on Cloudron.

                1 Reply Last reply
                0
                • scookeS Offline
                  scookeS Offline
                  scooke
                  wrote last edited by scooke
                  #28

                  I'm going to get on the seesaw, too! I have this running on my Runtipi installation. That VPS has 8GB ram, and is also running 5 other apps (Photoprism is one, Obsidian LiveSync is another), and the CPU usage rarely goes over 15% for all of them. Memory fluctuates from 25% to 30%.

                  What I really like about it is the Journal aspect. Yeah, I know, I could just make a new file with the date and all that, but this presents you with a nice little spot for a journal entry. Helps me, mentally, to write in a journal.

                  I also like the macos and Android clients. Speedy syncing. I'd prefer to see this rather than Twenty!!

                  A life lived in fear is a life half-lived

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

                    I packaged this to try it out. Works well but I'm not entirely sure what the exact target group for this application is. For documentation it seems confusing and overkill. Maybe personal notetaking could work. Image available at andreasdueren/affine-cloudron:0.25.3

                    timconsidineT SansGuidonS 2 Replies Last reply
                    3
                    • andreasduerenA andreasdueren

                      I packaged this to try it out. Works well but I'm not entirely sure what the exact target group for this application is. For documentation it seems confusing and overkill. Maybe personal notetaking could work. Image available at andreasdueren/affine-cloudron:0.25.3

                      timconsidineT Offline
                      timconsidineT Offline
                      timconsidine
                      App Dev
                      wrote last edited by
                      #30

                      @andreasdueren I added it to Custom App Installer ccai.appx.uk

                      Hope this is ok (I'll remove if you want)

                      1 Reply Last reply
                      3
                      • andreasduerenA andreasdueren

                        I packaged this to try it out. Works well but I'm not entirely sure what the exact target group for this application is. For documentation it seems confusing and overkill. Maybe personal notetaking could work. Image available at andreasdueren/affine-cloudron:0.25.3

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

                        @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!

                        About me / Now

                        andreasduerenA 1 Reply Last reply
                        3
                        • 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
                                          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