This PR enhances the Docker build and deployment process for the Arcade Worker by: - **Modularizing Docker Builds:** - Introduces a new `INSTALL_TOOLKITS` build argument in the `Dockerfile` to conditionally include toolkits. this enables the creation of a `arcadeai/worker-base` which can be used to build custom containers in a multi-stage build. an example of this is included in the example dir. - Adds `docker-base` Makefile target to build a lightweight base image without toolkits. - **Publishing to GitHub Container Registry (GHCR):** - Adds Makefile targets `publish-ghcr` and `gh-login` for pushing images to GHCR. - Supports publishing both base and full images with toolkits to GHCR. - **Docker Compose:** - Add Docker compose file and setup - Renames the `actor` service to `worker` - Adds an `nginx` service in `docker-compose.yml` to proxy requests to the Arcade Engine. - Introduces an `nginx.conf` file for the Nginx service. - **Streamlining Toolkit Installation:** - Moves toolkit installation from the `start.sh` script to the Docker build process. - Creates a `toolkits.txt` file to manage toolkit dependencies which can be edited easily when we want to add a new toolkit. Developers can also use this approach as shown in the example. - **Improving Configuration Files:** - Updates `docker.engine.yaml` and `env.example` to align with the new setup. TODO: - CI/CD needs to be adjusted so that images are pushed to ghcr on release. - AWS resources need to be renamed actor -> worker @EricGustin This can go in after the above two items are resolved. --------- Co-authored-by: Wils Dawson <wils@arcade-ai.com> Co-authored-by: Eric Gustin <34000337+EricGustin@users.noreply.github.com> Co-authored-by: sdreyer <sterling@arcade-ai.com> Co-authored-by: Sterling Dreyer <sdreyer21@gmail.com> Co-authored-by: Nate Barbettini <nathanaelb@gmail.com>
173 lines
4.3 KiB
YAML
173 lines
4.3 KiB
YAML
telemetry:
|
|
environment: local
|
|
version: ${env:VERSION}
|
|
logging:
|
|
level: debug # debug, info, warn, error
|
|
encoding: console
|
|
|
|
api:
|
|
development: true
|
|
host: 0.0.0.0
|
|
port: 9099
|
|
analytics:
|
|
enabled: false
|
|
# Uncomment to enable rate limiter
|
|
# rate_limit:
|
|
# redis:
|
|
# addr: "localhost:6379"
|
|
# password: ""
|
|
# db: 2
|
|
# time_unit: m
|
|
# limit: 2
|
|
# write_timeout: 10
|
|
# read_timeout: 10
|
|
|
|
llm:
|
|
models:
|
|
- id: oai
|
|
openai:
|
|
api_key: ${env:OPENAI_API_KEY}
|
|
# - id: anthropic
|
|
# anthropic:
|
|
# api_key: ${env:ANTHROPIC_API_KEY}
|
|
# # model: "claude-3-5-sonnet-20240620"
|
|
#- id: ollama
|
|
# openai:
|
|
# base_url: "http://localhost:11434/v1"
|
|
# api_key: "ollama"
|
|
|
|
tools:
|
|
directors:
|
|
- id: default
|
|
enabled: true
|
|
workers:
|
|
- id: "localworker"
|
|
enabled: true
|
|
http:
|
|
uri: ${env:WORKER_URL}
|
|
timeout: 30
|
|
retry: 3
|
|
secret: ${env:ARCADE_WORKER_SECRET} # If not set, defaults to "dev" in development mode only
|
|
# Uncomment mock and comment http to start engine without live worker
|
|
# mock:
|
|
# enabled: true
|
|
|
|
security:
|
|
root_keys:
|
|
- id: key1
|
|
default: true
|
|
value: ${env:ROOT_KEY_1}
|
|
# - id: key2
|
|
# value: ${env:ROOT_KEY_2}
|
|
|
|
storage:
|
|
# postgres:
|
|
# user: postgres
|
|
# password: 123456
|
|
# host: localhost
|
|
# port: 5432
|
|
# db: arcade_engine
|
|
# sslmode: disable
|
|
sqlite: # Default for local development
|
|
connection_string: "/app/arcade-engine.sqlite3"
|
|
|
|
cache:
|
|
api_key_ttl: "10s"
|
|
redis:
|
|
addr: ${env:REDIS_HOST}:${env:REDIS_PORT}
|
|
password: ${env:REDIS_PASSWORD}
|
|
|
|
auth:
|
|
token_store:
|
|
redis:
|
|
addr: ${env:REDIS_HOST}:${env:REDIS_PORT}
|
|
password: ${env:REDIS_PASSWORD}
|
|
|
|
providers:
|
|
- id: default-atlassian
|
|
description: "The default Atlassian provider"
|
|
enabled: false
|
|
type: oauth2
|
|
provider_id: atlassian
|
|
client_id: ${env:ATLASSIAN_CLIENT_ID}
|
|
client_secret: ${env:ATLASSIAN_CLIENT_SECRET}
|
|
|
|
- id: default-discord
|
|
description: "The default Discord provider"
|
|
enabled: false
|
|
type: oauth2
|
|
provider_id: discord
|
|
client_id: ${env:DISCORD_CLIENT_ID}
|
|
client_secret: ${env:DISCORD_CLIENT_SECRET}
|
|
|
|
- id: default-dropbox
|
|
description: "The default Dropbox provider"
|
|
enabled: false
|
|
type: oauth2
|
|
provider_id: dropbox
|
|
client_id: ${env:DROPBOX_CLIENT_ID}
|
|
client_secret: ${env:DROPBOX_CLIENT_SECRET}
|
|
|
|
- id: default-github
|
|
description: "The default GitHub provider"
|
|
enabled: false
|
|
type: oauth2
|
|
provider_id: github
|
|
client_id: ${env:GITHUB_CLIENT_ID}
|
|
client_secret: ${env:GITHUB_CLIENT_SECRET}
|
|
|
|
- id: default-google
|
|
description: "The default Google provider"
|
|
enabled: false
|
|
type: oauth2
|
|
provider_id: google
|
|
client_id: ${env:GOOGLE_CLIENT_ID}
|
|
client_secret: ${env:GOOGLE_CLIENT_SECRET}
|
|
|
|
- id: default-linkedin
|
|
description: "The default LinkedIn provider"
|
|
enabled: false
|
|
type: oauth2
|
|
provider_id: linkedin
|
|
client_id: ${env:LINKEDIN_CLIENT_ID}
|
|
client_secret: ${env:LINKEDIN_CLIENT_SECRET}
|
|
|
|
- id: default-microsoft
|
|
description: "The default Microsoft provider"
|
|
enabled: false
|
|
type: oauth2
|
|
provider_id: microsoft
|
|
client_id: ${env:MICROSOFT_CLIENT_ID}
|
|
client_secret: ${env:MICROSOFT_CLIENT_SECRET}
|
|
|
|
- id: default-slack
|
|
description: "The default Slack provider"
|
|
enabled: false
|
|
type: oauth2
|
|
provider_id: slack
|
|
client_id: ${env:SLACK_CLIENT_ID}
|
|
client_secret: ${env:SLACK_CLIENT_SECRET}
|
|
|
|
- id: default-spotify
|
|
description: "The default Spotify provider"
|
|
enabled: false
|
|
type: oauth2
|
|
provider_id: spotify
|
|
client_id: ${env:SPOTIFY_CLIENT_ID}
|
|
client_secret: ${env:SPOTIFY_CLIENT_SECRET}
|
|
|
|
- id: default-x
|
|
description: "The default X provider"
|
|
enabled: false
|
|
type: oauth2
|
|
provider_id: x
|
|
client_id: ${env:X_CLIENT_ID}
|
|
client_secret: ${env:X_CLIENT_SECRET}
|
|
|
|
- id: default-zoom
|
|
description: "The default Zoom provider"
|
|
enabled: false
|
|
type: oauth2
|
|
provider_id: zoom
|
|
client_id: ${env:ZOOM_CLIENT_ID}
|
|
client_secret: ${env:ZOOM_CLIENT_SECRET}
|