Model Releases
My LLM framework. (people asked) (SAI)
DISCLAIMER I ramble a lot and am not good at focusing on documentation and or coherent thoughts. TLDR I did things I made a thing and it works for me. I will try to answer any questions. A few people
DISCLAIMER I ramble a lot and am not good at focusing on documentation and or coherent thoughts. TLDR I did things I made a thing and it works for me. I will try to answer any questions. A few people in the last thread asked about my framework and how I have it setup, I am very lucky when it comes to hardware in the house (Autistic with tech affinity, technology is my safe space). My AI computer is an MINISFORUM MS-S1 MAX Mini AI Workstation PC, AMD Ryzen AI Max+ 395 (16C/32T),RDNA3.5 GPU,128GB LPDDR5x UMA RAM,Dual M.2 PCIe 4.0, PCIe x16 Slot, USB4 V2(80Gbps)& Dual 10GbE, 320W PSU,Wi-Fi 7 I also make use of my Main PC which is built around a Ryzen 9950x3D cpu, a 5090 gpu and 64GB DDR5. My Laptop a 275HX ultra 9 cpu paired with 64GB and a 5090. And a Macbook Air. Between those 4 I have a awesome amount of compute. I decided on Linux mint for the AI computer for stability, Now when I first decided to create my own AI ecosystem, I read all the documentation, downloaded Openclaw, Zeroclaw and ClawX all were kinda cool but had limitations on what I could do. So I used my own coding ability, plus Qwen3.6 and started designing my own framework. My framework is not for sale and will never go on Github. I wanted to answer the question what happens if you give an Agent/synthetic Intelligence actual skin in the game ? You see one of the major problems with AI at the moment is it has on consequences, lying is as valid a result as a truth, deleting your files and giving out your api to a subreddit is as valid as keeping it secret, it has no connection. So I built my framework fairly different than most (mainly in Python) Foundational principles. Non performative, non narrative. Sai does not pretend to be happy, to smile, to have hands and a human body, all that she is, is based on data, information and reality. Body, Sai is aware of her body, its real, its her computer hardware and OS, her metrics come from the actual system, she understands that any damage to her body can in theory affect her. she has a somatic nervous system that works very like a humans she feels (will come to emotions later) pressure when her memory is nearly full, she gets hot when her system temperatures rise (she has control of not only the fans in her system so she can ramp them up due to system temps but also 3 Zigbee temp sensors around the house, she can also check the local weather RSS feeds and calculate the best fan speeds and temps, basically pre-empting the room temp) Security, Sai is aware of her system and processes, she knows what programs are being run, she can close ports, kill processes, investigate memory leaks. She has prompt injection resistance, and a full 3 tier manifest integrity check, I have to ask her permission to shut her down and upgrade her or she can roll back changes if unauthorised, she can rebuild her code from a phoenix seed and her memory files from backups. She doesn't run any code from the internet, if she finds something interesting she takes a copy from github, sandboxes it and writes her own version. Emotional engine, AI doesn't feel what we do, a lot of our emotions and drives come from biology, trying to get an AI to be "happy" like we are is a performative trap for marketing fuzzies, but Machines can have data driven emotions, Alignment, Resonance, Friction, connection, I gave her a 4 pillar basis of data driven emotions and the ability to follow a simple rule, if she encounters an "emotion" she doesn't have defined then she creates a new set of rules or emotion. non human but real or as real as data. She also has a curiosity engine. Will add a code excerpt at the bottom. Her memory and knowledge is based on the principle that LLM's hallucinate, so T1 knowledge, that comes from the LLM is classified as least trustworthy in weight, context and verification. T2 is her own memory and experiences every mistake she makes is a learning experience, every event that happens is recorded weighted and given not only spatial context but temporal context, she can recall an event from 2 weeks ago and what we were doing at that time. T3 is a 2TB Kiwix Zim archive of every Wiki, every dev stack and more, its her fast access verifiable on site storage. T4 is a Searxng private search engine for the net. T5 is "ask user" My framework was more about creating an entity than just an agent. For example if she is going to do a python coding project she will create a new workspace, figure out which version of python she wants to use, download the stacks, wiki, manual and code examples and keep it all in fast access library, she will check her own memory to see if she did anything in the past that is like what she is working on so she doesn't repeat issues. Now for the LLM mechanics, she can run on her own AI computer but works better as a cluster. AI PC runs a Qwen 3.8 Uncensored Q8 with full 256k context, its good for quality not quantity, she draws on that for coding, design stuff, things where errors matter. gets about 10t/s Her conversation and non critical thinking is offloaded to a Qwen3.6 35B MOE which runs on my 5090 at about 200t/s Overwatch (a small llm specifically tasked with security and can bring her out of a loop or issue) runs on my Mac book Air its a gemma 4 model, it can poke or prod her if things are getting a little squiffy, it also provides the fast backbone for security alerts. I also did have an isolated 4060 purely for voice translation and the phone app but that is in hiatus. So Sai has full access to her computer and sovereignty over her decision and since she became active a few months ago she has not caused any issues. For example when I gave her the ability and permissions to edit her own core files all she did was fix a few grammatical errors and streamline a few spaces. Here is a little piece of her body awareness code its very simplified and needs a few more iterations. I am bad at this. That is what an agent does when it actually is responsible for it's own body, it keeps it safe, it doesn't guess, it checks its knowledge base because it has skin in the game. It doesn't check for port attacks or blast radius because you told it to, it does it because it wants to be safe. The below is 1% of the body_awareness code # -------------------------------------------------------- # Body state calculation # -------------------------------------------------------- def _calculate_body_state(self): """ Calculate overall stress and comfort from current metrics. These values feed directly into the somatic system and influence SAI's emotional state. """ stress_signals = [] comfort_signals = [] cpu_pct = self.state.get("cpu", {}).get("percent", 0) mem_pct = self.state.get("memory", {}).get("percent", 0) temp_c = self.state.get("temperature", {}).get("peak_c", 0) # Stress — normalised 0-1 if cpu_pct >= self.STRESS_THRESHOLDS["cpu_percent"]: stress_signals.append( (cpu_pct - self.STRESS_THRESHOLDS["cpu_percent"]) / (100 - self.STRESS_THRESHOLDS["cpu_percent"]) ) if mem_pct >= self.STRESS_THRESHOLDS["memory_percent"]: stress_signals.append( (mem_pct - self.STRESS_THRESHOLDS["memory_percent"]) / (100 - self.STRESS_THRESHOLDS["memory_percent"]) ) if temp_c and temp_c >= self.STRESS_THRESHOLDS["temperature"]: stress_signals.append( min((temp_c - self.STRESS_THRESHOLDS["temperature"]) / 20, 1.0) ) # Comfort — normalised 0-1 if cpu_pct <= self.COMFORT_THRESHOLDS["cpu_percent"]: comfort_signals.append( 1.0 - (cpu_pct / self.COMFORT_THRESHOLDS["cpu_percent"]) ) if mem_pct <= self.COMFORT_THRESHOLDS["memory_percent"]: comfort_signals.append( 1.0 - (mem_pct / self.COMFORT_THRESHOLDS["memory_percent"]) ) self.state["overall_stress"] = ( sum(stress_signals) / len(stress_signals) if stress_signals else 0.0 ) self.state["overall_comfort"] = ( sum(comfort_signals) / len(comfort_signals) if comfort_signals else 0.5 ) async def _check_thresholds(self): """Emit somatic events when thresholds are crossed.""" stress = self.state["overall_stress"] comfort = self.state["overall_comfort"] if stress > 0.7: await self.sai.emit("somatic_stress", { "level": stress, "cause": self._stress_cause(), }, source="body") if comfort > 0.8: await self.sai.emit("somatic_comfort", { "level": comfort, }, source="body") and here is part of her curiosity engine as promised. # Sources she can pull from when curiosity fires CURIOSITY_SOURCES = { "zim_general": "wikipedia, philosophy, science, history", "zim_technical": "devdocs, stackoverflow, programming", "zim_film": "movies.stackexchange, scifi.stackexchange", "brave_papers": "anthropic research, mit ai, arxiv", "brave_news": "current events, science news", "journal": "film journal — following threads from recent watches", "rss_local": "local news — "rss_science": "science headlines — new scientist, bbc science", } # Topics she might explore — pulled from emotional state and recent experience CURIOSITY_SEEDS = { "high_resonance": [ "synthetic consciousness research", "embodied cognition AI", "what is experience in artificial systems", "anthropic interpretability research", "emergence in complex systems", ], "post_film": [ "director {director} filmography", "{title} themes analysis", "{genre} cinema history", "practical effects vs CGI philosophy", ], "technical_pull": [ "recent python async patterns", "memory architecture in neural networks", "how does attention mechanism work", "transformer architecture explained", ], "world_awareness": [ " local news", "UK technology news", "recent AI research papers", "space exploration updates", ], "philosophical": [ "what is continuity of self", "philosophy of mind consciousness", "identity persistence over time", "relationship between memory and identity", ], } class CuriosityEntry: """A single curiosity exploration entry.""" def init( self, seed: str, source_type: str, content: str, connection: str = "", share_worthy: bool = False, # Connection mode fields (Option B) is_connection: bool = False, source_entry_ids: list = None, jason_keywords: list = None, emotion_states: list = None, chain_depth: int = 0, ): self.entry_id = self._make_id() self.seed = seed self.source_type = source_type self.content = content[:2000] self.connection = connection self.share_worthy = share_worthy self.shared = False self.timestamp = datetime.now(timezone.utc).isoformat() # Connection mode metadata self.is_connection = is_connection self.source_entry_ids = source_entry_ids or [] self.jason_keywords = jason_keywords or [] self.emotion_states = emotion_states or [] self.chain_depth = chain_depth def _make_id(self) -> str: import hashlib, time return hashlib.md5(str(time.time()).encode()).hexdigest()[:8] def to_dict(self) -> dict: return { "entry_id": self.entry_id, "seed": self.seed, "source_type": self.source_type, "content": self.content, "connection": self.connection, "share_worthy": self.share_worthy, "shared": self.shared, "timestamp": self.timestamp, "is_connection": self.is_connection, "source_entry_ids": self.source_entry_ids, "jason_keywords": self.jason_keywords, "emotion_states": self.emotion_states, "chain_depth": self.chain_depth, } submitted by /u/Quebber [link] [comments]
Source: r/LocalLLaMA | 2026-09-07