Context
I built a hackathon entry (Apple HealthGraph Agent) and wanted my whole
pipeline reproducible from bash scripts/run.sh:
- Create AuraDB instance →
aura-cli instance create ✅
- Snapshot / restore →
aura-cli instance snapshot ✅
- Manage tenant / data API →
aura-cli tenant/dataapi ✅
- Create dashboard from JSON → ?
- Create agent + attach tools → ?
Steps 4 and 5 have no CLI or public-API path today. The CLI's
subcommands/ tree (verified at HEAD) is:
agent config credential customermanagedkey dataapi
deployment graphanalytics import instance tenant utils
agent exists but only for managing one of the older agent concepts (per
the README example), not the new in-console Aura Agents with tools
and chat. There is no dashboard subcommand at all.
The public REST API (api.neo4j.io/v1/*) returns 403 for every
dashboard- or agent-related path I could think of. Only /v1/instances
and /v1/tenants are routed.
Meanwhile the Console UI talks to its own undocumented internal API at
https://console.neo4j.io/api/shared-storage/v1/dashboards/dashboards
which does support the full CRUD I'd want (POST dashboard, POST
pages, POST widgets, PATCH, DELETE). That API only trusts user-session
OIDC tokens from login.neo4j.com — service-account tokens from
api.neo4j.io/oauth/token are rejected with "token-invalid" even
though both have aud=https://console.neo4j.io.
Why this matters
Hackathon participants and anyone shipping a reproducible Aura demo need
to bootstrap the same dashboard / agent setup on every fresh tenant.
Right now we either:
- Click through the UI on every demo (not reproducible)
- Reverse-engineer the console JS bundle to call the undocumented API
with a browser-grabbed bearer token that rotates every 15 min
(what I ended up doing — see my upload script)
- Skip the new tools and fall back to legacy NeoDash (we did this too —
it has the public _Neodash_Dashboard node-label storage that works
fine from cypher-shell)
Asks
- Dashboard CRUD via Aura API or aura-cli — accept the same JSON
that Tools → Dashboards → Export produces, plus support the
convert-from-NeoDash flow that the UI already implements.
- Agent CRUD via Aura API or aura-cli — at minimum: create agent,
attach Text2Cypher / Similarity / custom tools, set system prompt.
- Document the schema for either route (Aura's dashboard JSON
format is not in the public docs — I had to reverse-engineer it from
neo4j-product-examples/sample-applications/.../*.dashboard.json
to know that widgets replaces NeoDash's reports etc.).
Happy to share my conversion script and the reverse-engineered request
shapes if useful.
Context
I built a hackathon entry (Apple HealthGraph Agent) and wanted my whole
pipeline reproducible from
bash scripts/run.sh:aura-cli instance create✅aura-cli instance snapshot✅aura-cli tenant/dataapi✅Steps 4 and 5 have no CLI or public-API path today. The CLI's
subcommands/tree (verified at HEAD) is:agent config credential customermanagedkey dataapi
deployment graphanalytics import instance tenant utils
agentexists but only for managing one of the older agent concepts (perthe README example), not the new in-console Aura Agents with tools
and chat. There is no
dashboardsubcommand at all.The public REST API (
api.neo4j.io/v1/*) returns 403 for everydashboard- or agent-related path I could think of. Only
/v1/instancesand
/v1/tenantsare routed.Meanwhile the Console UI talks to its own undocumented internal API at
https://console.neo4j.io/api/shared-storage/v1/dashboards/dashboardswhich does support the full CRUD I'd want (POST dashboard, POST
pages, POST widgets, PATCH, DELETE). That API only trusts user-session
OIDC tokens from
login.neo4j.com— service-account tokens fromapi.neo4j.io/oauth/tokenare rejected with"token-invalid"eventhough both have
aud=https://console.neo4j.io.Why this matters
Hackathon participants and anyone shipping a reproducible Aura demo need
to bootstrap the same dashboard / agent setup on every fresh tenant.
Right now we either:
with a browser-grabbed bearer token that rotates every 15 min
(what I ended up doing — see my upload script)
it has the public
_Neodash_Dashboardnode-label storage that worksfine from
cypher-shell)Asks
that
Tools → Dashboards → Exportproduces, plus support theconvert-from-NeoDash flow that the UI already implements.
attach Text2Cypher / Similarity / custom tools, set system prompt.
format is not in the public docs — I had to reverse-engineer it from
neo4j-product-examples/sample-applications/.../*.dashboard.jsonto know that
widgetsreplaces NeoDash'sreportsetc.).Happy to share my conversion script and the reverse-engineered request
shapes if useful.