The model proposes work and writes answers; the harness and engine own execution and checks.
Definition
The model layer is Fella’s replaceable connection to a chat model. Changing it does not change workspace ingestion, the built-in tool implementations, or deterministic verification. The model receives prompts, registered tool schemas, and selected tool results. It does not receive a direct filesystem, database, or Tauri API.Architecture
Fella currently ships these provider registry entries:
Fella is BYOK-only and starts the connection flow on Ollama Cloud. Ollama Cloud
uses Ollama’s API shape at a hosted endpoint; it is not an OpenAI-compatible
provider. The custom option expects an OpenAI-compatible API root.
Some registry rows describe embedding endpoints, but Fella does not currently use embeddings for document retrieval.
Flow
Use/login to view and authenticate supported providers. Use /model to inspect or change the active provider, base URL, and model; where supported, Fella fetches the service’s current model list.
Behavior
Ollama connections use/api/chat; OpenAI-compatible connections use /chat/completions. Both stream output into the same harness, which assembles tool calls, executes them through the registry, and returns results in later turns. Transient provider failures retry with backoff.
Provider API keys are kept in auth.json under Fella’s application data directory, with mode 0600 on platforms that support it. Secret-bearing configuration commands are redacted from conversation transcripts. The inert /mcp command stores no connector tokens and makes no network request.
Document search remains local and direct through grep_files and read_file, so it works even when the provider has no embeddings endpoint.
The wire choice is independent of which hosted service you choose:
agent::run; provider-specific
framing does not leak into the tool loop.
Limits
- With a hosted or custom provider, prompts and tool results sent for the conversation leave the machine and are subject to that provider’s policies.
- The inert
/mcpcommand does not create a connector or make a separate network request. run_pythonis local execution inside the embedded WASM guest. The guest has no filesystem, network, environment, or subprocess capability; the prompt describes the boundary, while the host ABI enforces it.- Provider model catalogs and default model IDs can change.
/modelis the source of the active service’s available models when listing is supported. - The model can make reasoning and tool-selection mistakes regardless of provider. Deterministic checks cover evidence consistency, not every semantic error.
Next steps
The harness
See how provider output enters the tool loop.
Privacy and security
Review provider, credential, and local-execution boundaries.
Using Fella
Configure a workspace and ask a first question.