{"id":16685305,"url":"https://github.com/fractalego/wafl","last_synced_at":"2025-10-30T01:04:01.121Z","repository":{"id":58511043,"uuid":"437615920","full_name":"fractalego/wafl","owner":"fractalego","description":"Using LLMs and rules for a local personal agent","archived":false,"fork":false,"pushed_at":"2025-01-17T15:58:54.000Z","size":6904,"stargazers_count":16,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-28T06:41:09.521Z","etag":null,"topics":["chatbot","local-model","personal-agent","tool-use"],"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/fractalego.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.txt","contributing":null,"funding":".github/FUNDING.yml","license":"license.txt","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},"funding":{"patreon":"wafl"}},"created_at":"2021-12-12T17:49:28.000Z","updated_at":"2025-04-11T12:04:29.000Z","dependencies_parsed_at":"2023-10-24T17:39:15.498Z","dependency_job_id":"a9d30c27-cc65-4ed9-a4bd-ebcf01a176d7","html_url":"https://github.com/fractalego/wafl","commit_stats":{"total_commits":304,"total_committers":1,"mean_commits":304.0,"dds":0.0,"last_synced_commit":"9b09a446290f64789dc7fe24e30e1c6c1ebbeda2"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/fractalego/wafl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fractalego%2Fwafl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fractalego%2Fwafl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fractalego%2Fwafl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fractalego%2Fwafl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fractalego","download_url":"https://codeload.github.com/fractalego/wafl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fractalego%2Fwafl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262685443,"owners_count":23348420,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["chatbot","local-model","personal-agent","tool-use"],"created_at":"2024-10-12T14:46:57.041Z","updated_at":"2025-10-07T04:23:51.299Z","avatar_url":"https://github.com/fractalego.png","language":"Python","funding_links":["https://patreon.com/wafl"],"categories":[],"sub_categories":[],"readme":"# ![Logo](images/logo.png) WAFL 0.1.0 [![Tests](https://github.com/fractalego/wafl/actions/workflows/development-tests1.yml/badge.svg)](https://github.com/fractalego/wafl/actions/workflows/development-tests1.yml)[![Docs](https://readthedocs.org/projects/wafl/badge/?version=latest)](https://wafl.readthedocs.io/en/latest/)\n\nIntroduction\n============\n\nWAFL is a framework for personal agents. It integrates Large language models, speech recognition and text to speech.\nThis framework combines Large Language Models and rules to create a predictable behavior. \nA set of rules is used to define the behavior of the agent, supporting function calling and a working memory.\nThe current version requires the user to specify the rules to follow.\n\nInstallation\n============\n\nIn this version, WAFL is a two-part system.\nBoth can be installed on the same machine.\n\n![The two parts of WAFL](images/two-parts.png)\n\n\n## Interface side\n\n\nThe first part is local to your machine and needs to have access to a microphone and speaker.\nTo install it, run the following commands:\n\n```bash \n$ sudo apt-get install portaudio19-dev ffmpeg\n$ pip install wafl\n```\n\nAfter installing the requirements, you can initialize the interface by running the following command:\n\n```bash\n$ wafl init\n```\n\nwhich creates a `config.json` file that you can edit to change the default settings.\nA standard rule file is also created as `wafl.rules`.\nPlease see the examples in the following chapters.\n\n\n## LLM side (needs a GPU)\nThe second part (LLM side) is a model server for the speech-to-text model, the LLM, the embedding system, and the text-to-speech model.\n\n#### Installation\nIn order to quickly run the LLM side, you can use the following installation commands:\n```bash\npip install wafl-llm\nwafl-llm start\n```\nwhich will use the default models and start the server on port 8080.\n\nThe interface side has a `config.json` file that needs to be filled with the IP address of the LLM side.\nThe default is localhost.\nAlternatively, you can run the LLM side by cloning [this repository](https://github.com/fractalego/wafl-llm).\n\n\nRunning WAFL\n============\nThis document contains a few examples of how to use the `wafl` CLI.\nThere are four modes in which to run the system\n\n\n### $ wafl run\nStarts all the available interfaces of the chatbot at the same time.\n\n\n## $ wafl run-audio\n\nThis is the main mode of operation. It will run the system in a loop, waiting for the user to speak a command.\nThe activation word is the name defined in config.json.\nThe default name is \"computer\", but you can change it to whatever you want.\n\n\n## $ wafl run-server\n\nIt runs a local web server that listens for HTTP requests on port 8090.\nThe server will act as a chatbot, executing commands and returning the result as defined in the rules.\n\n\n## $ wafl run-cli\n\nThis command works as for the run-server command, but it will listen for commands on the command line.\nIt does not run a webserver and is useful for testing purposes.\n\n\n## $ wafl run-tests\n\nThis command will run all the tests defined in the file testcases.txt.\n\n\nDocumentation\n=============\n\nThe documentation can be found at [wafl.readthedocs.io](https://wafl.readthedocs.io).\n\nSocial media contact\n====================\n\nYou can find the project at\n\u003ca rel=\"me\" href=\"https://fractalego.social/@wafl\"\u003eMastodon\u003c/a\u003e\n\nPlease note that the autor of this project will never contact you to ask for funding.\nNote also that any interaction on social media outside the above link is an impersonation and likely a scam.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffractalego%2Fwafl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffractalego%2Fwafl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffractalego%2Fwafl/lists"}