Skip to content

Instantly share code, notes, and snippets.

View crizCraig's full-sized avatar
🛠️
Building

Craig Quiter crizCraig

🛠️
Building
View GitHub Profile
{
"LOG": true,
"LOG_LEVEL": "trace",
"CLAUDE_PATH": "",
"HOST": "127.0.0.1",
"PORT": 3456,
"APIKEY": "",
"API_TIMEOUT_MS": "600000",
"PROXY_URL": "",
"transformers": [],
@crizCraig
crizCraig / cci.md
Last active November 3, 2025 00:16
Claude Code Infinite setup

Claude Code Infinite

Claude Code can now handle infinitely long sessions! So you don't have to worry about the context window filling up or ever running /compact again. Our human-like memory is FAR superior. We can't wait for you to try it!

Setup

  1. Install Claude Code Router
  2. Get your PolyChat API key here: https://polychat.co/auth?memtree=true
  3. Add the following polychat provider to your ~/.claude-code-router/config.json within the Providers array:
"tools": [
{
"type": "function",
"function": {
"name": "Task",
"description": "Launch a new agent to handle complex, multi-step tasks autonomously. \n\nAvailable agent types and the tools they have access to:\n- general-purpose: General-purpose agent for researching complex questions, searching for code, and executing multi-step tasks. When you are searching for a keyword or file and are not confident that you will find the right match in the first few tries use this agent to perform the search for you. (Tools: *)\n- statusline-setup: Use this agent to configure the user's Claude Code status line setting. (Tools: Read, Edit)\n- output-style-setup: Use this agent to create a Claude Code output style. (Tools: Read, Write, Edit, Glob, Grep)\n- Explore: Fast agent specialized for exploring codebases. Use this when you need to quickly find files by patterns (eg. \"src/components/**/*.tsx\"), search code for keywords (eg. \"API endpoints\"), or answer questions about the codebase (eg

Open WebUI updated to v0.6.9

  • 📝 Edit Attached Images/Files in Messages: You can now easily edit your sent messages by removing attached files—streamlining document management, correcting mistakes on the fly, and keeping your chats clutter-free.

  • 🛡️ Confirm Dialog Focus Trap Reliability: The focus now stays correctly within confirmation dialogs, ensuring keyboard navigation and accessibility is seamless and preventing accidental operations—especially helpful during critical or rapid workflows.

  • 💬 Temporary Chat Admin Controls & Session Cleanliness: Admins are now able to properly enable temporary chat mode without errors, and previous session prompts or tool selections no longer carry over—delivering a fresh, predictable, and consistent temporary chat experience every time.

  • 📤 Unstylized PDF Export Option (Reduced File Size): When exporting chat transcripts or documents, you can now choose an unstylized PDF export for snappier downloads, minimal file size, and clea

@crizCraig
crizCraig / gitingest.txt
Created February 14, 2025 18:58
Code for https://gitingest.com/ from itself
Directory structure:
└── cyclotruc-gitingest/
├── README.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE
├── SECURITY.md
├── pyproject.toml
├── requirements-dev.txt
def generic_unsync(func: Callable[..., Any]) -> Callable[..., Any]:
"""
A function that dynamically decides whether to run asynchronously
or synchronously based on whether it's in an async context,
but always returns the result synchronously so that
you can use it from an async or sync context.
"""
from unsync import unsync # type: ignore # pylint: disable=import-outside-toplevel
@unsync # type: ignore
import asyncio
from typing import AsyncGenerator
async_q: asyncio.Queue[str] = asyncio.Queue()
async def producer() -> None:
try:
# Assuming `a` should be a value like 1, 2, etc.
# a = 1
await async_q.put(str(a)) # a not defined
@crizCraig
crizCraig / Values.md
Last active September 30, 2023 19:33
  1. Love, connection, caring, compassion, tolerance, helping others, sharing, and acceptance. We value the ability to love and to be loved, to connect with others, to care for others, to be compassionate, to be tolerant, to share, to help others, and to accept others.
  2. Freedom and autonomy. We value the ability to make our own decisions and to have control over our own lives. We value the ability to believe what we want, to have our own thoughts, and to have our own feelings. We value the ability to have our own opinions and to express them freely. We value the ability to have our own goals and to pursue them. We value the ability to have our own values and to live by them. We value the ability to have our own identity and to be ourselves.
  3. Harmony and peace. We value the ability to live in harmony with others and our surroundings and to live in peace without war, violence, or conflict.
  4. The right to life and the pursuit of happiness. We value the ability to live and to pursue happiness. We value the abi
@crizCraig
crizCraig / timeit.py
Last active July 3, 2023 19:04
Python timing decorator to measure how long a function takes (handles async and sync)
import asyncio
import time
from typing import Callable, Any
def timed(fn: Callable[..., Any]) -> Callable[..., Any]:
"""
Decorator log test start and end time of a function
:param fn: Function to decorate
:return: Decorated function