Cannot connect app through [app-name].internal

I have many apps in the organization and by documentation they should be accessible by [app].internal.

fly apps list
NAME                         │ OWNER    │ STATUS   │ LATEST DEPLOY
offerwall-production         │ orgname │ deployed │ Jul 1 2026 08:20
offerwall-staging            │ orgname │ deployed │ Jun 30 2026 10:29
playwright-production        │ orgname │ deployed │ Jul 1 2026 08:20
playwright-staging           │ orgname │ deployed │ Jun 30 2026 10:32
strapi-staging               │ orgname │ deployed │ 33m17s ago
back-office-prod    		 │ orgname │ deployed │ Jul 1 2026 08:23
back-office-staging 		 │ orgname │ deployed │ Jun 30 2026 10:33
new-mysql-database           │ orgname │ deployed │ 4h36m ago
next-production              │ orgname │ deployed │ Jul 1 2026 08:33
production-cron              │ orgname │ deployed │ Jul 1 2026 08:20
next-staging                 │ orgname │ deployed │ Jun 30 2026 10:43
staging-cron                 │ orgname │ deployed │ Jun 30 2026 10:29
strapi-production            │ orgname │ deployed │ 18h31m ago

Right now I need to connect MySQL from app “new-mysql-database” to “strapi-staging” (through TCP).
From machine “strapi-staging” I cannot resolve “new-mysql-database.internal”:

nslookup -query=TXT _apps.internal
Server: fdaa::3
Address: fdaa::3#53

_apps.internal text = "strapi-staging,next-staging,staging-cron"

And from machine “new-mysql-database”

nslookup -query=TXT _apps.internal
Server: fdaa::3
Address: fdaa::3#53

_apps.internal text = "offerwall-production,offerwall-staging,playwright-production,playwright-staging,back-office-prod,back-office-staging,new-mysql-database"

Also note that private IP of “new-mysql-database” is “fdaa:2:b266:…” and private IP of “strapi-staging” is “fdaa:2:b25c”. Gemini says that this third part is Network ID and in fact they are in different separated private networks. Maybe this happened because created “strapi-staging” created about 3 years ago and “new-mysql-database” created yesterday.
How to merge them into one network? I tried to remove machines (not apps) but didn’t help.

Or any ideas, because even chatgpt checked everything and said

I'd send Fly Support something like this

Two Machines apps in the same organization (streamia) cannot discover each other over Fly's internal network.

strapi-staging:
nslookup -query=TXT _apps.internal returns only:
strapi-staging
next-staging
staging-cron

new-mysql-database:
nslookup -query=TXT _apps.internal returns only:
offerwall-*
playwright-*
back-office-*
new-mysql-database

From strapi-staging:
nslookup streamia-database.internal → NXDOMAIN

Both apps are in the same organization ("orgname"), same region (fra), and are Machines apps.

Could you check whether these apps are attached to different internal networks or if the organization's service discovery state is inconsistent?

P.s. Currently connection works with public IPv6 but it’s not ideal solution. I would prefer “new-mysql-database.internal”

UPD: create new simple test app and from this new machine I see

/ # nslookup -query=TXT _apps.internal
Server:         fdaa::3
Address:        [fdaa::3]:53

_apps.internal  text = "offerwall-production,offerwall-staging,playwright-production,playwright-staging,back-office-prod,back-office-staging,new-mysql-database,test-new-app-for-dns"

ChatGPT says “Fly has made significant changes to networking over the years (Nomad → Machines, networking updates, Flycast, etc.). It’s conceivable that older and newer apps ended up associated with different internal network objects.”

your apps are in different private networks (docs):

back-office-prod default
offerwall-production default
offerwall-staging default
playwright-production default
playwright-staging default
back-office-staging default
new-mysql-database default
production production
production-cron production
strapi-production production
staging staging
staging-cron staging
strapi-staging staging

apps can only connect via .internal to apps in the same network. as mentioned in the docs page above, you can use Flycast instead: fly ips allocate-v6 --private --network staging -a new-mysql-database

this would’ve been set at app creation time, such as with fly apps create myapp --network production. it doesn’t seem like there’s any flyctl command to see the network of an existing app; I’ll add one.

it doesn’t seem like there’s any flyctl command to see the network of an existing app; I’ll add one.
Thank you! Yes, this will be very helpful. Even chatgpt assumed that there are different networks, but it’s impossible to confirm it. For example fly app list --json gives many info but NetworkID is just 0 and Network is empty string.

@lillian thanks for added column “Network” to fly apps list but please take a look also if it’s possible to add “Network” to fly ips list. Would be great to see it after executed fly ips allocate-v6 --private --network staging -a new-mysql-database. Thank you anyway!