docs: public-readiness — vibe-coded disclosure + genericize internal hosts
- README + CLAUDE.md: upfront "this is a vibe-coded project" disclosure for going public. - Replace internal LAN hostnames (*.orgrimmar.dudenhoeffer.casa) with example.com across README, ADR-0004, the envproviders example, and env_test.go (assertions updated together; suite still green). Token was already a "change-me" placeholder, not a real secret. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,6 +5,12 @@ target-agnostic model access, a parseable model naming / failover / tiering
|
|||||||
system with health tracking, multimodality, tool calls, structured output,
|
system with health tracking, multimodality, tool calls, structured output,
|
||||||
and agents composed from model + system prompt + toolboxes + skills.
|
and agents composed from model + system prompt + toolboxes + skills.
|
||||||
|
|
||||||
|
> **Public, vibe-coded project.** This is built almost entirely by an AI agent
|
||||||
|
> (Claude Code) and is public. Keep that framing honest in the README — don't
|
||||||
|
> oversell it — and keep the README/support-matrix/examples updated in the same
|
||||||
|
> commit as the behavior they describe (that in-sync promise is part of the
|
||||||
|
> project's credibility).
|
||||||
|
|
||||||
**North star:** majordomo exists to re-architect mort's agentic layer. mort
|
**North star:** majordomo exists to re-architect mort's agentic layer. mort
|
||||||
is the first consumer and the design's acceptance test — when a choice is a
|
is the first consumer and the design's acceptance test — when a choice is a
|
||||||
toss-up, pick what makes mort's tiers, failover chains, toolboxes, and
|
toss-up, pick what makes mort's tiers, failover chains, toolboxes, and
|
||||||
|
|||||||
@@ -5,6 +5,13 @@ over many model providers, a parseable model naming / failover / tiering
|
|||||||
system with built-in health tracking, capability-aware multimodality, tool
|
system with built-in health tracking, capability-aware multimodality, tool
|
||||||
calls, structured output, and composable agents and skills.
|
calls, structured output, and composable agents and skills.
|
||||||
|
|
||||||
|
> ### 🤖 Heads up: this is a vibe-coded project
|
||||||
|
> majordomo was built almost entirely by an AI agent (Claude Code) — design,
|
||||||
|
> code, and docs. It is reasonably well-tested (a fully hermetic suite plus
|
||||||
|
> gated live integration tests) and is used in earnest, but treat it
|
||||||
|
> accordingly: read the code before depending on it, expect the occasional
|
||||||
|
> AI-flavored rough edge, and please open issues. No warranty implied.
|
||||||
|
|
||||||
> The [support matrix](#featureprovider-support-matrix) below is kept
|
> The [support matrix](#featureprovider-support-matrix) below is kept
|
||||||
> honest: *pending* means not built, and this README is updated in the
|
> honest: *pending* means not built, and this README is updated in the
|
||||||
> same commit as the behavior it describes. Runnable programs for every
|
> same commit as the behavior it describes. Runnable programs for every
|
||||||
@@ -138,8 +145,8 @@ reg.RegisterProvider(openai.New(
|
|||||||
Define named providers entirely from the environment (go-llm parity):
|
Define named providers entirely from the environment (go-llm parity):
|
||||||
|
|
||||||
```
|
```
|
||||||
LLM_M1=foreman://test-token-change-me@foreman-m1.orgrimmar.dudenhoeffer.casa
|
LLM_M1=foreman://test-token-change-me@foreman-m1.example.com
|
||||||
LLM_M5=foreman://test-token-change-me@foreman-m5.orgrimmar.dudenhoeffer.casa
|
LLM_M5=foreman://test-token-change-me@foreman-m5.example.com
|
||||||
```
|
```
|
||||||
|
|
||||||
defines providers `m1` and `m5` (foreman targets — native Ollama wire
|
defines providers `m1` and `m5` (foreman targets — native Ollama wire
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ Steve's deployments define providers via env vars that must keep working
|
|||||||
unchanged:
|
unchanged:
|
||||||
|
|
||||||
```
|
```
|
||||||
LLM_M1=foreman://token@foreman-m1.orgrimmar.dudenhoeffer.casa
|
LLM_M1=foreman://token@foreman-m1.example.com
|
||||||
LLM_M5=foreman://token@foreman-m5.orgrimmar.dudenhoeffer.casa
|
LLM_M5=foreman://token@foreman-m5.example.com
|
||||||
```
|
```
|
||||||
|
|
||||||
go-llm (v2/parse.go) implements this **lazily only**: `Parse("m5/x")` misses
|
go-llm (v2/parse.go) implements this **lazily only**: `Parse("m5/x")` misses
|
||||||
|
|||||||
+5
-5
@@ -21,8 +21,8 @@ func TestParseDSN(t *testing.T) {
|
|||||||
wantErr error
|
wantErr error
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
raw: "foreman://test-token-change-me@foreman-m1.orgrimmar.dudenhoeffer.casa",
|
raw: "foreman://test-token-change-me@foreman-m1.example.com",
|
||||||
want: DSN{Scheme: "foreman", Token: "test-token-change-me", Host: "foreman-m1.orgrimmar.dudenhoeffer.casa"},
|
want: DSN{Scheme: "foreman", Token: "test-token-change-me", Host: "foreman-m1.example.com"},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
raw: "ollama://my-host.example:11434",
|
raw: "ollama://my-host.example:11434",
|
||||||
@@ -66,8 +66,8 @@ func TestDSNBaseURL(t *testing.T) {
|
|||||||
func TestLoadEnvForeman(t *testing.T) {
|
func TestLoadEnvForeman(t *testing.T) {
|
||||||
r := newTestRegistry(t)
|
r := newTestRegistry(t)
|
||||||
err := r.LoadEnv(map[string]string{
|
err := r.LoadEnv(map[string]string{
|
||||||
"LLM_M1": "foreman://test-token-change-me@foreman-m1.orgrimmar.dudenhoeffer.casa",
|
"LLM_M1": "foreman://test-token-change-me@foreman-m1.example.com",
|
||||||
"LLM_M5": "foreman://test-token-change-me@foreman-m5.orgrimmar.dudenhoeffer.casa",
|
"LLM_M5": "foreman://test-token-change-me@foreman-m5.example.com",
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("LoadEnv: %v", err)
|
t.Fatalf("LoadEnv: %v", err)
|
||||||
@@ -85,7 +85,7 @@ func TestLoadEnvForeman(t *testing.T) {
|
|||||||
if op.Name() != name {
|
if op.Name() != name {
|
||||||
t.Errorf("provider name = %q, want %q", op.Name(), name)
|
t.Errorf("provider name = %q, want %q", op.Name(), name)
|
||||||
}
|
}
|
||||||
wantURL := "https://foreman-" + name + ".orgrimmar.dudenhoeffer.casa"
|
wantURL := "https://foreman-" + name + ".example.com"
|
||||||
if op.BaseURL() != wantURL {
|
if op.BaseURL() != wantURL {
|
||||||
t.Errorf("provider %q baseURL = %q, want %q", name, op.BaseURL(), wantURL)
|
t.Errorf("provider %q baseURL = %q, want %q", name, op.BaseURL(), wantURL)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
// (go-llm parity): named providers built entirely from the environment,
|
// (go-llm parity): named providers built entirely from the environment,
|
||||||
// first-class in Parse, chains, and tiers.
|
// first-class in Parse, chains, and tiers.
|
||||||
//
|
//
|
||||||
// export LLM_M1=foreman://test-token-change-me@foreman-m1.orgrimmar.dudenhoeffer.casa
|
// export LLM_M1=foreman://test-token-change-me@foreman-m1.example.com
|
||||||
// export LLM_M5=foreman://test-token-change-me@foreman-m5.orgrimmar.dudenhoeffer.casa
|
// export LLM_M5=foreman://test-token-change-me@foreman-m5.example.com
|
||||||
// go run ./examples/envproviders
|
// go run ./examples/envproviders
|
||||||
package main
|
package main
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user