Browse by type
A simple Extract, Transform, Load (ETL) pipeline system designed to be modular, scalable, and capable of handling various data synchronization strategies, including full overrides, incremental syncs, and deduplication.

The system consists of the following key components:
PocketBase is used as the backend server for managing configurations, states, and other metadata. It provides an easy-to-use admin UI and RESTful API for interacting with the system.
The orchestrator is responsible for coordinating the ETL workflows based on the configurations stored in PocketBase.
A custom Go package (dockermanager) that handles the creation, starting, and stopping of Docker containers.
Modular components that perform the actual data extraction and loading.
RabbitMQ is used as a message broker to facilitate communication between extractors and loaders.
connectionId.docker compose up --build -d // this will build the server image and start the server and rabbitmq
> docker build -t [extractor_name]:latest -f build/sources/[extractor_name]/Dockerfile .
> docker build -t [loader_name]:latest -f build/loaders/[loader_name]/Dockerfile .
curl -X POST "http://localhost:8090/api/collections/users/auth-with-password" \
-H "Content-Type: application/json" \
-d '{ "identity": "example@gmail.com", "password": "example" }'
Create a Source
curl -X POST "{{formdata_backend}}/api/source" \
-H "Authorization: {{user_token}}" \
-H "Content-Type: application/json" \
-d '{ "name": "extractor_name", "type": "file_extractor", "config": {} }'
Create a Loader
curl -X POST "{{formdata_backend}}/api/loader" \
-H "Authorization: {{user_token}}" \
-H "Content-Type: application/json" \
-d '{ "name": "loader_name", "type": "json_loader", "config": {} }'
Manual sync
curl -X POST "{{formdata_backend}}/api/connection" \
-H "Authorization: {{user_token}}" \
-H "Content-Type: application/json" \
-d '{ "source_id": "source_id", "loader_id": "loader_id", "sync_type": "manual", "config": {} }'
Scheduled sync
curl -X POST "{{formdata_backend}}/api/connection" \
-H "Authorization: {{user_token}}" \
-H "Content-Type: application/json" \
-d '{ "source_id": "source_id", "loader_id": "loader_id", "sync_type": "scheduled", "schedule": "* * * * *", "config": {} }'
curl -X POST "{{formdata_backend}}/api/sync" \
-H "Authorization: {{user_token}}" \
-H "Content-Type: application/json" \
-d '{ "connection_id": "connection_id" }'
browse all types & interfaces →
$ claude mcp add formdata-etl_ai \
-- python -m otcore.mcp_server <graph>