AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證The core orchestration logic behind Gooey.AI
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Gooey.AI is the low-code orchestration platform with discoverable workflows & unified billing to all of GenAI universe. Gooey.AI is a low-code AI recipe platform and Gooey Server is our core repo. It allows users to discover, customize, and deploy AI "recipes" using the best of private and open-source AI, all using a single API with a single auth token. Recipes are workflows that incorporate various models to accomplish a task; they are designed to be highly customizable and shareable. 🧑💻 Who is this for and why would I want to use it?檢視完整 README ↗
Gooey.AI is the low-code orchestration platform with discoverable workflows & unified billing to all of GenAI universe.
Gooey.AI is a low-code AI recipe platform and Gooey Server is our core repo.
It allows users to discover, customize, and deploy AI "recipes" using the best of private and open-source AI,
all using a single API with a single auth token.
Recipes are workflows that incorporate various models to accomplish a task; they are designed to be highly customizable and shareable.
For most developers, we DO NOT recommend running or forking Gooey Server; use our APIs or client SDK instead.
The repo is intended only for developers who want to run and deploy their own server cluster or run Gooey locally for development purposes.
Specifically, this repo may be for you if:
+-----------+ +-----------------+
| Browser | | API Clients |
+-----+-----+ | (SDKs / curl) |
| +--------+--------+
:3000 | |
v |
+-------------------------+ |
| gooey-gui | |
| (Node / Remix frontend) | | :8080
+------------+------------+ |
| |
| render requests |
v v
+--------------+ +-------------------------------------+
| Django Admin | | Python API + GUI Server |
| :8000 | | (FastAPI, server.py) |
+------+-------+ +------------------+------------------+
| |
| | enqueue recipe runs (amqp)
| v
| +-------------------------------------+ +-----------------+
| | Celery Workers |---->| GenAI providers |
| | (celeryapp) | | OpenAI, Gemini, |
| +------------------+------------------+ | Replicate, ... |
| | +-----------------+
v v
+---------------------------------------------------------------------+
| Backing Services |
| |
| +-----------+ +-----------+ +------------+ +--------------+ |
| | Postgres | | Redis | | RabbitMQ | | Vespa | |
| | :5432 | | :6379 | | :5672 | | :8085 | |
| | app DB | | cache + | | celery | | vector + | |
| | | | pub/sub | | broker | | text search | |
| +-----------+ +-----------+ +------------+ +--------------+ |
+---------------------------------------------------------------------+
gooey-gui/) — Remix/React frontend. It asks the Python server to render each page as a JSON component tree, renders that in React, and subscribes to Redis pub/sub so pages update live while a recipe runs.server.py) — FastAPI app that serves the public API and the page-render endpoints used by gooey-gui.celeryapp/) — run the actual recipes: consume jobs from RabbitMQ, call the GenAI providers, save results to Postgres, and publish progress updates to Redis.gooeysite/) — admin UI over the same Postgres database.The fastest way to run everything locally is Docker Compose. It starts postgres, redis, rabbitmq, vespa, and the app services (API, Django admin, celery, gooey-gui) in one command.
1. Clone the Gooey Server Repo
git clone https://github.com/GooeyAI/gooey-server.git
2. Install Docker
macOS — install OrbStack (recommended on Apple Silicon; native arm64, fast builds)
[!NOTE] OrbStack requires you to start it the first time.
Linux — install Docker Engine and the Compose plugin
Windows — install Docker Desktop
3. Start the stack
docker compose -f docker-compose.local.yml up --build
The first build takes a few minutes. After startup:
| Service | URL (localhost) |
|---|---|
| UI | http://localhost:3000/explore |
| API | http://localhost:8080/docs |
| Admin | http://localhost:8000 |
First-time setup — run once after the stack is up (migrations, local LLM models, default Django admin user):
docker compose -f docker-compose.local.yml run --rm admin ./manage.py runscript setup_local
Then log in to Django admin at http://localhost:8000 with username admin and password admin. These credentials are for local development only.
To stop everything:
docker compose -f docker-compose.local.yml down
Note:
Dockerfile.localis a lightweight image for local development. It skips playwright and mediapipe, so a few recipes that depend on those won't work in-container. For full parity, use the manual setup steps below instead.
For a full list of all available settings with defaults and descriptions, see configuration.md.
poetry shell)poetry install --with devbrew install redis rabbitmq postgresql@15)redis, rabbitmq, and postgresql (e.g. with brew services start redis and similar for rabbitmq and postgresql)sqlcreate helper to create a user and database for gooey:
./manage.py sqlcreate | psql postgrespsql -W -U gooey gooey (and when prompted for password, entering gooey)./manage.py migratebrew install zbar)brew install freetype imagemagick
export MAGICK_HOME=/opt/homebrew
Install pyenv & install the same python version as in our Dockerfile (currently Python 3.10)
curl https://pyenv.run | bashInstall poetry
Clone this repository:
Create and activate a virtualenv using poetry shell
Install dependencies using poetry install --with dev
package-mode=false on line 7 of pyproject.tomlInstall redis, rabbitmq-server, and postgresql 15 using your distro's package manager.
Enable these services as background services using sudo systemctl enable --now redis rabbitmq-server postgresql
Configure Postgres to ensure that password authentication is enabled for the gooey user
/etc/postgresql/<version>/main/ or /var/lib/pgsql/<version>/data/local all gooey md5
host all gooey md5
sudo systemctl restart postgresqlUse the manage.py script to set up the Postgres database:
./manage.py sqlcreate | sudo -u postgres psql postgres gooey-server can access the database by running psql -W -U gooey gooey and supplying "gooey" as the passwordInstall the zbar library using your distro's package manager.
# reset the database
./manage.py reset_db -c
# create the database
./manage.py sqlcreate | psql postgres
# run migrations
./manage.py migrate
# load the fixture (donwloaded by ./scripts/run-tests.sh)
./manage.py loaddata fixture.json
# create a superuser to access admin
./manage.py createsuperuser
ulimit -n unlimited # Increase the number of open files allowed
./scripts/run-tests.sh
The Functions recipe executes user-supplied JavaScript/ESM in sandboxed Cloudflare Dynamic Workers via the worker in functions/executor_cf/. You can run it locally with wrangler:
cd functions/executor_cf
npm install
npx wrangler dev
Then point Gooey Server at it in .env:
CF_FUNCTIONS_URL=http://localhost:8787
To deploy it to Cloudflare instead, see functions/executor_cf/wrangler.jsonc.
Several features are opt-in and only appear when the relevant API keys are configured:
COMPOSIO_API_KEY is set.FB_APP_ID / TWILIO_ACCOUNT_SID; Slack requires SLACK_CLIENT_ID. The deploy buttons are hidden and creation is blocked until the relevant keys are configured.See configuration.md for the full list of keys and their defaults.
Use ruff
These are the services that you need to run to start developing locally. Open them in separate terminals so you can debug them individually.
| Service | Port | Command |
|---|---|---|
| Python API + GUI Server | 8080 | poetry run uvicorn server:app --host 127.0.0.1 --port 8080 --reload |
| Node Frontend | 3000 | cd gooey-gui/; PORT=3000 REDIS_URL=redis://localhost:6379 npm run build && npm run start |
| Celery (Task Runner) | - | poetry run celery -A celeryapp worker -P threads -c 16 -l DEBUG |
| Django Admin site | 8000 | poetry run python manage.py runserver 127.0.0.1:8000 |
| Vespa (Vector DB) | 8085 | docker run --hostname vespa-container -p 8085:8080 -p 19071:19071 --volume vespa:/opt/vespa/var -it --rm --name vespa vespaengine/vespa |
This default startup assumes that Redis, RabbitMQ, and PostgreSQL are installed and running
as background services on ports 6379, 5672, and 5432 respectively.
The frontend source lives at ./gooey-gui/ inside this repo.
The Python API + GUI Server should reload the entire server on code changes. You can refresh the page to see the changes.
The Celery worker must be manually restarted on code changes.
If you are working on the gooey-gui (react frontend), you can run:
cd gooey-gui/; PORT=3000 REDIS_URL=redis://localhost:6379 npm run dev
If you run this command, the Python API + GUI Server will reload the webpage in-place on code changes.
poetry run python server.py
This mostly works, but consumes more memory and usually OOMs after a few reloads; YMMV. Use it to iterate quickly on UI changes!
You need to install OrbStack or Docker Desktop for this to work.
docker volume create vespa
docker run \
--hostname vespa-container \
-p 8085:8080 -p 19071:19071 \
--volume vespa:/opt/vespa/var \
-it --rm --name vespa vespaengine/vespa
./manage.py runscript setup_vespa_db
[!CAUTION] This method is not recommended as this makes it harder to debug individual services but it is the easiest way to start all services at once.
You can start all required processes in one command with Honcho:
poetry run honcho start
The processes that it starts are defined in Procfile. You can open the Procfile and comment out any services you don't need to run.
This will spin up the API server at http://localhost:8080. To view the autogenerated API documentation, navigate to http://localhost:8080/docs
Gitleaks will automatically run pre-commit (see pre-commit-config.yaml for details) to prevent commits with secrets in the first place. To test this without committing, run pre-commit from the terminal. To skip this check, use SKIP=gitleaks git commit -m "message" to commit changes. Preferably, label false positives with the #gitleaks:allow comment instead of skipping the check.
Gitleaks will also run in the CI pipeline as a GitHub action on push and pull request (can also be manually triggered in the actions tab on GitHub). To update the baseline of ignored secrets, run python ./scripts/create_gitleaks_baseline.py from the venv and commit the changes to .gitleaksignore.
Click to know more about our Privacy and Zero Data Retention Policy.