docs: adds images
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
# Ngino
|
||||
# <img src="docs/images/Ngino_logo_symbol.png" width="25" alt="logo symbol"/> Ngino
|
||||
|
||||
Ngino is a small outbound HTTP tunnel for running Ollama, llama.cpp, vLLM, etc. on GPU workstations while exposing the API from a server that cannot reach those workstations directly.
|
||||
|
||||
<img src="docs/images/Ngino_logo_full.png" alt="logo symbol"/>
|
||||
|
||||
The client opens and maintains a WebSocket connection to the server. The server accepts normal HTTP requests from users and forwards them through that WebSocket to the client. The client then calls a local upstream such as `http://localhost:11434` and streams the response back.
|
||||
|
||||
<table>
|
||||
|
||||
@@ -0,0 +1,332 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
viewBox="0 0 1280 720"
|
||||
role="img"
|
||||
aria-labelledby="title desc"
|
||||
version="1.1"
|
||||
id="svg10"
|
||||
sodipodi:docname="Ngino_logo.svg"
|
||||
xml:space="preserve"
|
||||
inkscape:version="1.4.3 (0d15f75042, 2025-12-25)"
|
||||
inkscape:export-filename="Ngino_logo_full_dark.png"
|
||||
inkscape:export-xdpi="125.532"
|
||||
inkscape:export-ydpi="125.532"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"><sodipodi:namedview
|
||||
id="namedview10"
|
||||
pagecolor="#000000"
|
||||
bordercolor="#000000"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#000000"
|
||||
inkscape:zoom="0.7671875"
|
||||
inkscape:cx="391.69043"
|
||||
inkscape:cy="406.02851"
|
||||
inkscape:window-width="2560"
|
||||
inkscape:window-height="1412"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="layer4"
|
||||
inkscape:export-bgcolor="#00000000" /><title
|
||||
id="title">Ngino logo</title><desc
|
||||
id="desc">A fully vector llama outline with one input connection branching to three AI endpoints, beside the Ngino wordmark.</desc><defs
|
||||
id="defs2"><linearGradient
|
||||
id="swatch181"><stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop181" /></linearGradient><clipPath
|
||||
clipPathUnits="userSpaceOnUse"
|
||||
id="clipPath15"><rect
|
||||
style="fill:none;stroke:#000000;stroke-linecap:butt;stroke-linejoin:bevel;paint-order:stroke markers fill;stop-color:#000000"
|
||||
id="rect15-7"
|
||||
width="45.034248"
|
||||
height="38.955639"
|
||||
x="262.48285"
|
||||
y="121.00073" /></clipPath><linearGradient
|
||||
id="swatch7"
|
||||
inkscape:swatch="solid"><stop
|
||||
style="stop-color:#000000;stop-opacity:1;"
|
||||
offset="0"
|
||||
id="stop7" /></linearGradient><linearGradient
|
||||
id="linearGradient1"
|
||||
inkscape:swatch="gradient"><stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="0"
|
||||
id="stop3" /><stop
|
||||
style="stop-color:#000000;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop4" /></linearGradient><linearGradient
|
||||
id="routeGradient"
|
||||
x1="95"
|
||||
y1="0"
|
||||
x2="430"
|
||||
y2="0"
|
||||
gradientUnits="userSpaceOnUse"><stop
|
||||
offset="0"
|
||||
stop-color="#0697b5"
|
||||
id="stop1" /><stop
|
||||
offset="1"
|
||||
stop-color="#45d05f"
|
||||
id="stop2" /></linearGradient><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#routeGradient"
|
||||
id="linearGradient10"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="95"
|
||||
y1="0"
|
||||
x2="430"
|
||||
y2="0"
|
||||
gradientTransform="translate(50.835031)" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#routeGradient"
|
||||
id="linearGradient24"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="95"
|
||||
y1="0"
|
||||
x2="430"
|
||||
y2="0" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#routeGradient"
|
||||
id="linearGradient25"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="95"
|
||||
y1="0"
|
||||
x2="430"
|
||||
y2="0" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#routeGradient"
|
||||
id="linearGradient26"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="95"
|
||||
y1="0"
|
||||
x2="430"
|
||||
y2="0" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#routeGradient"
|
||||
id="linearGradient27"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="95"
|
||||
y1="0"
|
||||
x2="430"
|
||||
y2="0" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#routeGradient"
|
||||
id="linearGradient28"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="95"
|
||||
y1="0"
|
||||
x2="430"
|
||||
y2="0"
|
||||
gradientTransform="translate(18.248473,-20.855397)" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#routeGradient"
|
||||
id="linearGradient29"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="95"
|
||||
y1="0"
|
||||
x2="430"
|
||||
y2="0"
|
||||
gradientTransform="translate(18.248473,-20.855397)" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#routeGradient"
|
||||
id="linearGradient30"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="95"
|
||||
y1="0"
|
||||
x2="430"
|
||||
y2="0"
|
||||
gradientTransform="translate(18.248473,-20.855397)" /><linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#routeGradient"
|
||||
id="linearGradient31"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
x1="95"
|
||||
y1="0"
|
||||
x2="430"
|
||||
y2="0"
|
||||
gradientTransform="translate(18.248473,-20.855397)" /><filter
|
||||
inkscape:collect="always"
|
||||
style="color-interpolation-filters:sRGB"
|
||||
id="filter215"
|
||||
x="-0.0021624053"
|
||||
y="-0.0047179751"
|
||||
width="1.0043248"
|
||||
height="1.009436"><feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="1.0812026"
|
||||
id="feGaussianBlur215" /></filter><filter
|
||||
inkscape:collect="always"
|
||||
style="color-interpolation-filters:sRGB"
|
||||
id="filter215-8"
|
||||
x="-0.003844276"
|
||||
y="-0.0074139609"
|
||||
width="1.0076886"
|
||||
height="1.0148279"><feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="1.0812026"
|
||||
id="feGaussianBlur215-8" /></filter><filter
|
||||
inkscape:collect="always"
|
||||
style="color-interpolation-filters:sRGB"
|
||||
id="filter215-6"
|
||||
x="-0.0051897726"
|
||||
y="-0.0047179751"
|
||||
width="1.0103795"
|
||||
height="1.009436"><feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="1.0812026"
|
||||
id="feGaussianBlur215-0" /></filter></defs><!-- Transparent background; no embedded raster image. --><rect
|
||||
style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:50;stroke-linecap:round;stroke-miterlimit:0.8;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter215)"
|
||||
id="rect1"
|
||||
width="1200"
|
||||
height="550"
|
||||
x="26.069246"
|
||||
y="20.855396"
|
||||
inkscape:label="background_full"
|
||||
rx="100"
|
||||
inkscape:highlight-color="#000000"
|
||||
inkscape:export-filename="Ngino_logo_full.png"
|
||||
inkscape:export-xdpi="153.60001"
|
||||
inkscape:export-ydpi="153.60001" /><g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
inkscape:label="text"
|
||||
style="display:inline"
|
||||
inkscape:export-filename="Ngino_logo_text.png"
|
||||
inkscape:export-xdpi="125.532"
|
||||
inkscape:export-ydpi="125.532"><rect
|
||||
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:50;stroke-linecap:round;stroke-miterlimit:0.8;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter215-8)"
|
||||
id="rect1-1"
|
||||
width="675"
|
||||
height="350"
|
||||
x="458.96759"
|
||||
y="152.75374"
|
||||
inkscape:label="background_text"
|
||||
rx="100"
|
||||
inkscape:highlight-color="#000000"
|
||||
inkscape:export-filename="Ngino_logo_full.png"
|
||||
inkscape:export-xdpi="153.60001"
|
||||
inkscape:export-ydpi="153.60001" /><text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:37.3333px;line-height:1.25;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;display:inline;fill:#000000;fill-opacity:1"
|
||||
x="503.97342"
|
||||
y="430.72964"
|
||||
id="text2"
|
||||
inkscape:label="sub"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan2"
|
||||
x="503.97342"
|
||||
y="430.72964">R E V E R S E P R O X Y F O R A I</tspan></text><text
|
||||
xml:space="preserve"
|
||||
style="font-weight:900;font-size:170.667px;line-height:1.25;font-family:Montserrat;-inkscape-font-specification:'Montserrat, Heavy';display:inline;fill:#000000;fill-opacity:1"
|
||||
x="496.78931"
|
||||
y="357.61456"
|
||||
id="text1"
|
||||
inkscape:label="main"
|
||||
inkscape:export-filename="Ngino_logo_text.png"
|
||||
inkscape:export-xdpi="125.532"
|
||||
inkscape:export-ydpi="125.532"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1"
|
||||
x="496.78931"
|
||||
y="357.61456">Ngino</tspan></text></g><!-- Connection nodes --><!-- Wordmark --><rect
|
||||
style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:50;stroke-linecap:round;stroke-miterlimit:0.8;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter215-6)"
|
||||
id="rect1-8"
|
||||
width="500"
|
||||
height="550"
|
||||
x="28.825022"
|
||||
y="21.104044"
|
||||
inkscape:label="background_logo"
|
||||
rx="100"
|
||||
inkscape:highlight-color="#000000"
|
||||
inkscape:export-filename="Ngino_logo_full.png"
|
||||
inkscape:export-xdpi="153.60001"
|
||||
inkscape:export-ydpi="153.60001" /><g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="Logo"
|
||||
style="display:inline"
|
||||
inkscape:export-filename="Ngino_Logo_Symbol.png"
|
||||
inkscape:export-xdpi="125.532"
|
||||
inkscape:export-ydpi="125.532"><g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="Body"
|
||||
style="display:inline"><path
|
||||
d="m 115.82078,398.64766 c -22.393081,-46.4277 -14.055,-69.1446 2.64154,-97.02036 C 143.97964,277.26884 147,275.30346 190,275.30346 h 56 c 36,0 53.48269,-18.60692 63.48269,-46.60692 6,-16 4,-43 5,-65 0,-20 6,-37.30346 16,-52.30346 l 0.39308,-26.965381 C 333.17923,71.427699 347,53 356,48 l 2,47 c 6,-19 17,-34 31,-40 l -1.69653,38.268839 c 13,3 22.69653,17.517311 28.69653,28.517311 18,3 29,6.17923 31,22.17923 0,14 -3.78615,18.08961 -16.78615,20.08961 l -37,7.21385 c 12,24 28.91039,76.76578 36.91039,108.76578 14,58 -6.24848,146.8554 -29.24848,202.8554 l -13,29 h -47 l -8,-35 c -4,-22 -23,-38 -48,-38 h -53.50305 c -27,0 -45,16 -49,40 l -6,33 h -47.12424 z"
|
||||
id="path2"
|
||||
sodipodi:nodetypes="ccsscccccccccccccccccsscccc"
|
||||
style="display:inline;fill:none;stroke:url(#linearGradient27)"
|
||||
stroke-width="13"
|
||||
inkscape:label="body" /></g><g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer4"
|
||||
inkscape:label="Symbol"
|
||||
style="display:inline"><g
|
||||
fill="url(#routeGradient)"
|
||||
id="g9"
|
||||
style="display:inline;fill:url(#linearGradient27)"
|
||||
transform="translate(18.248473,-20.855397)"
|
||||
inkscape:label="Symbol_circles"><circle
|
||||
cx="354"
|
||||
cy="398"
|
||||
r="15"
|
||||
id="circle9"
|
||||
style="fill:url(#linearGradient26)"
|
||||
inkscape:label="ball_fork_down" /><circle
|
||||
cx="354"
|
||||
cy="356"
|
||||
r="15"
|
||||
id="circle8"
|
||||
style="display:inline;fill:url(#linearGradient25)"
|
||||
inkscape:label="ball_fork_mid" /><circle
|
||||
cx="354"
|
||||
cy="314"
|
||||
r="15"
|
||||
id="circle7"
|
||||
style="display:inline;fill:url(#linearGradient24)"
|
||||
inkscape:label="ball_fork_up" /><circle
|
||||
cx="130.83504"
|
||||
cy="356"
|
||||
r="15"
|
||||
id="circle6"
|
||||
style="display:inline;fill:url(#linearGradient10)"
|
||||
inkscape:label="ball_connector" /></g><g
|
||||
fill="none"
|
||||
stroke="url(#routeGradient)"
|
||||
stroke-width="13"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
id="g6"
|
||||
style="display:inline"
|
||||
inkscape:label="Symbol_paths"><!-- Llama silhouette --><!-- One input, three routed endpoints --><path
|
||||
d="m 254.24847,335.1446 c 29,0 42,42 78,42 h 40"
|
||||
id="path6"
|
||||
style="display:inline;stroke:url(#linearGradient31)"
|
||||
inkscape:label="fork_down" /><path
|
||||
d="m 254.24847,335.1446 h 118"
|
||||
id="path5"
|
||||
style="display:inline;stroke:url(#linearGradient28)"
|
||||
inkscape:label="fork_mid" /><path
|
||||
d="m 254.24847,335.1446 c 29,0 42,-42 78,-42 h 40"
|
||||
id="path4"
|
||||
style="display:inline;stroke:url(#linearGradient30)"
|
||||
inkscape:label="fork_up" /><path
|
||||
d="M 150.38696,335.1446 H 254.24847"
|
||||
id="path3"
|
||||
sodipodi:nodetypes="cc"
|
||||
style="display:inline;stroke:url(#linearGradient29)"
|
||||
inkscape:label="connector"
|
||||
inkscape:export-filename="Ngino_logo_symbol.png"
|
||||
inkscape:export-xdpi="153.60001"
|
||||
inkscape:export-ydpi="153.60001" /></g></g></g><metadata
|
||||
id="metadata215"><rdf:RDF><cc:Work
|
||||
rdf:about=""><dc:title>Ngino logo</dc:title></cc:Work></rdf:RDF></metadata></svg>
|
||||
|
After Width: | Height: | Size: 13 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 95 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 56 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 38 KiB |
Reference in New Issue
Block a user