manifest
Version:
Self-hosted Manifest LLM router with embedded server, SQLite database, and dashboard
2 lines (1 loc) • 10.1 kB
JavaScript
import{i as e,g as n,T as N,M as F,m as U,h as y,s as z,F as C,a as R,B as q,S as B,t as o,n as L,d as A}from"./vendor-C-Y5oNOq.js";import{b as G,t as I}from"./index-C4Qw7vZo.js";import"./auth-CU91cd7V.js";var D=o('<svg width=12 height=12 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round aria-hidden=true style=margin-left:4px><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path><polyline points="15 3 21 3 21 9"></polyline><line x1=10 y1=14 x2=21 y2=3>'),E=o('<button class="btn btn--outline btn--sm"aria-label="Copy to clipboard"style="padding:2px 8px;font-size:var(--font-size-xs)">'),H=o('<a class="btn btn--primary btn--sm"style=text-decoration:none>Connect '),O=o("<div class=container--lg><div class=page-header><div><h1>Free Models</h1><span class=breadcrumb>Cloud providers offering free API access for </span></div></div><div style=display:flex;flex-direction:column;gap:10px;margin-bottom:24px><div style=display:flex;align-items:center;gap:10px><span style=display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:hsl(var(--primary));color:hsl(var(--primary-foreground));font-size:var(--font-size-xs);font-weight:600;flex-shrink:0>1</span><span style=font-size:var(--font-size-sm);color:hsl(var(--muted-foreground))>Get your free API key from the provider website</span></div><div style=display:flex;align-items:center;gap:10px><span style=display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:hsl(var(--primary));color:hsl(var(--primary-foreground));font-size:var(--font-size-xs);font-weight:600;flex-shrink:0>2</span><span style=font-size:var(--font-size-sm);color:hsl(var(--muted-foreground))>Hit the provider Connect button, paste your key, and validate the connection</span></div><div style=display:flex;align-items:center;gap:10px><span style=display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:hsl(var(--primary));color:hsl(var(--primary-foreground));font-size:var(--font-size-xs);font-weight:600;flex-shrink:0>3</span><span style=font-size:var(--font-size-sm);color:hsl(var(--muted-foreground))>Done! The provider models are now included in your routing. Customize tiers and preferences from the routing page."),V=o('<div class=panel style=margin-bottom:24px><div style=display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:8px><h2 style=margin:0;font-size:var(--font-size-lg);display:flex;align-items:center;gap:8px></h2><div style=display:flex;gap:8px;flex-shrink:0><a target=_blank rel="noopener noreferrer"class="btn btn--outline btn--sm"style=text-decoration:none>Get API key</a></div></div><div style=display:flex;align-items:center;gap:20px;margin-bottom:16px;flex-wrap:wrap>'),J=o("<img alt style=height:20px>"),Q=o("<span style=display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-sm);color:hsl(var(--foreground));white-space:nowrap><span style=width:5px;height:5px;border-radius:50%;background:hsl(var(--foreground));flex-shrink:0>"),W=o('<div class=free-models-base-url-row><div style=display:flex;align-items:center;gap:8px;min-width:0><span style=font-size:var(--font-size-sm);color:hsl(var(--muted-foreground));flex-shrink:0>Base URL:</span><code style="font-family:var(--font-mono);font-size:var(--font-size-xs);background:hsl(var(--muted) / 0.5);padding:4px 8px;border-radius:var(--radius);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0"></code></div><button style=display:inline-flex;align-items:center;gap:6px;font-size:var(--font-size-sm);color:hsl(var(--foreground));padding:0;background:none;border:none;cursor:pointer;white-space:nowrap;margin-left:auto;font-weight:500><img src=/icons/caret-down.svg alt class=free-models-caret>'),X=o('<div style="display:flex;align-items:flex-start;gap:8px;padding:10px 14px;border-radius:var(--radius);background:#f7f5ed;margin-top:16px;margin-bottom:16px;font-size:var(--font-size-sm)"><svg xmlns=http://www.w3.org/2000/svg width=16 height=16 fill=currentColor viewBox="0 0 24 24"style=flex-shrink:0;color:hsl(var(--primary));margin-top:1px><path d="M12 17c.55 0 1-.45 1-1v-4c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1M12 7a1 1 0 1 0 0 2 1 1 0 1 0 0-2"></path><path d="M12 22c5.51 0 10-4.49 10-10S17.51 2 12 2 2 6.49 2 12s4.49 10 10 10m0-18c4.41 0 8 3.59 8 8s-3.59 8-8 8-8-3.59-8-8 3.59-8 8-8"></path></svg><span style="color:hsl(var(--foreground) / 0.8)">'),Y=o("<div class=free-models-accordion><div><table class=data-table><colgroup><col style=width:36%><col style=width:12%><col style=width:14%><col style=width:16%><col style=width:22%></colgroup><thead><tr><th>Model Name</th><th>Context</th><th>Max Output</th><th>Modality</th><th>Rate Limit</th></tr></thead><tbody>"),Z=o("<tr><td style=font-family:var(--font-mono);font-size:var(--font-size-xs)></td><td style=font-size:var(--font-size-sm)></td><td style=font-size:var(--font-size-sm)></td><td style=font-size:var(--font-size-sm)></td><td style=font-size:var(--font-size-sm)>");const ee=[{name:"Cohere",logo:"/icons/cohere.svg",description:"",tags:["Up to 1,000 calls/month","No credit card required"],apiKeyUrl:"https://dashboard.cohere.com/api-keys",baseUrl:"https://api.cohere.ai/compatibility/v1",warning:"Trial keys cannot be used for production or commercial workloads. Data may be used for training.",models:[{model_id:"command-a-03-2025",context:"256K",max_output:"8K",modality:"Text",trial_rate_limit:"20 req / min"},{model_id:"command-a-reasoning-08-2025",context:"256K",max_output:"32K",modality:"Text",trial_rate_limit:"20 req / min"}]},{name:"Gemini",logo:"/icons/gemini.svg",description:"",tags:["250K TPM (Tokens / Minute) shared across models","No credit card required"],apiKeyUrl:"https://aistudio.google.com/apikey",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai/",warning:"Rate limits apply per Google Cloud project, not per API key. On the free tier, prompts and responses may be used to improve Google products.",models:[{model_id:"gemini-2.5-pro",context:"1M",max_output:"64K",modality:"Text",trial_rate_limit:"5 req / min"},{model_id:"gemini-2.5-flash",context:"1M",max_output:"64K",modality:"Text",trial_rate_limit:"10 req / min"},{model_id:"gemini-2.5-flash-lite",context:"1M",max_output:"64K",modality:"Text",trial_rate_limit:"15 req / min"},{model_id:"gemini-3-flash-preview",context:"1M",max_output:"64K",modality:"Text",trial_rate_limit:"Preview limits"},{model_id:"gemini-3.1-flash-lite-preview",context:"1M",max_output:"64K",modality:"Text",trial_rate_limit:"Preview limits"}]},{name:"Kilo Code",logo:"/icons/kilocode.jpg",description:"",tags:["No credit card required"],apiKeyUrl:"https://app.kilo.ai/profile",baseUrl:"https://api.kilo.ai/api/gateway",warning:"Prompts and outputs are logged on free models to improve provider products.",models:[{model_id:"qwen/qwen3.6-plus:free",context:"1M",max_output:"65K",modality:"Text + Image + Video",trial_rate_limit:"~200 req / hr"},{model_id:"nvidia/nemotron-3-super-120b-a12b:free",context:"262K",max_output:"262K",modality:"Text",trial_rate_limit:"~200 req / hr"},{model_id:"stepfun/step-3.5-flash:free",context:"256K",max_output:"256K",modality:"Text",trial_rate_limit:"~200 req / hr"},{model_id:"corethink:free",context:"78K",max_output:"8K",modality:"Text",trial_rate_limit:"~200 req / hr"}]}],te=()=>D(),ie=r=>{const[a,m]=R(!1),f=async()=>{try{await navigator.clipboard.writeText(r.text),m(!0),I.success("Copied to clipboard"),setTimeout(()=>m(!1),2e3)}catch{I.error("Failed to copy")}};return(()=>{var l=E();return l.$$click=f,e(l,()=>a()?"Copied":"Copy"),l})()},re=r=>{const a=L(),m=()=>decodeURIComponent(a.agentName),f=()=>r.provider.models.map(t=>`${t.model_id}:0:0`).join(","),l=()=>`/agents/${encodeURIComponent(m())}/routing?provider=custom&name=${encodeURIComponent(r.provider.name)}&baseUrl=${encodeURIComponent(r.provider.baseUrl)}&models=${encodeURIComponent(f())}`;return(()=>{var t=H();return t.firstChild,e(t,()=>r.provider.name,null),y(()=>z(t,"href",l())),t})()},le=()=>(()=>{var r=O(),a=r.firstChild,m=a.firstChild,f=m.firstChild,l=f.nextSibling;return l.firstChild,a.nextSibling,e(r,n(N,{children:"Free Models - Manifest"}),a),e(r,n(F,{name:"description",content:"Free LLM models you can use with Manifest. No credit card required."}),a),e(l,()=>G()??"your agent",null),e(r,n(C,{each:ee,children:t=>(()=>{var _=V(),k=_.firstChild,b=k.firstChild,M=b.nextSibling,w=M.firstChild;w.firstChild;var P=k.nextSibling;return e(b,(()=>{var d=U(()=>!!t.logo);return()=>d()&&(()=>{var s=J();return y(()=>z(s,"src",t.logo)),s})()})(),null),e(b,()=>t.name,null),e(w,n(te,{}),null),e(M,n(re,{provider:t}),null),e(P,n(C,{get each(){return t.tags??[]},children:d=>(()=>{var s=Q();return s.firstChild,e(s,d,null),s})()})),e(_,()=>{const[d,s]=R(!0);return[(()=>{var c=W(),g=c.firstChild,u=g.firstChild,$=u.nextSibling,x=g.nextSibling,v=x.firstChild;return e($,()=>t.baseUrl),e(g,n(ie,{get text(){return t.baseUrl}}),null),x.$$click=()=>s(i=>!i),e(x,(()=>{var i=U(()=>!!d());return()=>i()?"Hide models":`Show models (${t.models.length})`})(),v),y(i=>q(v,`width: 20px; height: 20px; transition: transform 250ms ease; transform: rotate(${d()?"180deg":"0deg"});`,i)),c})(),(()=>{var c=Y(),g=c.firstChild,u=g.firstChild,$=u.firstChild,x=$.nextSibling,v=x.nextSibling;return e(g,n(B,{get when(){return t.warning},get children(){var i=X(),p=i.firstChild,h=p.nextSibling;return e(h,()=>t.warning),i}}),u),e(v,n(C,{get each(){return t.models},children:i=>(()=>{var p=Z(),h=p.firstChild,K=h.nextSibling,S=K.nextSibling,T=S.nextSibling,j=T.nextSibling;return e(h,()=>i.model_id),e(K,()=>i.context),e(S,()=>i.max_output),e(T,()=>i.modality),e(j,()=>i.trial_rate_limit),p})()})),y(i=>{var p=!!d(),h=`table-layout: fixed; width: 100%;${t.warning?"":" margin-top: 16px;"}`;return p!==i.e&&c.classList.toggle("free-models-accordion--open",i.e=p),i.t=q(u,h,i.t),i},{e:void 0,t:void 0}),c})()]},null),y(()=>z(w,"href",t.apiKeyUrl)),_})()}),null),r})();A(["click"]);export{le as default};