Use PorchLM from your own code
An OpenAI-compatible endpoint. Point any OpenAI client at this server and it works — no API key, no account, no sign-up.
No authentication is required. If your client insists on an API key, send any non-empty string — it is accepted and ignored.
The model id is the filename without .gguf. Fetch this list programmatically from GET /v1/models.
The simplest possible call.
curl https://guythatlives.net/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "PorchLM-F16-V10",
"messages": [{"role": "user", "content": "Hello"}]
}'
Install with pip install openai. Only the two highlighted lines differ from normal OpenAI usage.
from openai import OpenAI
client = OpenAI(
base_url="https://guythatlives.net/v1",
api_key="not-needed", # any string works
)
response = client.chat.completions.create(
model="PorchLM-F16-V10",
messages=[{"role": "user", "content": "Hello"}],
)
print(response.choices[0].message.content)
Install with npm install openai.
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://guythatlives.net/v1",
apiKey: "not-needed",
});
const r = await client.chat.completions.create({
model: "PorchLM-F16-V10",
messages: [{ role: "user", content: "Hello" }],
});
console.log(r.choices[0].message.content);
Set stream: true and read chunks as they arrive.
const stream = await client.chat.completions.create({
model: "PorchLM-F16-V10",
messages: [{ role: "user", content: "Tell me something" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || "");
}
Most software that supports "a custom OpenAI-compatible endpoint" will work. Set the base URL, put any text in the API key field, and pick a model id from the list above.
{
"models": [{
"title": "PorchLM",
"provider": "openai",
"model": "PorchLM-F16-V10",
"apiBase": "https://guythatlives.net/v1",
"apiKey": "not-needed"
}]
}
Many tools read these directly.
OPENAI_BASE_URL=https://guythatlives.net/v1 OPENAI_API_KEY=not-needed
Supported parameters: model, messages, stream, max_tokens, temperature, top_p, top_k, frequency_penalty. Anything else is accepted and ignored rather than rejected.
Not implemented: embeddings, function/tool calling, vision, audio, logprobs, and n > 1. Token counts in usage are estimates, not exact tokenizer counts.
This runs on a single machine in someone's house. It has no uptime guarantee, no rate limits today, and no support. It may be slow, restart without warning, or disappear entirely. Please don't build anything important on it.
The model has roughly 8 million parameters. Its output is frequently wrong and it knows almost nothing about the world. Treat it as a curiosity, not a capability.
There is no API key, which means there is no per-user isolation. Don't send anything private. Use is subject to the terms.
If the endpoint starts getting hammered, keys and rate limits will appear — the fair-use expectation is "a hobby project, treated gently."