Your AImazing rubber duck debugging companion. Helps you with anything on your PC.
Project description
🦆 Quack Norris - the code savy star 🌟
Are you tired of spending hours ⏳ debugging your code? Look no further! Quack Norris 🦆 is here to save the day. This AImazing rubber duck will be your trusty AI companion 🤖, helping you tackle anything on your PC 💻.
Unified API Access to Agentic AI: Experience seamless integration with leading language models through our unified API. This innovative platform supports agentic AI, allowing tools and retrieval-augmented generation (RAG) functionalities to be transparently utilized by any connecting app - whether it's focused on chat or other tasks. 🤖💬
Global Conversations: Our advanced feature intelligently aggregates conversations from various connections into a cohesive global conversation, powered by the quack-norris-global model (itself using any model you want in the background). This ensures continuity and context across multiple interactions, enhancing your user experience and productivity. 🚀🌐
🛠️ Installation
# for server use (just backend)
pip install quack-norris
# for desktop use (includes ui)
pip install quack-norris[ui]
👨💻 Usage
Run the ui or server from the commandline.
# run server
quack-norris-server
# run ui (including local server, if not present)
quack-norris-ui
🌐 API
The server exposes an OpenAI style API for you to use in other tools as well. However, to access all features, you need to know the following:
model = "quack-norris"uses whatever is selected by quack norris (user, agent or router)model = "quack-norris:code"hints that we prefer a code savy model
model = "quack-norris-global"(and variants) use the same conversation accross all connections (not per connection)- allows you to have a conversation across multiple applications (breaking boundaries between your IDE and quack-norris-ui)
quack-norris-uiuses the global model by default
/cmd- slash-commands allow you to interact with the server instead of the model (returns the response of the command instead of a model response)/fetchgets the messages in the chat since your last message/new [name]starts a new chat with the model using the (optional) name (use timestamp as name for unnamed chats)/clearis an alias for/new/rename namerename the current conversation to a new name/select namechange to another conversation/model modelnamechange the model of the conversation (e.g./model llama3.2:7b)/listlist all available conversations
💡 Roadmap
- Server
- Provide OpenAI Rest API Endpoint
- Route requests to LLM via an OpenAI API (proxy)
- Route quack norris model variants to custom chat handler
- Implement commands for quack norris chat handler
- Implement named and unnamed chats (history management)
- Implement global chat mangling
- Implement quack norris chat router (agentic, tools)
- Implement agentic AI core
- Implement tool calling (for AI and User)
- Implement tools
- Web Search (get urls + abstract)
- Web Scraper (get content of url as text)
- Search Wikipedia (get article names + abstract)
- Read Wikipedia (get wikipedia article on topic as text)
- RaG Context Retriever (get filename and text snippet as context)
- Document Read (printout content of a file)
- Document Writer (write text to a file)
- Paper Search (Arxiv, Google Scholar)
- Paper Summarize - Pass 1 (fast, short summary of a transcribed pdf)
- Paper Summarize - Pass 2 (detailed summary of a pass 1 summarized paper)
- PDF Downloader (Arxiv, Google Scholar or url)
- PDF Transcribe (pdf to markdown/text)
- Podcast Creator (generate a podcast explaining the content of a document)
- Provide E-Mail endpoint (write mail and AI will respond to you)
- Provide Phone Call endpoint (call via phone and AI will respond to you)
- Startup/boot a model server, if needed (e.g. raspi starts gaming PC)
- UI
- A floating duck (movable)
- Double click opens a chat window with buttons for actions
- Implement Actions:
- Take Screenshot (into chat input)
- Transcribe Audio (into chat input)
- use transcript to chat with AI
- use "Document Writer" tool to take notes
- Call (transcript is sent after a pause, response is read and it listenes again for user input)
- Manage Chats
- New Chat
- Switch/Change Chat
- Archive Chat
- Change Chat's Model
👥 Contributing
Feel free to make this code better by forking, improving the code and then pull requesting.
I try to keep the dependency list of the repository as small as possible. Hence, please try to not include unnescessary dependencies, just because they save you two lines of code.
When in doubt, if I will like your contribution, check the .continuerules for AI assistants. The rules for AI will also apply to human contributors.
⚖️ License
Quack Norris is licensed under the permissive MIT license -- see LICENSE for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file quack_norris-0.0.1.tar.gz.
File metadata
- Download URL: quack_norris-0.0.1.tar.gz
- Upload date:
- Size: 115.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdb3ecd9f0824481df20716697a1a08eaf297bd1617a455c2753ab9c305c1b51
|
|
| MD5 |
c6eeaeaee98116fe2f4d638fb7c4e661
|
|
| BLAKE2b-256 |
efbc437285403a1bccf09f77c7e73527edb84f6b71a890a205e84aeb278ca7c7
|
Provenance
The following attestation bundles were made for quack_norris-0.0.1.tar.gz:
Publisher:
python-publish.yml on penguinmenac3/quack-norris
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
quack_norris-0.0.1.tar.gz -
Subject digest:
fdb3ecd9f0824481df20716697a1a08eaf297bd1617a455c2753ab9c305c1b51 - Sigstore transparency entry: 164256053
- Sigstore integration time:
-
Permalink:
penguinmenac3/quack-norris@e118a7de4c662a703d4ed53737781e90ea822152 -
Branch / Tag:
refs/tags/V0.0.1 - Owner: https://github.com/penguinmenac3
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@e118a7de4c662a703d4ed53737781e90ea822152 -
Trigger Event:
release
-
Statement type:
File details
Details for the file quack_norris-0.0.1-py3-none-any.whl.
File metadata
- Download URL: quack_norris-0.0.1-py3-none-any.whl
- Upload date:
- Size: 113.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ceaf7f0bf92780abd76c1511b4848170c8e68f31a0efdfd7a5bda44d0bff9c27
|
|
| MD5 |
506a26b5c1108cdaeb0911f5c734bb77
|
|
| BLAKE2b-256 |
3401672804f166bc0066c83095f5fa1505784fa68bfa6b7fa63e58c574a78875
|
Provenance
The following attestation bundles were made for quack_norris-0.0.1-py3-none-any.whl:
Publisher:
python-publish.yml on penguinmenac3/quack-norris
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
quack_norris-0.0.1-py3-none-any.whl -
Subject digest:
ceaf7f0bf92780abd76c1511b4848170c8e68f31a0efdfd7a5bda44d0bff9c27 - Sigstore transparency entry: 164256054
- Sigstore integration time:
-
Permalink:
penguinmenac3/quack-norris@e118a7de4c662a703d4ed53737781e90ea822152 -
Branch / Tag:
refs/tags/V0.0.1 - Owner: https://github.com/penguinmenac3
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@e118a7de4c662a703d4ed53737781e90ea822152 -
Trigger Event:
release
-
Statement type: