-
-
Notifications
You must be signed in to change notification settings - Fork 0
0 introduction
tripleF (3F) — short for fkoff — is an open-source agentic AI workbench. It is a direct answer to the proprietary chat platforms: same ambition, no lock-in, no meter running on your own hardware. Every capability is built on free, open-source models that run fully locally — or, when you want more headroom, on Ollama Cloud models. Your conversations, images, and tooling stay under your control either way.
tripleF is early in development and unapologetic about aiming for the top of the open-source community. It already ships a complete chat experience — including features some proprietary chats still miss — and it is designed as a platform, not a demo.
- Full chat experience — multi-image conversations, streaming answers rendered live, reasoning/thinking areas that show the model's chain of thought, session-scoped conversation history with rename / delete / pin (temporary↔persistent) controls, and a custom scroll experience with two per-conversation modes: a vertical carousel that crossfades between full-height sections, or a native continuous scroll.
-
Local-first inference — every request is served by Ollama. Point
OLLAMA_HOSTat your own machine for fully-offline operation, or setOLLAMA_API_KEYto use Ollama Cloud models. The workbench treats both as one continuum. -
Agentic harness — requests flow through a deterministic step engine: sanitize → interpret → execute → respond. The harness classifies intent, selects tools (web/image/news/shopping/places/business-reviews/video search via Serper or Bright Data, YouTube Data API video search, EODHD market-data tools, webpage scrape/fetch, and
browser_*automation via a Playwright MCP sidecar), language-detects results and files foreign-language finds into an international-coverage aside, enforces structured output schemas, and validates responses before they reach the UI. - Structured vision & media answers — describe, compare, OCR, imagine, news, article, product, stock-market, image/video list schemas turn image understanding into machine-readable, UI-renderable results instead of plain text blobs.
- Real-time by construction — answers stream token-by-token over Socket.IO rooms; a request can be cancelled mid-flight by the user, and the worker honours the cancellation token at step boundaries.
- Operability built in — BullMQ queues with retry/backoff, a persisted dead-letter queue (replay, edit, re-instate), queue and system health consoles, provider-override management, and image preprocessing controls — all exposed in the dashboard's SysCtl area.
┌──────────────────────────────────────────────┐
│ DASHBOARD (Vue 3) │
│ Chat · SysCtl · DLQ · PProc · Themes │
└───────────────▲───────────────┬──────────────┘
Socket.IO │ │ REST (Fastify,
(rooms) │ │ /api/v1, Swagger)
┌───────────────┴───────────────▼──────────────┐
│ SERVER (NestJS + Fastify) │
│ │
│ Harness controller ──▶ BullMQ harness queue │
│ │ │
│ Harness processor │
│ step engine: sanitize → │
│ interpret → execute → respond │
│ │ │ │ │
│ Ollama/AI SDK Serper/BrightData/YouTube │
└─────┬──────────┬──────────┬──────────┬───────┘
│ │ │ │
┌──────▼───┐ ┌────▼─────┐ ┌──▼───────┐ ┌▼────────┐
│ KeyDB │ │ Postgres │ │ MinIO │ │ Ollama │
│ (queues, │ │ (Prisma: │ │ (image │ │ (local │
│ sockets) │ │ convos, │ │ payloads)│ │ /cloud) │
│ │ │ DLQ, │ │ │ │ │
│ │ │ config) │ │ │ │ │
└──────────┘ └──────────┘ └──────────┘ └─────────┘
| Layer | Technology | Role |
|---|---|---|
| API runtime | NestJS 11 + Fastify 5 | HTTP, versioning, multipart intake, Swagger |
| Agent stack | Vercel AI SDK 6 + Ollama | Model calls, tool loop, streaming |
| Inference | Ollama (local or Ollama Cloud) | Vision-LLM inference + embeddings |
| Async | BullMQ + KeyDB (Redis-compatible) | Job queue, retries, cancellation tokens, socket pub/sub |
| Persistence | PostgreSQL 16 + Prisma 7 | Conversations, dead-letter records, system config |
| Object storage | MinIO (S3 API) | Image payloads per session/conversation |
| Real-time | Socket.IO 4 | Result streaming rooms, cancellation, events |
| Frontend | Vue 3 + Vite 8, Pinia, TanStack Query, Tailwind v4 | Workbench UI |
| Tooling | pnpm workspaces, TypeScript, Vitest, ESLint, Docker Compose | Monorepo ergonomics |
triplef.io/
├── server/ # 3F server (NestJS + Fastify)
│ ├── src/modules/ # harness, ai-sdk, bullmq, dead-letter, minio,
│ │ # persistence, sharp, socket-io, provider-overrides ...
│ ├── prisma/ # schema: HarnessConversation, HarnessDlq, HarnessConfig,
│ │ # HarnessShownMedia, HarnessProviderOverride, HarnessPlaylist
│ └── Dockerfile # standalone image (kept for a potential repo split)
├── dashboard/ # 3F dashboard (Vue 3 + Vite)
│ ├── src/components/ # chat, sysctl, dlq, pproc, app shell, widgets
│ └── Dockerfile # standalone image (kept for a potential repo split)
├── Dockerfile # canonical monorepo image (all targets)
├── compose.yml # dev stack: deps + server + dashboard
├── infra.compose.yml # postgres, keydb, minio (ollama/searxng optional)
└── .wiki/ # this documentation
MIT-licensed. Built with AI-assisted context coding — every architectural decision reviewed and owned by humans.