{"id":27777884,"url":"https://github.com/cupofpython/catbot","last_synced_at":"2026-03-06T11:01:43.649Z","repository":{"id":288123366,"uuid":"951519584","full_name":"cupofpython/catbot","owner":"cupofpython","description":"A Cat Chatbot!","archived":false,"fork":false,"pushed_at":"2025-05-28T15:45:57.000Z","size":1855,"stargazers_count":1,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-11T13:58:59.312Z","etag":null,"topics":["aws","docker","docker-compose","eks","github-actions","jest","kubernetes","nodejs","ollama","testcontainers"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cupofpython.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}},"created_at":"2025-03-19T20:07:30.000Z","updated_at":"2025-04-29T19:18:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"16ad6d72-67a1-4294-9a25-dee653bf3dcb","html_url":"https://github.com/cupofpython/catbot","commit_stats":null,"previous_names":["cupofpython/catbot"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/cupofpython/catbot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cupofpython%2Fcatbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cupofpython%2Fcatbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cupofpython%2Fcatbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cupofpython%2Fcatbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cupofpython","download_url":"https://codeload.github.com/cupofpython/catbot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cupofpython%2Fcatbot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30173345,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T07:56:45.623Z","status":"ssl_error","status_checked_at":"2026-03-06T07:55:55.621Z","response_time":250,"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":["aws","docker","docker-compose","eks","github-actions","jest","kubernetes","nodejs","ollama","testcontainers"],"created_at":"2025-04-30T07:59:40.599Z","updated_at":"2026-03-06T11:01:38.640Z","avatar_url":"https://github.com/cupofpython.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CatBot: Talk to your cats. Access it [here!](https://thecatbot.ai)\n\n\n[![CatBot Demo](https://img.youtube.com/vi/Dlrrmmmn4M0/0.jpg)](https://www.youtube.com/watch?v=Dlrrmmmn4M0)\n\n\n## Summary\nThis project is a chatbot that allows you to talk to your cats. :smile:\n\nIt is a NodeJS app that uses the llama3.2 model to service prompt requests. It uses Docker Hub to pull the app + AI images.\n\n## How to Run\n\n### Locally\n- Run an LLM container `docker run -p 11434:11434 --name model samanthamorris684/ollama@sha256:78a199fa9652a16429037726943a82bd4916975fecf2b105d06e140ae70a1420`\n- `dotenv -e .env.dev -- npm run start:dev`\n\n#### Local Tests\n- Run `npm test`\n\n### Locally with Docker Compose\nI used compose to develop this locally. \n\n- Install model on Docker Model Runner: `docker model pull ai/llama3.2`\n- Note: This uses the `DMR` flag in the `env.compose` file to interact with the Open AI API call and llama.cpp server\n- `docker compose up --build`\n- When done, `docker compose down`\n\n#### Build the Ollama image with model pre pulled\n- Build: `docker build -f ollama/Dockerfile -t ollama_model --platform=linux/amd64 .`\n- Run: `docker run -d --platform=linux/amd64 ollama_model`\n\n### On EKS or MiniKube\n- Set up an EKS cluster. I followed this [tutorial](https://medium.com/@tamerbenhassan/deploying-a-simple-application-using-eks-step-by-step-guide-512b1559a7bd).\n- `kubectl apply -k out/overlays/desktop`\n\n#### EKS Notes:\n- I had to rebuild for AMD when the image was not able to be pulled by the pod. It should know to pull the AMD image build.\n- The default image size for your nodes is m5.large. Increase your resource requests as needed.\n\n- Create a node group for the model containers with the taint and labels set correctly (to model=true)\n- Set up your Route 53 by pointing the alias to the K8s cluster public domain, and request a certificate and put the CNAME name and values into Route 53. Additionally, add your pre-generated nameservers to the domain service DNS tab.\n\n#### General Notes:\n- Switch kube contexts when working with MiniKube vs. EKS. Get contexts by running `kubectl config get-contexts` and swtich by running: `kubectl config use-context {NAME}`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcupofpython%2Fcatbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcupofpython%2Fcatbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcupofpython%2Fcatbot/lists"}