AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Low-code AI orchestration to empower people everywhere. Collaborative, certified, model-agnostic, multi-lingual & measurable.
Translation pending
Developer toolsPython · TypeScriptGitHub @GooeyAIOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The core orchestration logic behind Gooey.AI
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
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?Read the full 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.