I want to create an AI chat application that allows for conversation branching. It is often frustrating when you want to ask a question that is tangentially related to the original topic being discussed, and you either have to open up a new tab in your browser to open a new chat instance, or you ask it in the original chat and it somewhat derails your chat experience by forcing you to scroll past questions and answers that are not about the original topic. The idea was inspired somewhat by Git branches, and previous experiences with visual-based knowledge management applications like Heptabase that have an infinite canvas to work with, where you can connect nodes of information, images, etc. The app would allow you to create a branch off of any answer the LLM provides, and the entire tree would be represented in an infinite canvas that is accessible from the chat page, which can also be used to navigate to any point in any branch. I first want to start with some brainstorming: what would be some options for tech stacks to create such an app, which libraries might be useful, whether it would be easiest to have this work with only one AI provider (Anthropic, probably)? How would this app work in terms of necessary API connections, how AI chats would be imported and displayed in the program, how would the pieces all connect together? Develop a plan for making this app a reality with multiple options for tech stacks, frameworks, etc. when possible. Suggest additional features that might improve the user experience. Explain to me how exactly the app would be built, structured, and work. --- _Spiritus mundi_ is ==a Latin phrase meaning "world spirit"==. It describes a universal memory, a collective unconscious, or a shared cosmic pool of images, symbols, and creative inspiration from which artists and writers draw --- In addition to deciding on Svelte, I have also decided I want these features as well. If there are tech stack implications with these, please say so - auto-titled nodes - fuzzy search across the whole tree - keyboard-driven navigation - manual context composition - Export any branch path as .md - ability to color-code nodes I have some ideas for more inventive features that I want to consider adding but am not sure how difficult it would be to do so would be. They could be considered long-term goals depending on how much complexity and work could be involved. The current list is the below but may be added to later: - ability to reference other nodes from a node, generating a bidirectional wiki-link (like Obsidian has) - ability to favorite nodes; favorite'd nodes will be displayed on an accessible list which can be used to jump to any of those nodes - ability to access trees from the same canvas (this could lead to "projects" where you tag trees with project names and they get placed on a single project canvas)