{"id":33158652,"url":"https://github.com/perlogix/dama","last_synced_at":"2026-01-25T20:25:42.645Z","repository":{"id":57511140,"uuid":"134918098","full_name":"perlogix/dama","owner":"perlogix","description":"a simplified machine learning container platform that helps teams get started with an automated workflow","archived":false,"fork":false,"pushed_at":"2021-11-22T01:27:16.000Z","size":4416,"stargazers_count":77,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-08-14T12:36:18.227Z","etag":null,"topics":["containers","docker","go","golang","machine-learning","mlops","moby"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/perlogix.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}},"created_at":"2018-05-26T01:02:03.000Z","updated_at":"2025-04-05T01:01:51.000Z","dependencies_parsed_at":"2022-09-26T17:51:31.050Z","dependency_job_id":null,"html_url":"https://github.com/perlogix/dama","commit_stats":null,"previous_names":["taskfitio/dama"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/perlogix/dama","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perlogix%2Fdama","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perlogix%2Fdama/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perlogix%2Fdama/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perlogix%2Fdama/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/perlogix","download_url":"https://codeload.github.com/perlogix/dama/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perlogix%2Fdama/sbom","scorecard":{"id":727983,"data":{"date":"2025-08-11","repo":{"name":"github.com/perlogix/dama","commit":"8f4b1ae85d995b30f205430fcea55aaf00797e85"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":1.6,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/21 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: containerImage not pinned by hash: Dockerfile:1","Info:   0 out of   1 containerImage dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":0,"reason":"21 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2021-0052 / GHSA-h395-qcrw-5vmq","Warn: Project is vulnerable to: GHSA-3vp4-m3rf-835h","Warn: Project is vulnerable to: GO-2023-1737 / GHSA-2c4m-59x9-fr2g","Warn: Project is vulnerable to: GO-2022-0968 / GHSA-gwc9-m7rh-j2ww","Warn: Project is vulnerable to: GO-2021-0356 / GHSA-8c26-wmh5-6g9v","Warn: Project is vulnerable to: GO-2024-2961","Warn: Project is vulnerable to: GO-2023-2402 / GHSA-45x7-px36-x8w8","Warn: Project is vulnerable to: GO-2024-3321 / GHSA-v778-237x-gjrc","Warn: Project is vulnerable to: GO-2025-3487 / GHSA-hcg3-q754-cr77","Warn: Project is vulnerable to: GO-2022-0288","Warn: Project is vulnerable to: GO-2022-0969 / GHSA-69cg-p879-7622","Warn: Project is vulnerable to: GO-2022-1144 / GHSA-xrjj-mj9h-534m","Warn: Project is vulnerable to: GO-2023-1571 / GHSA-vvpx-j8f3-3w6h","Warn: Project is vulnerable to: GO-2023-1988 / GHSA-2wrh-6pvc-2jm9","Warn: Project is vulnerable to: GO-2023-2102 / GHSA-4374-p667-p6c8","Warn: Project is vulnerable to: GHSA-qppj-fm5r-hxr3","Warn: Project is vulnerable to: GO-2024-2687 / GHSA-4v7x-pqxf-cx7m","Warn: Project is vulnerable to: GO-2024-3333","Warn: Project is vulnerable to: GO-2025-3503 / GHSA-qxp5-gwg8-xv66","Warn: Project is vulnerable to: GO-2025-3595 / GHSA-vvgc-356p-c3xw","Warn: Project is vulnerable to: GO-2022-0493 / GHSA-p782-xgp4-8hr8"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-22T13:27:22.863Z","repository_id":57511140,"created_at":"2025-08-22T13:27:22.863Z","updated_at":"2025-08-22T13:27:22.863Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28757901,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T20:20:48.599Z","status":"ssl_error","status_checked_at":"2026-01-25T20:20:31.796Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["containers","docker","go","golang","machine-learning","mlops","moby"],"created_at":"2025-11-15T21:00:27.012Z","updated_at":"2026-01-25T20:25:42.639Z","avatar_url":"https://github.com/perlogix.png","language":"Go","funding_links":[],"categories":["Libraries"],"sub_categories":[],"readme":"# dama\n\n[![CircleCI](https://circleci.com/gh/perlogix/dama.svg?style=svg)](https://circleci.com/gh/perlogix/dama)\n[![Go Report Card](https://goreportcard.com/badge/github.com/perlogix/dama)](https://goreportcard.com/report/github.com/perlogix/dama)\n\n\nA simplified machine learning container platform that helps teams get started with an automated workflow.\n\n![demo gif](https://s3.amazonaws.com/yeticloud.com/dama-demo.gif)\n\n### DISCLAIMER: dama is currently in alpha due to the lack of security and scaling, but still fun to try out!\n\n## Server Configuration\n**Server default configurations in config.yml**\nThese configurations are loaded by default if not overridden in `config.yml`.\n\n\texpire: \"1300\"\n\tdeployexpire: \"86400\"\n\tuploadsize: 2000000000\n\tenvsize: 20\n\thttps:\n\t  listen: \"0.0.0.0\"\n\t  port: \"8443\"\n\t  debug: false\n\t  verifytls: false\n\tdb:\n\t  db: 0\n\t  maxretries: 20\n\tdocker:\n\t  endpoint: \"unix:///var/run/docker.sock\"\n\t  cpushares: 512\n\t  memory: 1073741824\n\tgotty:\n\t  tls: false\n\nThese configurations need to be set in your environment variables.\n\n\t# Server admin username and password\n\tDamaUser       # example: DamaUser=\"tim\"\n    DamaPassword   # example: DamaPassword=\"9e9692478ca848a19feb8e24e5506ec89\"\n\n\t# Redis database password if applicable\n\tDBPassword     # example: DBPassword=\"9e9692478ca848a19feb8e24e5506ec89\"\n\nAll configurations types\n\n\timages: [\"perlogix:minimal\"]                # required / string array\n\texpire: \"1300\"                             # string\n\tdeployexpire: \"86400\"                      # string\n\tuploadsize: 2000000000                     # int\n\tenvsize: 20                                # int\n\thttps:\n\t  listen: \"0.0.0.0\"                        # string\n\t  port: \"8443\"                             # string\n\t  pem: \"/opt/dama.pem\"                     # required / string\n\t  key: \"/opt/dama.key\"                     # required / string\n\t  debug: false                             # bool\n\t  verifytls: false                         # bool\n\tdb:\n\t  network: \"unix\"                          # required / string\n\t  address: \"./tmp/redis.sock\"              # required / string\n\t  db: 0                                    # int\n\t  maxretries: 20                           # int\n\tdocker:\n\t  endpoint: \"unix:///var/run/docker.sock\"  # string\n\t  cpushares: 512                           # int\n\t  memory: 1073741824                       # int\n\tgotty:\n\t  tls: false                               # bool\n\n## CLI Configuration\nThese environment variables need to be exported in order to use dama-cli.\n\n    DAMA_SERVER # example: export DAMA_SERVER=\"https://localhost:8443/\"\n    DAMA_USER   # example: export DAMA_USER=\"tim\"\n    DAMA_KEY    # example: export DAMA_KEY=\"9e9692478ca848a19feb8e24e5506ec89\"\n\n## CLI Flags\n\tUsage: dama [options] \u003cargs\u003e\n\n\t -new           Create a new environment from scratch and delete the old one\n\t -run           Create environment and run with dama.yml\n\t -file          Run with dama.yml in different directory\n\t -env           Create an environment variable or secret for runtime\n\t -img           Specify a docker image to be used instead of the default image\n\t -dl            Download file from workspace in your environment to your local computer\n\t -up            Upload files from your local computer to workspace in your environment\n\t -deploy        Deploy API and get your unique URI\n\t -show-api      Show API details: URL, Health and Type\n\t -show-images   Show images available to use\n\n## CLI Examples\n\tdama -new\n\tdama -run\n\tdama -run -file ../dama.yml\n\tdama -env \"AWS_ACCESS_KEY_ID=123,AWS_SECRET_ACCESS_KEY=234\"\n\tdama -deploy\n\tdama -run -img tensorflow:lite\n\tdama -show-images\n\tdama -show-api\n\tdama -up data.csv\n\tdama -dl model.pkl\n\n## dama.yml File\nThis a simple `dama.yml` to setup your environment and run a Flask API.\n\n\timage: \"perlogix:minimal\"\n\tport: \"5000\"\n\tpip: |\n\t  Flask==0.12.2\n\t  scikit-learn==0.19.1\n\t  numpy==1.14.2\n\t  scipy==1.0.0\n\tpython: |\n\t  from flask import Flask, request, jsonify\n\t  from sklearn import datasets\n\t  from sklearn.model_selection import train_test_split\n\t  from sklearn.ensemble import RandomForestClassifier\n\t  from sklearn.externals import joblib\n\n\t  X, y = datasets.load_iris(return_X_y=True)\n\t  X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)\n\t  model = RandomForestClassifier(random_state=101)\n\t  model.fit(X_train, y_train)\n\t  print(\"Score on the training set is: {:2}\".format(model.score(X_train, y_train)))\n\t  print(\"Score on the test set is: {:.2}\".format(model.score(X_test, y_test)))\n\t  model_filename = 'iris-rf-v1.0.pkl'\n\t  print(\"Saving model to {}...\".format(model_filename))\n\t  joblib.dump(model, model_filename)\n\t  app = Flask(__name__)\n\t  MODEL = joblib.load('iris-rf-v1.0.pkl')\n\t  MODEL_LABELS = ['setosa', 'versicolor', 'virginica']\n\n\t  @app.route('/predict')\n\t    def predict():\n\t      sepal_length = request.args.get('sepal_length')\n\t      sepal_width = request.args.get('sepal_width')\n\t      petal_length = request.args.get('petal_length')\n\t      petal_width = request.args.get('petal_width')\n\t      features = [[sepal_length, sepal_width, petal_length, petal_width]]\n\t      label_index = MODEL.predict(features)\n\t      label = MODEL_LABELS[label_index[0]]\n\t      return jsonify(status='complete', label=label)\n\t\t\n\t  if __name__ == '__main__':\n\t    app.run(debug=False, host=\"0.0.0.0\", threaded=True)\n\ncURL API in sandbox or deploy\n\n    curl -ks https://localhost:8443/api/\u003cinsert sandbox key\u003e/predict?sepal_length=5\u0026sepal_width=3.1\u0026petal_length=2.5\u0026petal_width=1.2\n\nEven simpler environment setup with model training.\n\n\timage: \"perlogix:tensorflow\"\n\tcheckout: \"https://github.com/aymericdamien/TensorFlow-Examples.git\"\n\tcmd: |\n\t  cd TensorFlow-Examples/examples/3_NeuralNetworks\n\t  python neural_network.py\n\nAll YAML configuration option types.\n\n\tproject         # string       - proejct name\n\tenv             # string array - env variables\n\tcheckout        # string       - git checkout master branch\n\ttime_format     # string       - python time format used in container as env variable TIMESTAMP\n\tsetup_cmd       # string       - run setup /initial command before cmd or python\n\tcmd             # string       - run BASH Linux command\n\tpython          # string       - run inline Python\n\tpip             # string       - install pip packages\n\timage           # string       - define container image for environment\n\tport            # string       - port to expose for web service\n\tgit:\n\t  url           # string       - git URL\n\t  branch        # string       - git branch\n\t  sha           # string       - git SHA\n\taws_s3:\n\t  file          # string       - file to push or pull\n\t  dir           # string       - directory to push or pull\n\t  bucket_push   # string       - push file or dir to S3\n\t  bucket_pull   # string       - pull file or dir from S3\n\n## Dockerfiles\nAdd these lines to your Dockerfiles for your CLI to connect via websockets\n\n    RUN cd /usr/bin \u0026\u0026 curl -L https://github.com/yudai/gotty/releases/download/v1.0.1/gotty_linux_amd64.tar.gz | tar -xz\n    CMD [\"/usr/bin/gotty\", \"--reconnect\", \"-w\", \"/bin/bash\"]\n\n## Build\n\n    make build\n\n## To Do\n\n - [ ] Tokenize environment variables in DB\n - [ ] Write test suite\n - [ ] Provide Vagrant and Docker images\n - [ ] Add scheduler / resource manager for multi-host container serving\n - [ ] Rewrite auth middleware\n - [ ] Swap out stdlib flags package for third-party package\n - [ ] These docs stink!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperlogix%2Fdama","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fperlogix%2Fdama","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperlogix%2Fdama/lists"}