carlos apps create shows the account sqid where a human wants the name ("in account bab") Issue open
Migrated from github.com/carlosframework/platform issue #81, opened 2026-08-07. GitHub issues are closed for this repo; see AGENTS.md, "Work is tracked on amadan, not GitHub".
Still outstanding: apps create prints the account sqid where a human wants the account name.
---
Summary
carlos apps create reports success using the account's sqid where a human wants its name, and then teaches the sqid as the normal way to pass -account. A first-time user is shown an opaque three-letter token they never typed, with no stated relationship to anything they have seen.
Observed on a fresh self-hosted deployment, from a user who had just run their first ever apps create:
$ carlos apps create -app echo
using https://carlos.exciting.io as james@keymail.dev
created app echo in account bab — it's yours
open: https://carlos.exciting.io/a/bab/apps/echo
ship: carlos ship -account bab -app echo ...Their reaction, verbatim: "wtf is 'bab'? that's very confusing for a first-time user". That is the correct reaction. Nothing in the command mentioned bab; the account they were placed in is called ops.
The line
apps.go:373
fmt.Fprintf(stdout, "created app %s in account %s — it's yours\n", res.App, res.Account)res.Account is the sqid. The CLI has the name available — carlos accounts list prints SQID NAME APPS ID — so this is a formatting choice, not missing information.
Why it matters more than it looks
- The sqid is structural, not conversational. It exists so app names can be unique per account while still fitting in a hostname (
echo.bab.carlos.exciting.io) and a bucket key (apps/bab/echo/). Those are the places it belongs. A success message is not one of them. - The hint actively teaches the wrong habit.
carlos ship -account bab -app echosuggests the sqid is how you address an account.-accountaccepts a name, and defaults toops— so in the common case the flag is not merely unfriendly, it is redundant. - It compounds a real confusion.
opsis created by migration on every deployment and is the default-account, so a new user's first app lands in an account they did not create, addressed by a label they cannot decode. Two unexplained pieces of vocabulary in one line of output. babisSqid(1)on every deployment forever, so this exact string is the first thing essentially every new CARLOS user will meet.
Suggested fix
Name for humans; sqid only where it is structural.
created app echo in account ops — it's yours
open: https://carlos.exciting.io/a/bab/apps/echo
ship: carlos ship -app echo ...- Print the account name in the prose. If disambiguation is wanted,
account ops (bab)— name first. - Drop
-accountfrom the suggestedshipline when the account is the defaultops; otherwise emit-account <name>, not the sqid. - The URL keeps the sqid, correctly — it is the addressing scheme.
internal/console/server.go:1449 has the same message for the browser form ("Created app "+name+" — it's yours.") and does not name the account at all; worth keeping the two consistent.
Related
Same first-run surface as #79. This one is likelier to be hit: #79 requires shipping in direct-bucket mode before claiming, whereas this greets everyone who ever runs apps create.