Create your first mind map and start branching ideas. Everything saves automatically.
Your mind maps are saved as private JSON files in a repository called mindspark-maps on your own
account. This app talks to your git host directly - there's no server in between.
mindspark-mapsmindspark-maps means a private repository of your own,
created for you on first sign-in. For a shared one enter its full path, e.g.
team/mindspark-maps - it must already exist and you need write access to it.
Create a free GitHub account → BuffMind can't create one for you - GitHub only allows signup on their own page.
mindspark-maps repository →
mindspark-maps.Contents → Read and write.
Nothing else is needed.A classic token with the repo scope
works too and creates the repository for you, so you can skip step 1. The trade-off:
repo grants read/write to every private repository you own, so
anything that got hold of the token would reach all of them.
https://codeberg.org.
Codeberg and gitea.com work as-is; a self-hosted instance also needs its origin added to
this deployment's Content-Security-Policy, and BuffMind will tell you exactly what to add.
mindspark-mapsmindspark-maps means a private repository of your own,
created for you on first sign-in. For a shared one enter its full path, e.g.
team/mindspark-maps - it must already exist and you need write access to it.
Nobody can pre-register an OAuth app on your server, so you register one once: Settings → Applications → Create a new OAuth2 application on your instance.
Redirect URI (must match exactly):
Leave “Confidential Client” unchecked - BuffMind is a public client and uses PKCE,
so there is no secret to store in your browser.
Your instance must also allow this page to make the token request: in app.ini,
[cors] ENABLED = true. Codeberg has this on already. If it is off you'll get a
clear message and can use an access token instead - that path needs no instance configuration.
Create an account on that instance → Registration lives on your own instance, so this link follows the URL above. Many instances turn self-registration off - if yours does, ask its admin for an account.
write:repository scope (and read:user if your instance lists it).
BuffMind creates the private mindspark-maps repo for you on first sign-in.https://gitlab.com.
GitLab.com works as-is; a self-managed instance also needs its origin added to this
deployment's Content-Security-Policy, and BuffMind will tell you exactly what to add.
mindspark-mapsmindspark-maps means a private repository of your own,
created for you on first sign-in. For a shared one enter its full path, e.g.
team/mindspark-maps - it must already exist and you need write access to it.
BuffMind has no server to hold a client secret, so it signs in as a public application you register once: Preferences → Applications → Add new application on your instance.
Redirect URI (must match exactly):
Leave “Confidential” unchecked and tick Expire access tokens off if
offered -
BuffMind is a public client and uses PKCE, so there is no secret to store in your browser.
Scope: api.
Create an account on that instance → Registration lives on your own instance, so this link follows the URL above. Self-managed instances often turn self-registration off - if yours does, ask its admin for an account.
api scope. BuffMind creates the private mindspark-maps
project for you on first sign-in.api, which is
account-wide - read_repository and write_repository cover
only git over HTTP and will not work here. So unlike GitHub's fine-grained tokens, this
token can reach everything your account can. A project access token cannot be used either,
because the project does not exist yet.
BuffMind runs entirely in your browser. The token is stored only in localStorage on this
device, and is sent only to the git host you signed in to - never to any third party. A
Content-Security-Policy on this page blocks scripts and network calls to any other origin, so there is
no route out for it. On GitHub, a fine-grained token also keeps the damage to one repository if that
ever fails; Gitea, Forgejo and GitLab have no usable per-repo token scoping, so their tokens are
account-wide.
Because the token lives in this browser, treat signing in the way you would treat staying logged in anywhere: don't do it on a shared or untrusted machine, and sign out when you're done.
Every save commits a small JSON file to your mindspark-maps repo, so your data is versioned
and you can git clone it any time. (On Gitea, Forgejo and GitLab - and with a GitHub
classic token - MindSpark creates that repo on first sign-in. A GitHub fine-grained token can't create
repositories, which is why its step 1 exists.)
To revoke access on GitHub: fine-grained tokens / classic tokens. On Gitea or Forgejo: Settings → Applications on your instance. On GitLab: Preferences → Access tokens (and Applications for an OAuth sign-in).