Sign in to a workspace, work with several at once, and see where credentials live.
The CLI signs in through the browser. There is no API key to generate or paste,
and the credential it stores is a session tied to your own account, so every
command runs with your permissions.
Sign in
neetochat login --subdomain acme
Leave --subdomain off and the CLI prompts for it. The subdomain is the part of
your workspace URL before neetochat.com, so acme for
acme.neetochat.com. See Workspace subdomain.The command opens your browser, prints the URL in case it does not open, and
waits up to two minutes for you to finish signing in:
Opening browser for authentication...If the browser doesn't open, visit: https://acme.neetochat.com/api/cli/v1/login?token=...Waiting for authentication... done!Authenticated as oliver@example.com on acme.neetochat.com.
Confirm it worked:
neetochat doctor
✓ Authentication: authenticated as oliver@example.com on acme.neetochat.com✓ API connection: https://acme.neetochat.com (responding in 214ms)✓ CLI version: 1.0.4
doctor runs each check independently, so a failing credential still tells you
whether the API is reachable.
Several workspaces at once
login adds an entry rather than replacing one, so you can be signed in to as
many workspaces as you like. Which one a command targets depends on how many are
signed in:
Signed in
What commands do
None
Every command that needs a credential fails with Not authenticated. Run 'neetochat login' to authenticate.
One
That workspace is the default and --subdomain can be left off.
Two or more
--subdomain <name> is required, including on doctor. The error lists every signed-in subdomain.
neetochat team-members list --subdomain acme
--subdomain is a global flag, so it works on every command.
Check who you are
neetochat whoami
With one workspace signed in it names it as the default:
Authenticated as oliver@example.com on acme.neetochat.com (default).
With several, it lists them all. neetochat whoami --subdomain acme shows just
one.
Sign out
neetochat logout --subdomain acme
With exactly one workspace signed in, neetochat logout on its own removes it.
With several it refuses and asks you to choose, so nothing is dropped by
accident. neetochat logout --all removes every entry.
Where credentials are stored
Credentials for every signed-in workspace live together in a single file:
~/.config/neetochat/auth.json
Each entry holds the subdomain, your email and a session token.
A session token acts as you. Treat the file like a password store, keep it out
of backups you share, and run neetochat logout --all on a machine you are
handing over.
Pointing the CLI at another server
Set NEETOAPICOMMONS_BASE_URL to reach a staging or local server instead of
https://<subdomain>.neetochat.com:
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"NeetoChat Docs","description":"NeetoChat API docs guide to manage scheduling from external channels","colors":{"primary":"#10B981","light":"#34D399","dark":"#059669"},"logo":"https://mintcdn.com/neeto-0280aa2a/jlSLnlpp0djgsgKN/assets/logo.svg?fit=max\u0026auto=format\u0026n=jlSLnlpp0djgsgKN\u0026q=85\u0026s=774e336522eb975886c0b3cbf7975b3d","favicon":"https://mintcdn.com/neeto-0280aa2a/iUS8D8GELEknjyJt/assets/favicon.ico?fit=max\u0026auto=format\u0026n=iUS8D8GELEknjyJt\u0026q=85\u0026s=38773d7ba8b26dc3c2b16c8792bfd2fc","api":{"params":{"expanded":"all"},"playground":{"display":"interactive","proxy":true},"examples":{"defaults":"all","languages":["curl","javascript","python"]}},"appearance":{"default":"light","strict":true},"navbar":{"links":[{"href":"https://www.neeto.com/neetochat/blog","label":"Blog"},{"href":"https://help.neetochat.com","label":"Help Center"},{"href":"https://neetochat.com/","label":"NeetoChat"}]},"footer":{"socials":{"x":"https://x.com/neetohq","linkedin":"https://www.linkedin.com/company/neeto","youtube":"https://www.youtube.com/channel/UCoQ3Kv2JdZ51WZJ3QFFcI9g","slack":"https://www.launchpass.com/neetohq"}},"styling":{"eyebrows":"section","codeblocks":"system","latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"neeto-0280aa2a","hasAudioNarration":false,"actualSubdomain":"neeto-0280aa2a","customDomains":["apidocs.neetochat.com"],"gitSource":{"type":"github","owner":"neetochatapis","repo":"neeto-chat-api","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"},"WEB_MCP":{"status":"DISABLED"},"NARRATION":{"status":"DISABLED"}},"buildId":"6aec5bab8c2847cc731f1574","clientVersion":"0.0.4143","searchFilterCounts":[{"language":"default","tag":"API Reference","count":23},{"language":"default","tag":"CLI","count":13},{"language":"default","tag":"Getting Started","count":11},{"language":"default","tag":"Commands","count":7},{"language":"default","tag":"Team Members","count":5},{"language":"default","tag":"Conversations","count":4},{"language":"default","tag":"Contacts","count":3},{"language":"default","tag":"Messages","count":3},{"language":"default","tag":"Reports","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"theme.css","content":":root{--primary-green: #0da874;--white: #ffffff;--light-gray: #eeeeee;--dark-gray: #1f2937;--text-white: rgb(255, 255, 255);--text-light: rgb(238, 238, 238)}#navbar-transition,[data-nav=\"true\"]{background-color:var(--primary-green)!important}.nav-logo{filter:brightness(0) invert(1)!important;height:20px!important;width:auto!important;max-width:none!important}[data-nav=\"true\"] a,#navbar-transition a,#navbar a,.navbar-link{color:var(--text-white)!important}[data-nav=\"true\"] a:hover,#navbar-transition a:hover,#navbar a:hover,.navbar-link:hover{color:var(--text-light)!important}#navbar button,#navbar span,#navbar div,#navbar p,#navbar .text-sm,#navbar .text-xs{color:var(--white)!important}#navbar .bg-gray-500,#navbar .bg-gray-400,#navbar .bg-gray-600,#navbar .bg-gray-300{background-color:var(--white)!important}[data-headlessui-state=\"open\"] [id*=\"headlessui-dialog-panel\"]{background-color:var(--white)!important}[data-headlessui-state=\"open\"] [id*=\"headlessui-dialog-panel\"] .navbar-link a,[data-headlessui-state=\"open\"] [id*=\"headlessui-dialog-panel\"] .text-gray-600,[data-headlessui-state=\"open\"] [id*=\"headlessui-dialog-panel\"] .dark\\:text-gray-400{color:var(--dark-gray)!important}[data-headlessui-state=\"open\"] [id*=\"headlessui-dialog-panel\"] .navbar-link a:hover,[data-headlessui-state=\"open\"] [id*=\"headlessui-dialog-panel\"] .hover\\:text-gray-900:hover,[data-headlessui-state=\"open\"] [id*=\"headlessui-dialog-panel\"] .dark\\:hover\\:text-gray-300:hover{color:var(--primary-green)!important}#search-bar-entry button,#search-bar-entry span,#search-bar-entry div,#search-bar-entry p,#search-bar-entry img,#search-bar-entry svg,#search-bar-entry .text-sm,#search-bar-entry .text-xs{color:var(--primary-green)!important}"}],"page":{"pagePath":"cli/authentication","slug":"/cli/authentication","pageMetadata":{"title":"Authentication","description":"Sign in to a workspace, work with several at once, and see where credentials live.","href":"/cli/authentication"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Sign in to a workspace, work with several at once, and see where credentials live.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,pre:`pre`,span:`span`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`The CLI signs in through the browser. There is no API key to generate or paste,\nand the credential it stores is a session tied to your own account, so every\ncommand runs with your permissions.`}),`\n`,_jsx(Heading,{level:`2`,id:`sign-in`,children:`Sign in`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`neetochat`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` login`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --subdomain`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` acme`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Leave `,_jsx(_components.code,{children:`--subdomain`}),` off and the CLI prompts for it. The subdomain is the part of\nyour workspace URL before `,_jsx(_components.code,{children:`neetochat.com`}),`, so `,_jsx(_components.code,{children:`acme`}),` for\n`,_jsx(_components.code,{children:`acme.neetochat.com`}),`. See `,_jsx(_components.a,{href:`/getting-started/workspace-subdomain`,children:`Workspace subdomain`}),`.`]}),`\n`,_jsx(_components.p,{children:`The command opens your browser, prints the URL in case it does not open, and\nwaits up to two minutes for you to finish signing in:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`5`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Opening browser for authentication...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`If the browser doesn't open, visit: https://acme.neetochat.com/api/cli/v1/login?token=...`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Waiting for authentication... done!`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Authenticated as oliver@example.com on acme.neetochat.com.`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Confirm it worked:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`neetochat`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` doctor`})]}),`\n`]})})}),`\n`,_jsx(CodeBlock,{numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`✓ Authentication: authenticated as oliver@example.com on acme.neetochat.com`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`✓ API connection: https://acme.neetochat.com (responding in 214ms)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`✓ CLI version: 1.0.4`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`doctor`}),` runs each check independently, so a failing credential still tells you\nwhether the API is reachable.`]}),`\n`,_jsx(Heading,{level:`2`,id:`several-workspaces-at-once`,children:`Several workspaces at once`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`login`}),` adds an entry rather than replacing one, so you can be signed in to as\nmany workspaces as you like. Which one a command targets depends on how many are\nsigned in:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Signed in`}),_jsx(_components.th,{children:`What commands do`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`None`}),_jsxs(_components.td,{children:[`Every command that needs a credential fails with `,_jsx(_components.code,{children:`Not authenticated. Run 'neetochat login' to authenticate.`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`One`}),_jsxs(_components.td,{children:[`That workspace is the default and `,_jsx(_components.code,{children:`--subdomain`}),` can be left off.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Two or more`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`--subdomain \u003cname>`}),` is required, including on `,_jsx(_components.code,{children:`doctor`}),`. The error lists every signed-in subdomain.`]})]})]})]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`neetochat`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` team-members`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --subdomain`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` acme`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`--subdomain`}),` is a global flag, so it works on every command.`]}),`\n`,_jsx(Heading,{level:`2`,id:`check-who-you-are`,children:`Check who you are`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`neetochat`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` whoami`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`With one workspace signed in it names it as the default:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`Authenticated as oliver@example.com on acme.neetochat.com (default).`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`With several, it lists them all. `,_jsx(_components.code,{children:`neetochat whoami --subdomain acme`}),` shows just\none.`]}),`\n`,_jsx(Heading,{level:`2`,id:`sign-out`,children:`Sign out`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`neetochat`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` logout`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --subdomain`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` acme`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`With exactly one workspace signed in, `,_jsx(_components.code,{children:`neetochat logout`}),` on its own removes it.\nWith several it refuses and asks you to choose, so nothing is dropped by\naccident. `,_jsx(_components.code,{children:`neetochat logout --all`}),` removes every entry.`]}),`\n`,_jsx(Heading,{level:`2`,id:`where-credentials-are-stored`,children:`Where credentials are stored`}),`\n`,_jsx(_components.p,{children:`Credentials for every signed-in workspace live together in a single file:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`~/.config/neetochat/auth.json`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Each entry holds the subdomain, your email and a session token.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`A session token acts as you. Treat the file like a password store, keep it out\nof backups you share, and run `,_jsx(_components.code,{children:`neetochat logout --all`}),` on a machine you are\nhanding over.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`pointing-the-cli-at-another-server`,children:`Pointing the CLI at another server`}),`\n`,_jsxs(_components.p,{children:[`Set `,_jsx(_components.code,{children:`NEETOAPICOMMONS_BASE_URL`}),` to reach a staging or local server instead of\n`,_jsx(_components.code,{children:`https://\u003csubdomain>.neetochat.com`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`export`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` NEETOAPICOMMONS_BASE_URL`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`http`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`://`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`acme`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`lvh`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`me`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`8980`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`neetochat`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` login`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --subdomain`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` acme`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`how-this-differs-from-the-api-and-mcp`,children:`How this differs from the API and MCP`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Interface`}),_jsx(_components.th,{children:`Credential`}),_jsx(_components.th,{children:`Scope`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`/getting-started/authentication`,children:`REST API`})}),_jsxs(_components.td,{children:[`API key in the `,_jsx(_components.code,{children:`X-Api-Key`}),` header`]}),_jsx(_components.td,{children:`The whole workspace`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`CLI`}),_jsx(_components.td,{children:`Browser sign in, stored per workspace`}),_jsx(_components.td,{children:`The signed-in user`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.a,{href:`https://www.neeto.com/neetochat/mcp-and-cli`,children:`MCP`})}),_jsx(_components.td,{children:`OAuth, or an API key`}),_jsx(_components.td,{children:`The approving user, or the whole workspace`})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Authentication","description":"Sign in to a workspace, work with several at once, and see where credentials live.","href":"/cli/authentication"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Sign in","slug":"sign-in","depth":2,"children":[]},{"title":"Several workspaces at once","slug":"several-workspaces-at-once","depth":2,"children":[]},{"title":"Check who you are","slug":"check-who-you-are","depth":2,"children":[]},{"title":"Sign out","slug":"sign-out","depth":2,"children":[]},{"title":"Where credentials are stored","slug":"where-credentials-are-stored","depth":2,"children":[]},{"title":"Pointing the CLI at another server","slug":"pointing-the-cli-at-another-server","depth":2,"children":[]},{"title":"How this differs from the API and MCP","slug":"how-this-differs-from-the-api-and-mcp","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/neeto-0280aa2a/c7a6987cd31f1479/os-detect.js"],"subdomain":"neeto-0280aa2a","siteName":"NeetoChat Docs","title":"Authentication - NeetoChat Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-05T10:34:22.857Z","originalFileLocation":"cli/authentication.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Sign in to a workspace, work with several at once, and see where credentials live.\">\u003cmeta data-mint-head name=\"application-name\" content=\"NeetoChat Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/neeto-0280aa2a/Ckzpfldy_co5D1-B/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/neeto-0280aa2a/Ckzpfldy_co5D1-B/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/neeto-0280aa2a/Ckzpfldy_co5D1-B/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/neeto-0280aa2a/Ckzpfldy_co5D1-B/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/neeto-0280aa2a/Ckzpfldy_co5D1-B/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/neeto-0280aa2a/Ckzpfldy_co5D1-B/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/neeto-0280aa2a/Ckzpfldy_co5D1-B/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/neeto-0280aa2a/Ckzpfldy_co5D1-B/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/neeto-0280aa2a/Ckzpfldy_co5D1-B/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Authentication - NeetoChat Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Sign in to a workspace, work with several at once, and see where credentials live.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"NeetoChat Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://apidocs.neetochat.com/cli/authentication\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://neeto-0280aa2a.mintlify.site/_mintlify/api/og/v2?division=Getting+Started\u0026amp;title=Authentication\u0026amp;description=Sign+in+to+a+workspace%2C+work+with+several+at+once%2C+and+see+where+credentials+live.\u0026amp;theme=9d6a22ca355666bd276d57f8\u0026amp;signature=cfe8ae69e3482a763cbf750e2c30ad093fa316e63d4fa14296340907a70b38d4\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Authentication - NeetoChat Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Sign in to a workspace, work with several at once, and see where credentials live.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://neeto-0280aa2a.mintlify.site/_mintlify/api/og/v2?division=Getting+Started\u0026amp;title=Authentication\u0026amp;description=Sign+in+to+a+workspace%2C+work+with+several+at+once%2C+and+see+where+credentials+live.\u0026amp;theme=9d6a22ca355666bd276d57f8\u0026amp;signature=cfe8ae69e3482a763cbf750e2c30ad093fa316e63d4fa14296340907a70b38d4\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/neeto-0280aa2a/Ckzpfldy_co5D1-B/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"NeetoChat Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#10B981\">\u003clink data-mint-head rel=\"canonical\" href=\"https://apidocs.neetochat.com/cli/authentication\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/cli/authentication.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://apidocs.neetochat.com/#organization\",\"name\":\"NeetoChat Docs\",\"url\":\"https://apidocs.neetochat.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/neeto-0280aa2a/jlSLnlpp0djgsgKN/assets/logo.svg?fit=max\u0026auto=format\u0026n=jlSLnlpp0djgsgKN\u0026q=85\u0026s=774e336522eb975886c0b3cbf7975b3d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://apidocs.neetochat.com#website\",\"name\":\"NeetoChat Docs\",\"url\":\"https://apidocs.neetochat.com\",\"publisher\":{\"@id\":\"https://apidocs.neetochat.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://apidocs.neetochat.com/cli/authentication#webpage\",\"url\":\"https://apidocs.neetochat.com/cli/authentication\",\"name\":\"Authentication\",\"description\":\"Sign in to a workspace, work with several at once, and see where credentials live.\",\"dateModified\":\"2026-11-05T10:34:22.857Z\",\"isPartOf\":{\"@id\":\"https://apidocs.neetochat.com#website\"},\"breadcrumb\":{\"@id\":\"https://apidocs.neetochat.com/cli/authentication#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://apidocs.neetochat.com/cli/authentication#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Getting Started\",\"item\":\"https://apidocs.neetochat.com/cli/introduction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Authentication\",\"item\":\"https://apidocs.neetochat.com/cli/authentication\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://apidocs.neetochat.com/cli/authentication#article\",\"headline\":\"Authentication\",\"name\":\"Authentication\",\"description\":\"Sign in to a workspace, work with several at once, and see where credentials live.\",\"url\":\"https://apidocs.neetochat.com/cli/authentication\",\"mainEntityOfPage\":{\"@id\":\"https://apidocs.neetochat.com/cli/authentication#webpage\"},\"dateModified\":\"2026-11-05T10:34:22.857Z\",\"publisher\":{\"@id\":\"https://apidocs.neetochat.com/#organization\"},\"isPartOf\":{\"@id\":\"https://apidocs.neetochat.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"NeetoChat Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"NeetoChat Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/cli/authentication.md","siteName":"NeetoChat Docs","nav":{"global":null,"tabs":[{"tab":"API Reference","icon":"code","pages":[{"title":"API Reference","href":"/getting-started/introduction"}]},{"tab":"CLI","icon":"rectangle-terminal","groups":[{"group":"Getting Started","icon":"rocket","pages":[{"title":"NeetoChat CLI","href":"/cli/introduction"},{"title":"Installation","description":"Install the neetochat CLI on macOS, Linux, or Windows.","href":"/cli/installation"},{"title":"Authentication","href":"/cli/authentication"},{"title":"Output formats","description":"Pretty tables, the JSON envelope, quiet mode and TOON.","href":"/cli/output-formats"},{"title":"AI assistants","href":"/cli/ai-assistants"},{"title":"Troubleshooting","href":"/cli/troubleshooting"}]},{"group":"Commands","icon":"terminal","pages":[{"title":"Commands overview","href":"/cli-reference/overview"},{"title":"Conversations","href":"/cli-reference/conversations"},{"title":"Messages","href":"/cli-reference/messages"},{"title":"Reports","href":"/cli-reference/reports"},{"title":"Team members","href":"/cli-reference/team-members"},{"title":"Visitors","href":"/cli-reference/visitors"},{"title":"Utility","href":"/cli-reference/utility"}]}]}]},"basePath":"","title":"Authentication - NeetoChat Docs","buildId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","deploymentId":"dpl_Fyv1NbzwP68g2bEH2Roy98uY1zmE","dynamics":[],"chunks":[]}