Archit OS
~/projects/morphie-bot/README.md
← all projects
AI Assistant·Parent of Morphie

Morphie-Bot

A deliberately small assistant that chats, picks its own tools and answers from your documents, written to be read end to end.

Role
AI Engineer
Timeline
Dec 2024 – 2026
Team
Solo
Status
Parent of Morphie
Morphie-Bot screenshot
4
tools
3
model providers
286
tests
0
embedding API calls

The problem

Most assistant demos are either a chat box with no tools or a framework too large to read. Morphie-Bot is the small version: one Flask app where you can follow a question from the browser to the model, to a tool and back, with nothing hidden behind a build step.

What it does

Chat that picks its own tools

A calculator, the clock, web search or your uploaded documents. The model decides when a tool helps; you never choose one.

Document Q&A

Upload PDF, DOCX, TXT, CSV or JSON. Indexing is local with a dependency-free hashing embedding, so no embedding API is needed. It is lexical rather than truly semantic, and the README says so.

Live tool steps

Every tool call streams to the interface as it happens, over server-sent events.

Three providers

Mistral, OpenAI or Ollama, chosen with an environment variable. The sidebar badge turns red when the active provider is not configured.

Built to be read

It deliberately leaves out long-term memory, a design studio, in-app key management, many more providers and autonomous multi-step runs. Those live in its successor, Morphie.

How it flows

  1. Browser
  2. Flask API
  3. Provider (Mistral · OpenAI · Ollama)
  4. Tool call
  5. Local document index
  6. Streamed answer

Problems solved

Choosing a tool without hard-coded rules

ProblemKeyword matching for every capability is brittle.

SolutionThe model makes the structured tool-calling decision itself, and each step is shown to the user as it happens.

Document search without an embedding service

ProblemMost RAG examples need a paid embedding API and a vector database.

SolutionA hashing embedding plus keyword scoring, stored locally. It works offline and is honest about being lexical.

Staying small on purpose

ProblemEvery extra feature makes a learning project harder to read.

SolutionAnything heavier was moved into a separate project, Morphie, and this one stays a single readable Flask app with a plain-JavaScript front end.

Built with

PythonFlaskMistralOllamaRAGTool callingJavaScriptHTML/CSS