# omtac **Repository Path**: blacop/omtac ## Basic Information - **Project Name**: omtac - **Description**: No description available - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-29 - **Last Updated**: 2026-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Omniflow Mini Agent Workflow Builder A small full-stack workflow builder for the Omniflow take-home assignment. Users can create workflows, add/reorder LLM-powered steps, execute them with real Claude API calls, and watch step state update over SSE. ## Stack - Backend: FastAPI, SQLAlchemy, SQLite - Frontend: React, Vite, TypeScript - AI: Anthropic Messages API or Alibaba Cloud Bailian/DashScope through an OpenAI-compatible tool-use loop - Realtime updates: Server-Sent Events ## Setup ### Backend By default, new workflow steps use Alibaba Cloud Bailian/DashScope (`dashscope`) with `qwen-plus`. API keys must be provided through environment variables; do not hardcode them in source files. ```bash cd backend python -m venv .venv source .venv/bin/activate pip install -r requirements.txt export OMNIFLOW_LLM_PROVIDER=dashscope export DASHSCOPE_API_KEY=your_dashscope_api_key uvicorn app.main:app --reload --port 8000 ``` Optional DashScope settings: ```bash export OMNIFLOW_DASHSCOPE_MODEL=qwen-plus export DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1 ``` Anthropic is still supported: ```bash export OMNIFLOW_LLM_PROVIDER=anthropic export ANTHROPIC_API_KEY=your_anthropic_api_key uvicorn app.main:app --reload --port 8000 ``` For offline smoke testing without a provider API key, run the backend with `OMNIFLOW_MOCK_LLM=1`. Production/demo runs should leave this unset so executions use real LLM calls. The SQLite database is created automatically at `backend/omniflow.db`. ### Frontend ```bash cd frontend npm install npm run dev ``` If the backend is not on port 8000, set `VITE_API_BASE`, for example: ```bash VITE_API_BASE=http://localhost:8010/api npm run dev ``` New steps default to `dashscope` / `qwen-plus`. To change the default provider/model shown in newly created steps: ```bash VITE_DEFAULT_LLM_PROVIDER=anthropic VITE_DEFAULT_LLM_MODEL=claude-opus-4-7 npm run dev ``` Open http://localhost:5173. ## How to use 1. Create a workflow. 2. Add steps such as `research`, `summarize`, and `draft`. 3. Configure each step prompt. Use `{{input}}` for the previous step output and `{{original_input}}` for the initial run input. 4. Enter an execution input and click **Run workflow**. 5. Watch step status, outputs, and errors update in the execution panel. ## API overview - `GET /api/workflows` - `POST /api/workflows` - `GET /api/workflows/{id}` - `POST /api/workflows/{id}/steps` - `PUT /api/workflows/{id}/steps/{step_id}` - `POST /api/workflows/{id}/steps/reorder` - `POST /api/workflows/{id}/execute` - `GET /api/executions/{id}` - `GET /api/executions/{id}/stream` - `POST /api/executions/{id}/steps/{step_id}/retry` ## Notes The tool step is integrated into the LLM loop rather than exposed as a separate button. Each LLM step receives `web_search` and `calculator` tools; the model decides whether to call them, the backend executes the calls, and the tool results are fed back into the same step before producing final output. If an API key has been pasted into chat or logs, rotate it in the provider console before using this app for a real demo. This repository should only contain placeholder key names and environment variable instructions.