{"id":37608978,"url":"https://github.com/leolani/cltl-combot","last_synced_at":"2026-01-16T10:16:10.721Z","repository":{"id":43186628,"uuid":"308077796","full_name":"leolani/cltl-combot","owner":"leolani","description":"CLTL Leolani Combot provides the framework for applications that implement human-robot interaction with conversation","archived":false,"fork":false,"pushed_at":"2025-11-04T20:01:27.000Z","size":251,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-05T16:10:08.279Z","etag":null,"topics":["framework","robots"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/leolani.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2020-10-28T16:32:13.000Z","updated_at":"2025-10-15T16:04:59.000Z","dependencies_parsed_at":"2024-06-05T03:32:34.424Z","dependency_job_id":"7b9c809e-7c8b-4840-a019-07d1d055f3a3","html_url":"https://github.com/leolani/cltl-combot","commit_stats":{"total_commits":129,"total_committers":8,"mean_commits":16.125,"dds":0.3023255813953488,"last_synced_commit":"016b6e515baf74eb94e158aa41a741f7b2185600"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/leolani/cltl-combot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leolani%2Fcltl-combot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leolani%2Fcltl-combot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leolani%2Fcltl-combot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leolani%2Fcltl-combot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/leolani","download_url":"https://codeload.github.com/leolani/cltl-combot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/leolani%2Fcltl-combot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28478049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T06:30:42.265Z","status":"ssl_error","status_checked_at":"2026-01-16T06:30:16.248Z","response_time":107,"last_error":"SSL_read: 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":["framework","robots"],"created_at":"2026-01-16T10:16:10.212Z","updated_at":"2026-01-16T10:16:10.711Z","avatar_url":"https://github.com/leolani.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CLTL Leolani Combot\n\nCLTL Leolani Combot provides the framework for applications that implement human-robot interaction with conversation.\n\n## About the Project\n\nThis is the successor of the [Leolani platform](https://github.com/leolani/pepper) with an improved modular\narchitecture.\n\n## Applications\n\nClone one of the application parents from this project space and follow the instructions there to run them:\n\n* [Eliza app](https://github.com/leolani/eliza-parent)\n* [Get to know you app](https://github.com/leolani/g2ky-parent)\n* [Leolani-mmai](https://github.com/leolani/leolani-mmai-parent)\n\n## Components\n\nCurrently, the following components are implemented for the framework:\n\n* [Application Repository](https://github.com/leolani/cltl-requirements)  \n  Repository to share artifacts and external dependencies between components.\n* [EMISSOR](https://github.com/leolani/emissor)  \n  Representation of interaction data.\n* [Backend](https://github.com/leolani/cltl-backend)  \n  Hardware integration and signal generation.\n* [Automatic Speech Recognition (ASR)](https://github.com/leolani/cltl-asr)  \n  Transcription of audio signals to text.\n* [Voice Activity Detection (VAD)](https://github.com/leolani/cltl-vad)  \n  Detection of speech in audio signals.\n* [Face Recognition](https://github.com/leolani/cltl-face-recognition)  \n  Currently includes face detection, age-gender detection, face recognition\n* [Chat UI](https://github.com/leolani/cltl-chat-ui)  \n  Simple Chat client to display and interact with the conversation\n* [Eliza chat](https://github.com/leolani/cltl-eliza)  \n  Eliza based chat.\n* [Get To Know You (G2KY) chat](https://github.com/leolani/cltl-g2ky)  \n  Establish name based on face recognition.\n* [About-agent](https://github.com/leolani/cltl-about-agent)\n  Answer questions about the agent itself.\n* [Knowledge extraction](https://github.com/leolani/cltl-knowledgeextraction)\n  Extracts factoid triples and perspectives from statements and gives back responses or it extracts SPARQL queries from\n  questions and generates answers.\n* [Knowledge linking](https://github.com/leolani/cltl-knowledgelinking)\n  Resolves IRIs for mentions and perceptions of things and people such that triples are augmented with IRIs.\n* [Knowledge representation](https://github.com/leolani/cltl-knowledgerepresentation)\n  The models and functions to support the episodic Knowledge Graph.\n* [Language generation](https://github.com/leolani/cltl-languagegeneration)\n  Generates texts from triples.\n* [Mention detection](https://github.com/leolani/cltl-mention-detection)\n  Detects mentions of entities and visual objects in text.\n* [Object recognition](https://github.com/leolani/cltl-object-recognition)\n  Detects people and objects in images.\n* [Question processor](https://github.com/leolani/cltl-questionprocessor)\n  Answers questions about the world through the Internet.\n* [Visual responder](https://github.com/leolani/cltl-visualresponder)\n  Answers questions to the visual context.\n\nTo create a new component follow the instructions in the [template component](https://github.com/leolani/cltl-template).\n\n## Getting Started\n\n### Running an application\n\nClone one of the above [applications](#Applications) and follow the instructions there to run them.\n\n### Prerequisites\n\n#### Homebrew\n\n[Homebrew](https://brew.sh/) is a useful package manager for Mac OS X, to install it follow the\ninstructions on their homepage.\n\n#### Python\n\nMost of the repositories require a Python version of *at least 3.8 and at most 3.10*.\nFor the provided build tooling the `python` and `pip` command must be linked to an\nappropriate version, You can check the version and used installation with the\n\n    python --version\n    which python\n\ncommands. One option to manage Python versions is to use [pyenv](https://github.com/pyenv/pyenv).\nNote, however, that `pyenv` doesn't work well together with anaconda. To detect if you\nare using anaconda use the command above.\nOn OS X you can alternatively you install specific Python version using homebrew by installing\n\n    brew install python@3.10\n\nand adding it to your PATH variable, like\n\n    export PATH=\"$(brew --prefix)/opt/python@3.10/libexec/bin:$PATH\"\n\nin `~/.zshrc` (see also their [their documentation](https://docs.brew.sh/Homebrew-and-Python)).\n\n*Note* that using an alias for the `python` command in the shell configuration script does not\nwork as aliases are eventually not expanded if the shell is not in interactive mode.\n\n##### Anaconda\n\nIf you are using anaconda the installation of some of the dependencies with pip can cause\nissues. For this reason we recommend *not* to use anaconda to build and run the Leolanii\nplatform. As mentioned above, anaconda does not work well together with _pyenv_ as both use\nthe same mechanism to intercept the system PATH. If you are usually using anaconda to manage your\nPython version, one option is to set the system Python installation to a version compatible with\nLeolani and deactivate anaconda for the time working with Leolani. Note that anaconda typically\nactivates the _base_ environment by default when starting an interactive shell.\n\nTo set the system Python version with homebrew on Max OS X run\n\n    brew install python@3.10\n\nand follow the instructions in the output messages to prepend the PATH variable in your\n`~/.zshrc` file and add your modifications _before_ the anaconda setup in `~/.zshrc`.\n\n#### make\n\nTo build the application, `make` is used.\n\nOn OS X it is recommended to upgrade `make`. Since OS X doesn't use standard GNU\nutils due their restrictive licence, default `make` on OS X is way outdated.\n\nOne option is to use homebrew:\n\n    brew install make\n\nand add the installed `gmake` command by adding\n\n    PATH=\"$(brew --prefix)/opt/make/libexec/gnubin:$PATH\"\n\nto your `~/.zshrc`\n\n#### Docker\n\n[Docker](https://www.docker.com/) is a tool to run our applications or components in a\ncontainerized runtime environment. To install it follow the instructions on their homepage\nor use [Homebrew](https://formulae.brew.sh/cask/docker). *Note* that you need to use the\n`--cask` option with Homebrew!\n\n#### Java\n\nTo check if Java is installed on your system you can run\n\n    java --version\n\nin the command line. If this does not work, install Java, e.g. with\n\n    brew install openjdk\n\n#### Graph DB\n\nSome components use GraphDB, to install it register on their\n[homepage](https://www.ontotext.com/products/graphdb/download) and follow the provided instructions.\n\n#### C compiler\n\nSome dependencies require a C compiler to be installed. On Mac OS X you may need to install\n\n        sudo xcode-select —install\n\nIf you encounter error messages regarding an invalid version of clang, you may need to reinstall\nby first running\n\n        sudo rm -rf /Library/Developer/CommandLineTools\n\nfollowed by the installation command above.\n\n#### Rust compiler\n\nSome dependencies require a Rust compiler to be installed, follow the instructions on their\n[homepage](https://www.rust-lang.org/tools/install) to install it.\n\n#### System libraries\n\n##### Audio\n\nPython audio libraries may need portaudio to be installed, on Mac OS X you can use\n[homebrew](https://formulae.brew.sh/formula/portaudio#default) to install it. To\nfigure out specific instructions regarding your hardware a simple internet search should\nfind you the answers.\n\nAlso *libsndfile* and *ffmpeg*  may need to be installed on your system.\n\nMac OS X the above can be installed with homebrew:\n\n    brew install portaudio libsndfile ffmpeg\n\nIt is possible though that homebrew does not link the *libsndfile* properly, in this case follow\nthe instructions in this [stackoverflow](https://stackoverflow.com/questions/67973223/cannot-import-soundfile-mac) post\nand pay attention to the output of homebrew. A likely fix is to add the following line to your\nshell initialization script (`~/.zshrc`):\n\n    export DYLD_LIBRARY_PATH=\"/opt/homebrew/lib:$DYLD_LIBRARY_PATH\"\n\n##### Video\n\nPillow eventually needs additional system libraries to be installed, check the *External Libraries* section in their\n[installation instructions](https://pillow.readthedocs.io/en/stable/installation/building-from-source.html#external-libraries)\nif you run into errors related to Pillow.\n\n## Development\n\nTo work on the development of a specific [application](#applications), start from the parent repository and follow the\nsteps described below. The description uses the [Eliza app](https://github.com/leolani/eliza-parent) as example.\n\n### Check-out\n\nTo check out all code needed for the Eliza App, follow the instructions in the\n[Eliza app](https://github.com/leolani/eliza-parent).\n\n### Build and run the application\n\nThe application is structured into separate components which have their own *git* repositories\nand can be run as separate Python applications. The parent repository of the application contains\nall those component repositories as *git* submodules.\n\nThere is a central application ([cltl-eliza-app](https://github.com/leolani/cltl-eliza-app)) that configures and runs\nall the necessary components it needs, either inside a Python application or as containerized services in a *Kubernetes*\ncluster or using *docker compose*. To run the application, first all components need to be packaged and made available\nto the application. For this purpose there are *makefiles* available in the components and the application parent that\nautomate this process. To build the application run\n\n    make build\n\nfrom the **parent repository**. This command will download external dependencies to\n[cltl-requirements](https://github.com/leolani/cltl-requirements), setup virtual environments for all components,\npackage them and publish the packages to [cltl-requirements](https://github.com/leolani/cltl-requirements) to make them\navailable to the application and other components.\n\nTo run the application follow the instructions in the [Eliza qparent](https://github.com/leolani/eliza-parent).\n\n### Make changes to the code\n\nIndividual components in the parent repository are edited and committed separately, and, after a stable version is\nreached, the state of the components is commited in the parent repository, for the workflow see\n[Working with git submodules](HOWTO/gitsubmodules.md).   \nModularization allows developing components in isolation. The application and other components depend on a packaged\nversion of a component only, therefore changes will become available outside of the component only after rebuilding\nthe application, see above.\n\nTo use PyCharm for development see the instructions in [Workflow using PyCharm](HOWTO/pycharm.md).\n\nTo commit changes made to the application see the instructions in [Working with git submodules](HOWTO/gitsubmodules.md).\n\n### Adding a new component\n\nTo add a new component to an application follow the instruction in the\n[template component](https://github.com/leolani/cltl-template).\n\n### Create a new application\n\n### HOWTOs\n\n* [Workflow using PyCharm](HOWTO/pycharm.md)\n* [Working with git submodules](HOWTO/gitsubmodules.md)\n* [Setup a new component](https://github.com/leolani/cltl-template.git)\n* [Add a component to a Python app]()\n\n## Content of this repository\n\nThis repo provides infrastructre and general code for the platform:\n\n### Infrastructure\n\nThe `cltl.combot.infra` module contains library code for infrastructre used in\nqthe application.\n\n#### Event bus\n\nComponents of the application can communicate via an event bus. The\n`cltl.combot.infra.event` module provides the interface and different implementations\nof the event bus.\n\nThe `cltl.combot.infra.topic_worker` module provides a convenience class to\nimplement the subscription to one or multiple topics in the event bus.\n\n#### Configuration manager\n\nConfiguration is made available in the application via a configuration manager.\nThe `cltl.combot.infra.config` module provides the interface and different\nimplementations of the configuration manager.\n\n#### Resource manager\n\nAccess to resources in the application is made available via a resource manager.\nThis includes providing resources and waiting for resources to become available\nas well as managing access to shared resources. The `cltl.combot.infra.resource`\nmodule provides the interface and different implementations of the resource\nmanager.\n\n#### Time util\n\nThe `cltl.combot.infra.time_util` module provides time related utilities to\nease the usage of a consistent time format throughout the application.\n\n#### Dependency injection\n\nThe `cltl.combot.infra.di_container` module provides a simple utility to use\ndependency inject in the application.\n\n### Common libraries\n\nTo be added.\n\n### Events based on EMISSOR\n\nThe `cltl.combot.event` module contains common event payloads.\n\n## Contributing\n\nContributions are what make the open source community such an amazing place to be learn, inspire, and create. Any\ncontributions you make are **greatly appreciated**.\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003c!-- LICENSE --\u003e\n\n## License\n\nDistributed under the MIT License. See [`LICENSE`](https://github.com/leolani/cltl-combot/blob/main/LICENCE) for more\ninformation.\n\n\n\n\u003c!-- CONTACT --\u003e\n\n## Authors\n\n* [Taewoon Kim](https://tae898.github.io/)\n* [Thomas Baier](https://www.linkedin.com/in/thomas-baier-05519030/)\n* [Selene Báez Santamaría](https://selbaez.github.io/)\n* [Piek Vossen](https://github.com/piekvossen)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleolani%2Fcltl-combot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleolani%2Fcltl-combot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleolani%2Fcltl-combot/lists"}