EchoTrace is a modern, branchable AI conversation system built with Vue.js 3, TypeScript, Quasar, and FastAPI. It allows you to fork conversations at any point, explore multiple AI-generated paths, and trace your thinking over time with an intuitive tree-based interface.
- ๐ณ Interactive Tree Visualization - Drag, zoom, and navigate conversation trees with Vue Flow
- ๐ง Contextual Memory - Maintain full conversation history across branches
- ๐ Branching Conversations - Fork from any message to explore alternative paths
- ๐ฑ Responsive Design - Mobile-first design with Quasar components
- ๐จ Modern UI/UX - Clean, intuitive interface with dark/light themes
- โก Real-time Updates - Instant updates with Pinia state management
- ๐ Search & Filter - Find specific messages or branches quickly
- ๐ค Export/Import - Save conversations in multiple formats
- โจ๏ธ Keyboard Shortcuts - Power user features for efficiency
- Vue.js 3 with Composition API
- TypeScript for type safety
- Quasar Framework for UI components
- Vue Flow for interactive tree visualization
- Pinia for state management
- Vite for fast development and building
- FastAPI for high-performance API
- SQLAlchemy for database ORM
- SQLite for local data storage
- OpenAI API for AI responses
- Pydantic for data validation
- Node.js 18+ and npm
- Python 3.9+
- OpenAI API key
-
Clone and setup
git clone <repository-url> cd echotrace
-
Setup backend
cd backend python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt cp .env.example .env # Edit .env and add your OPENAI_API_KEY
-
Setup frontend
cd ../frontend npm install -
Start both servers
# From project root ./start.shOr start manually:
# Terminal 1 - Backend cd backend source venv/bin/activate python run.py # Terminal 2 - Frontend cd frontend npm run dev
-
Open your browser
- Frontend: http://localhost:3000
- Backend API: http://localhost:8000
- API Docs: http://localhost:8000/docs
echotrace/
โโโ frontend/ # Vue.js frontend
โ โโโ src/
โ โ โโโ components/ # Vue components
โ โ โโโ stores/ # Pinia stores
โ โ โโโ services/ # API services
โ โ โโโ types/ # TypeScript types
โ โ โโโ utils/ # Utility functions
โ โโโ package.json
โโโ backend/ # FastAPI backend
โ โโโ app/ # Main application
โ โโโ database/ # Database models and setup
โ โโโ schemas/ # Pydantic schemas
โ โโโ services/ # Business logic
โ โโโ requirements.txt
โโโ README.md
- Conversations are the top-level containers
- Each conversation has multiple branches
- Branches represent different conversation paths
- Only one branch is "active" at a time
- Nodes are individual messages in a conversation
- Each node can have a user message, AI response, or both
- Nodes are connected in a tree structure
- You can branch from any node to create alternative paths
- Click any message to create a new branch
- Branches inherit the conversation history up to that point
- Switch between branches to explore different paths
- Each branch maintains its own conversation flow
- Click the "+" button in the sidebar
- Enter a conversation title
- Start chatting with the AI
- Click the tree icon (๐ฑ) next to any message
- Enter a branch name
- Continue the conversation from that point
- Use the tree view to see the full conversation structure
- Click nodes to jump to specific messages
- Switch between branches using the branch panel
- Use zoom controls to navigate large trees
Ctrl/Cmd + N- New conversationCtrl/Cmd + B- Create branch from current messageCtrl/Cmd + K- Focus searchCtrl/Cmd + D- Toggle dark mode
cd frontend
npm run dev # Start dev server
npm run build # Build for production
npm run type-check # Run TypeScript checkscd backend
source venv/bin/activate
python run.py # Start with auto-reloadThe app uses SQLite by default. The database file is created automatically at backend/echotrace.db.
To reset the database:
rm backend/echotrace.db
# Restart the backend server# Build frontend
cd frontend
npm run build
# Serve with a static file server
npx serve dist# Build and run with Docker Compose
docker-compose up --build- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT License - see LICENSE file for details
- Built with Vue.js
- UI components by Quasar
- Tree visualization by Vue Flow
- Backend powered by FastAPI
- AI responses by OpenAI
EchoTrace - Branch your thoughts, explore your ideas. ๐ฟ