{"id":38147106,"url":"https://github.com/ynput/ayon-ftrack","last_synced_at":"2026-02-24T12:16:15.015Z","repository":{"id":61357707,"uuid":"539528717","full_name":"ynput/ayon-ftrack","owner":"ynput","description":null,"archived":false,"fork":false,"pushed_at":"2026-01-26T16:16:36.000Z","size":7699,"stargazers_count":4,"open_issues_count":26,"forks_count":13,"subscribers_count":6,"default_branch":"develop","last_synced_at":"2026-01-27T04:44:06.604Z","etag":null,"topics":["addon","ayon"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ynput.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-09-21T14:24:10.000Z","updated_at":"2026-01-22T15:46:41.000Z","dependencies_parsed_at":"2023-12-20T06:32:18.102Z","dependency_job_id":"b426fbd4-a266-4742-a70b-332a8f4384f8","html_url":"https://github.com/ynput/ayon-ftrack","commit_stats":null,"previous_names":[],"tags_count":53,"template":false,"template_full_name":null,"purl":"pkg:github/ynput/ayon-ftrack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ynput%2Fayon-ftrack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ynput%2Fayon-ftrack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ynput%2Fayon-ftrack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ynput%2Fayon-ftrack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ynput","download_url":"https://codeload.github.com/ynput/ayon-ftrack/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ynput%2Fayon-ftrack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29781948,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-24T10:45:18.109Z","status":"ssl_error","status_checked_at":"2026-02-24T10:45:09.911Z","response_time":75,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["addon","ayon"],"created_at":"2026-01-16T22:57:30.865Z","updated_at":"2026-02-24T12:16:14.995Z","avatar_url":"https://github.com/ynput.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ftrack integration for AYON\n\nThis project provides three elements for the AYON pipeline:\n * server - The AYON backend Addon.\n * client - The AYON desktop integration.\n * services - Standalone dockerized daemons that act based on events (aka `leecher` and `processors`).\n\nThere is a common code that can be re-used for `server`, `client` and `services`. Is located inside client code for developer mode `./client/ayon_ftrack/common/`.\n\n## Server\nOnce loaded into the backend, restart your server to update addons, ftrack addon will care about creation of attributes for entities. Addon must be enabled in Addon versions the plugin itself can be configured from the Project Settings page: `{ayon_url}/projectManager/projectSettings`, where you can specify your ftrack instance URL.\n\n### Settings\nSettings for services and client.\n\n### Public\nContains publicly available content, like icons. Icons are used by ftrack server to display action icons. A public is used as it does not require authentication.\n\n### Private\nPrimarily for client code downloadable file.\n\n## Client\nContains ftrack integration used in ayon launcher application. Contains publish plugins with logic to integrate content to ftrack like reviewables. Also contains ftrack server for user with actions that are executed inside ayon launcher application, like delivery creation, applications launch etc.\n\n## Services\nCurrently, there is `leecher` which stores ftrack events, `processor` which is processing them and `transmitter` which propagates changes from AYON to ftrack. Separation of `leecher` and `processor` allows to restart `processor` without loosing any events that happened meanwhile. The `processer` has nothing to process without running `leecher`. There can be multiple services running at the same time, but they all should be using same version and settings variant.\n\n## Create package\nTo create a \"server-ready\" package of the `server` folder, on a terminal, run `python create_package.py`. That will create `./package/ftrack {version}.zip` file that can be uploaded to the server.\n\n## Services\nAs mentioned there are 2 services `leecher` and `processor`. Both services have docker images that can be started from AYON server. For that there must be running a docker worker called ASH (AYON service host). Once ASH is running you can run services from AYON web UI. This is recommended approach how to run services in production.\n\nTo run services locally (recommended only for development purposes), there are 2 possible approaches. One is by running docker image, or using prepared service tools.\n\n- `leecher` - Service that listens to ftrack events and stores them in the AYON database.\n- `processor` - Service that is processing ftrack events stored in the AYON database. Only one event is processed at a time.\n\n### Processor\nProcessor contains multiple event handlers that handle synchronization or basic automations helpers. It also provides a way to add custom event handlers from other addons. The addon must be loaded into the server, and must be available in bundle based on variant that service is running in (\"production\", \"staging\" or dev bundle).\nThe addon also must have prepared archive file that can be downloaded from the server.\n\n#### Archive file\nThe archive file can be a zip or tar, must contain `manifest.json` file that describes the content. The archive file must be uploaded to the server and must be available for download. The addon must implement `get_custom_ftrack_handlers_endpoint` method that returns URL to the archive file.\n\n```python\nclass SomeAddon(BaseServerAddon):\n    name = \"some_addon\"\n    version = \"1.0.0\"\n    \n    def get_custom_ftrack_handlers_endpoint(self) -\u003e str:\n        return \"addons/{self.name}/{self.version}/private/ftrack_handlers.tar.gz\"\n```\n\n#### Manifest file\nManifest file is a JSON file that describes the content of the archive file. It is used to load the content of the archive file into the processor. The file must be named `manifest.json` and must be in the root of the archive file.\n\n```json\n{\n    \"version\": \"1.0.0\",\n    \"handler_subfolders\": [\n        \"event_handlers\"\n    ],\n    \"python_path_subfolders\": [\n        \"common\"\n    ]\n}\n```\nContent of manifect may change in future, to be able to track changes and keep backwards compatibilit a `\"version\"` was added. Current version is `\"1.0.0\"`.\n\n\u003cb\u003e1.0.0\u003c/b\u003e\n- `handler_subfolders` - List of subfolder, relative to manifest.json where files with event handlers can be found. Processor will go through all of the subfolders and import all python files that are in the subfolder. It is recommended to have only one subfolder.\n- `python_path_subfolders` - Optional list of subfolders, relative to manifest.json. These paths are added to `sys.path` so content inside can be imported. Can be used for \"common\" code for the event handlers. It is not recommended to add python modules because of possible conflicts with other addons, but is possible.\n\n\n### Start as docker\nBoth services have prepared scripts to build and run docker images. There are 2 scripts `manage.ps1` for Windows and `Makefile` for Linux. Both scripts are doing the same thing and have same commands.\n\n#### Commands:\n- `build` - Build docker image\n- `dev` - Run docker image in development mode (uses .env file to define AYON server credentials)\n- `dist` - Push docker image to docker hub (don't use this command please)\n\n#### Docker compose\nThere are also `docker-compose.yml` files that will create a docker stack if you run `docker-compose up -d`. But run `build` command first so the image is available. \n\n### Start with prepared tools (Development \u0026 Testing)\nTools require to have available Python 3.9. Prepared scripts can be found in `./service_tools` directory. There are 2 scripts `start.ps1` for Windows and `Makefile` for Linux. Both scripts are doing the same thing and have same commands.\n\nMake sure you run `make install` (linux) or `./start.ps1 install` before running any other command.\n\nFor more information check [README](service_tools/README.md).\n\n## Development \u0026 Testing\nDevelopment and testing of this addon is complicated.\n\n### Server\nServer code must be uploaded (like with all other addons). Run `python create_package.py` to create package that can be uploaded to the server.\n\n### Client\nPoint dev path to `./client/` folder inside the repository.\n\n### Services\nServices can be tested in 2 ways. One is by running them locally using prepared service tools (see above).\n\nSecond is by running them as docker containers. For that you need to have running ASH (AYON service host). Once ASH is running you can run services from AYON web UI. This is recommended approach how to run services in production. But for testing of Pull requests it is required to build the docker image manually instead of using images from docker hub.\nImages must be built for all services.\n\n#### Windows\n```shell\ncd ./services/leecher\n./manage.ps1 build\n\ncd ../processor\n./manage.ps1 build\n```\n\n#### Linux\n```shell\ncd ./services/leecher\nmake build\n\ncd ../processor\nmake build\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fynput%2Fayon-ftrack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fynput%2Fayon-ftrack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fynput%2Fayon-ftrack/lists"}