<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Projects on My Random Docs</title><link>https://docs.asrafuli.com/docs/projects/</link><description>Recent content in Projects on My Random Docs</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://docs.asrafuli.com/docs/projects/index.xml" rel="self" type="application/rss+xml"/><item><title>LLM Gateway</title><link>https://docs.asrafuli.com/docs/projects/llm-gateway/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.asrafuli.com/docs/projects/llm-gateway/</guid><description>&lt;h1 id="llm-gateway"&gt;LLM Gateway&lt;a class="anchor" href="#llm-gateway"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;h2 id="purpose"&gt;Purpose&lt;a class="anchor" href="#purpose"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Build a gateway layer that sits in front of one or more large language model APIs, providing a unified interface for routing, authentication, rate limiting, logging, and cost control.&lt;/p&gt;
&lt;h2 id="status"&gt;Status&lt;a class="anchor" href="#status"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;Active&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="goals"&gt;Goals&lt;a class="anchor" href="#goals"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Provide a single endpoint that abstracts multiple LLM providers (OpenAI, Anthropic, etc.)&lt;/li&gt;
&lt;li&gt;Enforce API key management and per-consumer authentication&lt;/li&gt;
&lt;li&gt;Track usage, costs, and latency per consumer and model&lt;/li&gt;
&lt;li&gt;Support request routing rules (e.g. route by model name, fallback on error)&lt;/li&gt;
&lt;li&gt;Enable rate limiting and budget caps per consumer&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="scope"&gt;Scope&lt;a class="anchor" href="#scope"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="included"&gt;Included&lt;a class="anchor" href="#included"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;HTTP proxy layer that accepts OpenAI-compatible requests&lt;/li&gt;
&lt;li&gt;Provider adapters for at least Anthropic and OpenAI&lt;/li&gt;
&lt;li&gt;Request and response logging with token counts&lt;/li&gt;
&lt;li&gt;Per-consumer API key issuance and validation&lt;/li&gt;
&lt;li&gt;Rate limiting and monthly spend caps&lt;/li&gt;
&lt;li&gt;Admin interface or config file for managing consumers and rules&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="not-included"&gt;Not included&lt;a class="anchor" href="#not-included"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fine-tuning or model hosting&lt;/li&gt;
&lt;li&gt;Training data management&lt;/li&gt;
&lt;li&gt;End-user chat UI&lt;/li&gt;
&lt;li&gt;Multi-region deployment (deferred)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tasks"&gt;Tasks&lt;a class="anchor" href="#tasks"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Define the API contract (request/response schema)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Stand up a basic HTTP proxy that forwards to one provider&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Add provider adapters (Anthropic, OpenAI)&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Implement consumer key management&lt;/li&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; Add request logging with token and cost tracking&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Add rate limiting per consumer&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Add budget cap enforcement&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Write admin config or dashboard&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Document the setup and deployment steps&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; Test with real traffic&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="links-and-files"&gt;Links and files&lt;a class="anchor" href="#links-and-files"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Repository: &lt;a href="https://github.com/asrafuli/gato"&gt;https://github.com/asrafuli/gato&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Docs:&lt;/li&gt;
&lt;li&gt;Notes:&lt;/li&gt;
&lt;li&gt;Related workflow:&lt;/li&gt;
&lt;li&gt;Related how-to:&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="decisions"&gt;Decisions&lt;a class="anchor" href="#decisions"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Date&lt;/th&gt;
 &lt;th&gt;Decision&lt;/th&gt;
 &lt;th&gt;Reason&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;2026-05-10&lt;/td&gt;
 &lt;td&gt;Start with OpenAI-compatible request schema&lt;/td&gt;
 &lt;td&gt;Maximises compatibility with existing tooling&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="outcome"&gt;Outcome&lt;a class="anchor" href="#outcome"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;A running gateway service that proxies LLM requests&lt;/li&gt;
&lt;li&gt;Per-consumer usage reports&lt;/li&gt;
&lt;li&gt;Documentation covering setup, configuration, and adding new providers&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="notes"&gt;Notes&lt;a class="anchor" href="#notes"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Capture rough notes, lessons, and things to remember.&lt;/p&gt;</description></item><item><title>Project Template</title><link>https://docs.asrafuli.com/docs/projects/project-template/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://docs.asrafuli.com/docs/projects/project-template/</guid><description>&lt;h1 id="project-template"&gt;Project Template&lt;a class="anchor" href="#project-template"&gt;#&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Use this page as a starting point for new projects.&lt;/p&gt;
&lt;h2 id="purpose"&gt;Purpose&lt;a class="anchor" href="#purpose"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Describe why this project exists.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;Build a repeatable documentation system for personal tools, workflows, and technical notes.&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="status"&gt;Status&lt;a class="anchor" href="#status"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Choose one:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Planned&lt;/li&gt;
&lt;li&gt;Active&lt;/li&gt;
&lt;li&gt;Paused&lt;/li&gt;
&lt;li&gt;Completed&lt;/li&gt;
&lt;li&gt;Archived&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Current status:&lt;/p&gt;
&lt;blockquote class='book-hint '&gt;
&lt;p&gt;Active&lt;/p&gt;
&lt;/blockquote&gt;&lt;h2 id="goals"&gt;Goals&lt;a class="anchor" href="#goals"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;List the outcomes that matter most.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Goal 1&lt;/li&gt;
&lt;li&gt;Goal 2&lt;/li&gt;
&lt;li&gt;Goal 3&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="scope"&gt;Scope&lt;a class="anchor" href="#scope"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="included"&gt;Included&lt;a class="anchor" href="#included"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;What this project will cover&lt;/li&gt;
&lt;li&gt;What files, tools, or systems are involved&lt;/li&gt;
&lt;li&gt;What success looks like&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="not-included"&gt;Not included&lt;a class="anchor" href="#not-included"&gt;#&lt;/a&gt;&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Work that belongs somewhere else&lt;/li&gt;
&lt;li&gt;Ideas to save for later&lt;/li&gt;
&lt;li&gt;Things that are intentionally out of scope&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tasks"&gt;Tasks&lt;a class="anchor" href="#tasks"&gt;#&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;Use this as the working checklist.&lt;/p&gt;</description></item></channel></rss>