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.