@neocode-ai/web 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.md +54 -0
  2. package/astro.config.mjs +145 -0
  3. package/config.mjs +14 -0
  4. package/package.json +41 -0
  5. package/public/robots.txt +6 -0
  6. package/public/theme.json +183 -0
  7. package/src/assets/lander/check.svg +2 -0
  8. package/src/assets/lander/copy.svg +2 -0
  9. package/src/assets/lander/screenshot-github.png +0 -0
  10. package/src/assets/lander/screenshot-splash.png +0 -0
  11. package/src/assets/lander/screenshot-vscode.png +0 -0
  12. package/src/assets/lander/screenshot.png +0 -0
  13. package/src/assets/logo-dark.svg +20 -0
  14. package/src/assets/logo-light.svg +20 -0
  15. package/src/assets/logo-ornate-dark.svg +18 -0
  16. package/src/assets/logo-ornate-light.svg +18 -0
  17. package/src/assets/web/web-homepage-active-session.png +0 -0
  18. package/src/assets/web/web-homepage-new-session.png +0 -0
  19. package/src/assets/web/web-homepage-see-servers.png +0 -0
  20. package/src/components/Head.astro +50 -0
  21. package/src/components/Header.astro +128 -0
  22. package/src/components/Hero.astro +11 -0
  23. package/src/components/Lander.astro +713 -0
  24. package/src/components/Share.tsx +634 -0
  25. package/src/components/SiteTitle.astro +59 -0
  26. package/src/components/icons/custom.tsx +87 -0
  27. package/src/components/icons/index.tsx +4454 -0
  28. package/src/components/share/common.tsx +77 -0
  29. package/src/components/share/content-bash.module.css +85 -0
  30. package/src/components/share/content-bash.tsx +67 -0
  31. package/src/components/share/content-code.module.css +26 -0
  32. package/src/components/share/content-code.tsx +32 -0
  33. package/src/components/share/content-diff.module.css +153 -0
  34. package/src/components/share/content-diff.tsx +231 -0
  35. package/src/components/share/content-error.module.css +64 -0
  36. package/src/components/share/content-error.tsx +24 -0
  37. package/src/components/share/content-markdown.module.css +154 -0
  38. package/src/components/share/content-markdown.tsx +75 -0
  39. package/src/components/share/content-text.module.css +63 -0
  40. package/src/components/share/content-text.tsx +37 -0
  41. package/src/components/share/copy-button.module.css +30 -0
  42. package/src/components/share/copy-button.tsx +28 -0
  43. package/src/components/share/part.module.css +428 -0
  44. package/src/components/share/part.tsx +780 -0
  45. package/src/components/share.module.css +832 -0
  46. package/src/content/docs/1-0.mdx +67 -0
  47. package/src/content/docs/acp.mdx +156 -0
  48. package/src/content/docs/agents.mdx +720 -0
  49. package/src/content/docs/cli.mdx +597 -0
  50. package/src/content/docs/commands.mdx +323 -0
  51. package/src/content/docs/config.mdx +683 -0
  52. package/src/content/docs/custom-tools.mdx +170 -0
  53. package/src/content/docs/ecosystem.mdx +76 -0
  54. package/src/content/docs/enterprise.mdx +170 -0
  55. package/src/content/docs/formatters.mdx +130 -0
  56. package/src/content/docs/github.mdx +321 -0
  57. package/src/content/docs/gitlab.mdx +195 -0
  58. package/src/content/docs/ide.mdx +48 -0
  59. package/src/content/docs/index.mdx +359 -0
  60. package/src/content/docs/keybinds.mdx +191 -0
  61. package/src/content/docs/lsp.mdx +188 -0
  62. package/src/content/docs/mcp-servers.mdx +511 -0
  63. package/src/content/docs/models.mdx +223 -0
  64. package/src/content/docs/modes.mdx +331 -0
  65. package/src/content/docs/network.mdx +57 -0
  66. package/src/content/docs/permissions.mdx +237 -0
  67. package/src/content/docs/plugins.mdx +362 -0
  68. package/src/content/docs/providers.mdx +1889 -0
  69. package/src/content/docs/rules.mdx +180 -0
  70. package/src/content/docs/sdk.mdx +391 -0
  71. package/src/content/docs/server.mdx +286 -0
  72. package/src/content/docs/share.mdx +128 -0
  73. package/src/content/docs/skills.mdx +220 -0
  74. package/src/content/docs/themes.mdx +369 -0
  75. package/src/content/docs/tools.mdx +345 -0
  76. package/src/content/docs/troubleshooting.mdx +300 -0
  77. package/src/content/docs/tui.mdx +390 -0
  78. package/src/content/docs/web.mdx +136 -0
  79. package/src/content/docs/windows-wsl.mdx +113 -0
  80. package/src/content/docs/zen.mdx +251 -0
  81. package/src/content.config.ts +7 -0
  82. package/src/pages/[...slug].md.ts +18 -0
  83. package/src/pages/s/[id].astro +113 -0
  84. package/src/styles/custom.css +405 -0
  85. package/src/types/lang-map.d.ts +27 -0
  86. package/tsconfig.json +9 -0
@@ -0,0 +1,136 @@
1
+ ---
2
+ title: Web
3
+ description: Using NeoCode in your browser.
4
+ ---
5
+
6
+ NeoCode can run as a web application in your browser, providing the same powerful AI coding experience without needing a terminal.
7
+
8
+ ![NeoCode Web - New Session](../../assets/web/web-homepage-new-session.png)
9
+
10
+ ## Getting Started
11
+
12
+ Start the web interface by running:
13
+
14
+ ```bash
15
+ neocode web
16
+ ```
17
+
18
+ This starts a local server on `127.0.0.1` with a random available port and automatically opens NeoCode in your default browser.
19
+
20
+ :::caution
21
+ If `NEOCODE_SERVER_PASSWORD` is not set, the server will be unsecured. This is fine for local use but should be set for network access.
22
+ :::
23
+
24
+ :::tip[Windows Users]
25
+ For the best experience, run `neocode web` from [WSL](/docs/windows-wsl) rather than PowerShell. This ensures proper file system access and terminal integration.
26
+ :::
27
+
28
+ ---
29
+
30
+ ## Configuration
31
+
32
+ You can configure the web server using command line flags or in your [config file](/docs/config).
33
+
34
+ ### Port
35
+
36
+ By default, NeoCode picks an available port. You can specify a port:
37
+
38
+ ```bash
39
+ neocode web --port 4096
40
+ ```
41
+
42
+ ### Hostname
43
+
44
+ By default, the server binds to `127.0.0.1` (localhost only). To make NeoCode accessible on your network:
45
+
46
+ ```bash
47
+ neocode web --hostname 0.0.0.0
48
+ ```
49
+
50
+ When using `0.0.0.0`, NeoCode will display both local and network addresses:
51
+
52
+ ```
53
+ Local access: http://localhost:4096
54
+ Network access: http://192.168.1.100:4096
55
+ ```
56
+
57
+ ### mDNS Discovery
58
+
59
+ Enable mDNS to make your server discoverable on the local network:
60
+
61
+ ```bash
62
+ neocode web --mdns
63
+ ```
64
+
65
+ This automatically sets the hostname to `0.0.0.0` and advertises the server as `neocode.local`.
66
+
67
+ ### CORS
68
+
69
+ To allow additional domains for CORS (useful for custom frontends):
70
+
71
+ ```bash
72
+ neocode web --cors https://example.com
73
+ ```
74
+
75
+ ### Authentication
76
+
77
+ To protect access, set a password using the `NEOCODE_SERVER_PASSWORD` environment variable:
78
+
79
+ ```bash
80
+ NEOCODE_SERVER_PASSWORD=secret neocode web
81
+ ```
82
+
83
+ The username defaults to `neocode` but can be changed with `NEOCODE_SERVER_USERNAME`.
84
+
85
+ ---
86
+
87
+ ## Using the Web Interface
88
+
89
+ Once started, the web interface provides access to your NeoCode sessions.
90
+
91
+ ### Sessions
92
+
93
+ View and manage your sessions from the homepage. You can see active sessions and start new ones.
94
+
95
+ ![NeoCode Web - Active Session](../../assets/web/web-homepage-active-session.png)
96
+
97
+ ### Server Status
98
+
99
+ Click "See Servers" to view connected servers and their status.
100
+
101
+ ![NeoCode Web - See Servers](../../assets/web/web-homepage-see-servers.png)
102
+
103
+ ---
104
+
105
+ ## Attaching a Terminal
106
+
107
+ You can attach a terminal TUI to a running web server:
108
+
109
+ ```bash
110
+ # Start the web server
111
+ neocode web --port 4096
112
+
113
+ # In another terminal, attach the TUI
114
+ neocode attach http://localhost:4096
115
+ ```
116
+
117
+ This allows you to use both the web interface and terminal simultaneously, sharing the same sessions and state.
118
+
119
+ ---
120
+
121
+ ## Config File
122
+
123
+ You can also configure server settings in your `neocode.json` config file:
124
+
125
+ ```json
126
+ {
127
+ "server": {
128
+ "port": 4096,
129
+ "hostname": "0.0.0.0",
130
+ "mdns": true,
131
+ "cors": ["https://example.com"]
132
+ }
133
+ }
134
+ ```
135
+
136
+ Command line flags take precedence over config file settings.
@@ -0,0 +1,113 @@
1
+ ---
2
+ title: Windows (WSL)
3
+ description: Run NeoCode on Windows using WSL for the best experience.
4
+ ---
5
+
6
+ import { Steps } from "@astrojs/starlight/components"
7
+
8
+ While NeoCode can run directly on Windows, we recommend using [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) for the best experience. WSL provides a Linux environment that works seamlessly with NeoCode's features.
9
+
10
+ :::tip[Why WSL?]
11
+ WSL offers better file system performance, full terminal support, and compatibility with development tools that NeoCode relies on.
12
+ :::
13
+
14
+ ---
15
+
16
+ ## Setup
17
+
18
+ <Steps>
19
+
20
+ 1. **Install WSL**
21
+
22
+ If you haven't already, [install WSL](https://learn.microsoft.com/en-us/windows/wsl/install) using the official Microsoft guide.
23
+
24
+ 2. **Install NeoCode in WSL**
25
+
26
+ Once WSL is set up, open your WSL terminal and install NeoCode using one of the [installation methods](/docs/).
27
+
28
+ ```bash
29
+ curl -fsSL https://raw.githubusercontent.com/neopilot-ai/neocode/refs/heads/dev/install | bash
30
+ ```
31
+
32
+ 3. **Use NeoCode from WSL**
33
+
34
+ Navigate to your project directory (access Windows files via `/mnt/c/`, `/mnt/d/`, etc.) and run NeoCode.
35
+
36
+ ```bash
37
+ cd /mnt/c/Users/YourName/project
38
+ neocode
39
+ ```
40
+
41
+ </Steps>
42
+
43
+ ---
44
+
45
+ ## Desktop App + WSL Server
46
+
47
+ If you prefer using the NeoCode Desktop app but want to run the server in WSL:
48
+
49
+ 1. **Start the server in WSL** with `--hostname 0.0.0.0` to allow external connections:
50
+
51
+ ```bash
52
+ neocode serve --hostname 0.0.0.0 --port 4096
53
+ ```
54
+
55
+ 2. **Connect the Desktop app** to `http://localhost:4096`
56
+
57
+ :::note
58
+ If `localhost` does not work in your setup, connect using the WSL IP address instead (from WSL: `hostname -I`) and use `http://<wsl-ip>:4096`.
59
+ :::
60
+
61
+ :::caution
62
+ When using `--hostname 0.0.0.0`, set `NEOCODE_SERVER_PASSWORD` to secure the server.
63
+
64
+ ```bash
65
+ NEOCODE_SERVER_PASSWORD=your-password neocode serve --hostname 0.0.0.0
66
+ ```
67
+
68
+ :::
69
+
70
+ ---
71
+
72
+ ## Web Client + WSL
73
+
74
+ For the best web experience on Windows:
75
+
76
+ 1. **Run `neocode web` in the WSL terminal** rather than PowerShell:
77
+
78
+ ```bash
79
+ neocode web --hostname 0.0.0.0
80
+ ```
81
+
82
+ 2. **Access from your Windows browser** at `http://localhost:<port>` (NeoCode prints the URL)
83
+
84
+ Running `neocode web` from WSL ensures proper file system access and terminal integration while still being accessible from your Windows browser.
85
+
86
+ ---
87
+
88
+ ## Accessing Windows Files
89
+
90
+ WSL can access all your Windows files through the `/mnt/` directory:
91
+
92
+ - `C:` drive → `/mnt/c/`
93
+ - `D:` drive → `/mnt/d/`
94
+ - And so on...
95
+
96
+ Example:
97
+
98
+ ```bash
99
+ cd /mnt/c/Users/YourName/Documents/project
100
+ neocode
101
+ ```
102
+
103
+ :::tip
104
+ For the smoothest experience, consider cloning/copying your repo into the WSL filesystem (for example under `~/code/`) and running NeoCode there.
105
+ :::
106
+
107
+ ---
108
+
109
+ ## Tips
110
+
111
+ - Keep NeoCode running in WSL for projects stored on Windows drives - file access is seamless
112
+ - Use VS Code's [WSL extension](https://code.visualstudio.com/docs/remote/wsl) alongside NeoCode for an integrated development workflow
113
+ - Your NeoCode config and sessions are stored within the WSL environment at `~/.local/share/neocode/`
@@ -0,0 +1,251 @@
1
+ ---
2
+ title: Zen
3
+ description: Curated list of models provided by NeoCode.
4
+ ---
5
+
6
+ import config from "../../../config.mjs"
7
+ export const console = config.console
8
+ export const email = `mailto:${config.email}`
9
+
10
+ NeoCode Zen is a list of tested and verified models provided by the NeoCode team.
11
+
12
+ :::note
13
+ NeoCode Zen is currently in beta.
14
+ :::
15
+
16
+ Zen works like any other provider in NeoCode. You login to NeoCode Zen and get
17
+ your API key. It's **completely optional** and you don't need to use it to use
18
+ NeoCode.
19
+
20
+ ---
21
+
22
+ ## Background
23
+
24
+ There are a large number of models out there but only a few of
25
+ these models work well as coding agents. Additionally, most providers are
26
+ configured very differently; so you get very different performance and quality.
27
+
28
+ :::tip
29
+ We tested a select group of models and providers that work well with NeoCode.
30
+ :::
31
+
32
+ So if you are using a model through something like OpenRouter, you can never be
33
+ sure if you are getting the best version of the model you want.
34
+
35
+ To fix this, we did a couple of things:
36
+
37
+ 1. We tested a select group of models and talked to their teams about how to
38
+ best run them.
39
+ 2. We then worked with a few providers to make sure these were being served
40
+ correctly.
41
+ 3. Finally, we benchmarked the combination of the model/provider and came up
42
+ with a list that we feel good recommending.
43
+
44
+ NeoCode Zen is an AI gateway that gives you access to these models.
45
+
46
+ ---
47
+
48
+ ## How it works
49
+
50
+ NeoCode Zen works like any other provider in NeoCode.
51
+
52
+ 1. You sign in to **<a href={console}>NeoCode Zen</a>**, add your billing
53
+ details, and copy your API key.
54
+ 2. You run the `/connect` command in the TUI, select NeoCode Zen, and paste your API key.
55
+ 3. Run `/models` in the TUI to see the list of models we recommend.
56
+
57
+ You are charged per request and you can add credits to your account.
58
+
59
+ ---
60
+
61
+ ## Endpoints
62
+
63
+ You can also access our models through the following API endpoints.
64
+
65
+ | Model | Model ID | Endpoint | AI SDK Package |
66
+ | ------------------ | ------------------ | --------------------------------------------------------- | --------------------------- |
67
+ | GPT 5.2 | gpt-5.2 | `https://neo.khulnasoft.com/zen/v1/responses` | `@ai-sdk/openai` |
68
+ | GPT 5.2 Codex | gpt-5.2-codex | `https://neo.khulnasoft.com/zen/v1/responses` | `@ai-sdk/openai` |
69
+ | GPT 5.1 | gpt-5.1 | `https://neo.khulnasoft.com/zen/v1/responses` | `@ai-sdk/openai` |
70
+ | GPT 5.1 Codex | gpt-5.1-codex | `https://neo.khulnasoft.com/zen/v1/responses` | `@ai-sdk/openai` |
71
+ | GPT 5.1 Codex Max | gpt-5.1-codex-max | `https://neo.khulnasoft.com/zen/v1/responses` | `@ai-sdk/openai` |
72
+ | GPT 5.1 Codex Mini | gpt-5.1-codex-mini | `https://neo.khulnasoft.com/zen/v1/responses` | `@ai-sdk/openai` |
73
+ | GPT 5 | gpt-5 | `https://neo.khulnasoft.com/zen/v1/responses` | `@ai-sdk/openai` |
74
+ | GPT 5 Codex | gpt-5-codex | `https://neo.khulnasoft.com/zen/v1/responses` | `@ai-sdk/openai` |
75
+ | GPT 5 Nano | gpt-5-nano | `https://neo.khulnasoft.com/zen/v1/responses` | `@ai-sdk/openai` |
76
+ | Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://neo.khulnasoft.com/zen/v1/messages` | `@ai-sdk/anthropic` |
77
+ | Claude Sonnet 4 | claude-sonnet-4 | `https://neo.khulnasoft.com/zen/v1/messages` | `@ai-sdk/anthropic` |
78
+ | Claude Haiku 4.5 | claude-haiku-4-5 | `https://neo.khulnasoft.com/zen/v1/messages` | `@ai-sdk/anthropic` |
79
+ | Claude Haiku 3.5 | claude-3-5-haiku | `https://neo.khulnasoft.com/zen/v1/messages` | `@ai-sdk/anthropic` |
80
+ | Claude Opus 4.5 | claude-opus-4-5 | `https://neo.khulnasoft.com/zen/v1/messages` | `@ai-sdk/anthropic` |
81
+ | Claude Opus 4.1 | claude-opus-4-1 | `https://neo.khulnasoft.com/zen/v1/messages` | `@ai-sdk/anthropic` |
82
+ | Gemini 3 Pro | gemini-3-pro | `https://neo.khulnasoft.com/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` |
83
+ | Gemini 3 Flash | gemini-3-flash | `https://neo.khulnasoft.com/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` |
84
+ | MiniMax M2.1 | minimax-m2.1 | `https://neo.khulnasoft.com/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
85
+ | MiniMax M2.1 Free | minimax-m2.1-free | `https://neo.khulnasoft.com/zen/v1/messages` | `@ai-sdk/anthropic` |
86
+ | GLM 4.7 | glm-4.7 | `https://neo.khulnasoft.com/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
87
+ | GLM 4.7 Free | glm-4.7-free | `https://neo.khulnasoft.com/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
88
+ | GLM 4.6 | glm-4.6 | `https://neo.khulnasoft.com/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
89
+ | Kimi K2.5 | kimi-k2.5 | `https://neo.khulnasoft.com/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
90
+ | Kimi K2.5 Free | kimi-k2.5-free | `https://neo.khulnasoft.com/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
91
+ | Kimi K2 Thinking | kimi-k2-thinking | `https://neo.khulnasoft.com/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
92
+ | Kimi K2 | kimi-k2 | `https://neo.khulnasoft.com/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
93
+ | Qwen3 Coder 480B | qwen3-coder | `https://neo.khulnasoft.com/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
94
+ | Big Pickle | big-pickle | `https://neo.khulnasoft.com/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
95
+
96
+ The [model id](/docs/config/#models) in your NeoCode config
97
+ uses the format `neocode/<model-id>`. For example, for GPT 5.2 Codex, you would
98
+ use `neocode/gpt-5.2-codex` in your config.
99
+
100
+ ---
101
+
102
+ ### Models
103
+
104
+ You can fetch the full list of available models and their metadata from:
105
+
106
+ ```
107
+ https://neo.khulnasoft.com/zen/v1/models
108
+ ```
109
+
110
+ ---
111
+
112
+ ## Pricing
113
+
114
+ We support a pay-as-you-go model. Below are the prices **per 1M tokens**.
115
+
116
+ | Model | Input | Output | Cached Read | Cached Write |
117
+ | --------------------------------- | ------ | ------ | ----------- | ------------ |
118
+ | Big Pickle | Free | Free | Free | - |
119
+ | MiniMax M2.1 Free | Free | Free | Free | - |
120
+ | MiniMax M2.1 | $0.30 | $1.20 | $0.10 | - |
121
+ | GLM 4.7 Free | Free | Free | Free | - |
122
+ | GLM 4.7 | $0.60 | $2.20 | $0.10 | - |
123
+ | GLM 4.6 | $0.60 | $2.20 | $0.10 | - |
124
+ | Kimi K2.5 Free | Free | Free | Free | - |
125
+ | Kimi K2.5 | $0.60 | $3.00 | $0.08 | - |
126
+ | Kimi K2 Thinking | $0.40 | $2.50 | - | - |
127
+ | Kimi K2 | $0.40 | $2.50 | - | - |
128
+ | Qwen3 Coder 480B | $0.45 | $1.50 | - | - |
129
+ | Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 |
130
+ | Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 |
131
+ | Claude Sonnet 4 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 |
132
+ | Claude Sonnet 4 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 |
133
+ | Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 |
134
+ | Claude Haiku 3.5 | $0.80 | $4.00 | $0.08 | $1.00 |
135
+ | Claude Opus 4.5 | $5.00 | $25.00 | $0.50 | $6.25 |
136
+ | Claude Opus 4.1 | $15.00 | $75.00 | $1.50 | $18.75 |
137
+ | Gemini 3 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - |
138
+ | Gemini 3 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - |
139
+ | Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - |
140
+ | GPT 5.2 | $1.75 | $14.00 | $0.175 | - |
141
+ | GPT 5.2 Codex | $1.75 | $14.00 | $0.175 | - |
142
+ | GPT 5.1 | $1.07 | $8.50 | $0.107 | - |
143
+ | GPT 5.1 Codex | $1.07 | $8.50 | $0.107 | - |
144
+ | GPT 5.1 Codex Max | $1.25 | $10.00 | $0.125 | - |
145
+ | GPT 5.1 Codex Mini | $0.25 | $2.00 | $0.025 | - |
146
+ | GPT 5 | $1.07 | $8.50 | $0.107 | - |
147
+ | GPT 5 Codex | $1.07 | $8.50 | $0.107 | - |
148
+ | GPT 5 Nano | Free | Free | Free | - |
149
+
150
+ You might notice _Claude Haiku 3.5_ in your usage history. This is a [low cost model](/docs/config/#models) that's used to generate the titles of your sessions.
151
+
152
+ :::note
153
+ Credit card fees are passed along at cost (4.4% + $0.30 per transaction); we don't charge anything beyond that.
154
+ :::
155
+
156
+ The free models:
157
+
158
+ - GLM 4.7 Free is available on NeoCode for a limited time. The team is using this time to collect feedback and improve the model.
159
+ - Kimi K2.5 Free is available on NeoCode for a limited time. The team is using this time to collect feedback and improve the model.
160
+ - MiniMax M2.1 Free is available on NeoCode for a limited time. The team is using this time to collect feedback and improve the model.
161
+ - Big Pickle is a stealth model that's free on NeoCode for a limited time. The team is using this time to collect feedback and improve the model.
162
+
163
+ <a href={email}>Contact us</a> if you have any questions.
164
+
165
+ ---
166
+
167
+ ### Auto-reload
168
+
169
+ If your balance goes below $5, Zen will automatically reload $20.
170
+
171
+ You can change the auto-reload amount. You can also disable auto-reload entirely.
172
+
173
+ ---
174
+
175
+ ### Monthly limits
176
+
177
+ You can also set a monthly usage limit for the entire workspace and for each
178
+ member of your team.
179
+
180
+ For example, let's say you set a monthly usage limit to $20, Zen will not use
181
+ more than $20 in a month. But if you have auto-reload enabled, Zen might end up
182
+ charging you more than $20 if your balance goes below $5.
183
+
184
+ ---
185
+
186
+ ## Privacy
187
+
188
+ All our models are hosted in the US. Our providers follow a zero-retention policy and do not use your data for model training, with the following exceptions:
189
+
190
+ - Big Pickle: During its free period, collected data may be used to improve the model.
191
+ - GLM 4.7 Free: During its free period, collected data may be used to improve the model.
192
+ - Kimi K2.5 Free: During its free period, collected data may be used to improve the model.
193
+ - MiniMax M2.1 Free: During its free period, collected data may be used to improve the model.
194
+ - OpenAI APIs: Requests are retained for 30 days in accordance with [OpenAI's Data Policies](https://platform.openai.com/docs/guides/your-data).
195
+ - Anthropic APIs: Requests are retained for 30 days in accordance with [Anthropic's Data Policies](https://docs.anthropic.com/en/docs/claude-code/data-usage).
196
+
197
+ ---
198
+
199
+ ## For Teams
200
+
201
+ Zen also works great for teams. You can invite teammates, assign roles, curate
202
+ the models your team uses, and more.
203
+
204
+ :::note
205
+ Workspaces are currently free for teams as a part of the beta.
206
+ :::
207
+
208
+ Managing your workspace is currently free for teams as a part of the beta. We'll be
209
+ sharing more details on the pricing soon.
210
+
211
+ ---
212
+
213
+ ### Roles
214
+
215
+ You can invite teammates to your workspace and assign roles:
216
+
217
+ - **Admin**: Manage models, members, API keys, and billing
218
+ - **Member**: Manage only their own API keys
219
+
220
+ Admins can also set monthly spending limits for each member to keep costs under control.
221
+
222
+ ---
223
+
224
+ ### Model access
225
+
226
+ Admins can enable or disable specific models for the workspace. Requests made to a disabled model will return an error.
227
+
228
+ This is useful for cases where you want to disable the use of a model that
229
+ collects data.
230
+
231
+ ---
232
+
233
+ ### Bring your own key
234
+
235
+ You can use your own OpenAI or Anthropic API keys while still accessing other models in Zen.
236
+
237
+ When you use your own keys, tokens are billed directly by the provider, not by Zen.
238
+
239
+ For example, your organization might already have a key for OpenAI or Anthropic
240
+ and you want to use that instead of the one that Zen provides.
241
+
242
+ ---
243
+
244
+ ## Goals
245
+
246
+ We created NeoCode Zen to:
247
+
248
+ 1. **Benchmark** the best models/providers for coding agents.
249
+ 2. Have access to the **highest quality** options and not downgrade performance or route to cheaper providers.
250
+ 3. Pass along any **price drops** by selling at cost; so the only markup is to cover our processing fees.
251
+ 4. Have **no lock-in** by allowing you to use it with any other coding agent. And always let you use any other provider with NeoCode as well.
@@ -0,0 +1,7 @@
1
+ import { defineCollection } from "astro:content"
2
+ import { docsLoader } from "@astrojs/starlight/loaders"
3
+ import { docsSchema } from "@astrojs/starlight/schema"
4
+
5
+ export const collections = {
6
+ docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }),
7
+ }
@@ -0,0 +1,18 @@
1
+ import type { APIRoute } from "astro"
2
+ import { getCollection } from "astro:content"
3
+
4
+ export const GET: APIRoute = async ({ params }) => {
5
+ const slug = params.slug || "index"
6
+ const docs = await getCollection("docs")
7
+ const doc = docs.find((d) => d.id === slug)
8
+
9
+ if (!doc) {
10
+ return new Response("Not found", { status: 404 })
11
+ }
12
+
13
+ return new Response(doc.body, {
14
+ headers: {
15
+ "Content-Type": "text/plain; charset=utf-8",
16
+ },
17
+ })
18
+ }
@@ -0,0 +1,113 @@
1
+ ---
2
+ import { Base64 } from "js-base64";
3
+
4
+ import config from '../../../config.mjs'
5
+ import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro';
6
+ import Share from "../../components/Share.tsx";
7
+
8
+ const apiUrl = import.meta.env.VITE_API_URL;
9
+
10
+ const { id } = Astro.params;
11
+ const res = await fetch(`${apiUrl}/share_data?id=${id}`);
12
+ const data = await res.json();
13
+
14
+ if (!data.info) {
15
+ return new Response(null, {
16
+ status: 404,
17
+ statusText: 'Not found'
18
+ });
19
+ }
20
+
21
+ const models: Set<string> = new Set();
22
+ const version = data.info.version ? `v${data.info.version}` : "v0.0.1";
23
+
24
+ Object.values(data.messages).forEach((d) => {
25
+ if (d.role === "assistant" && d.modelID) {
26
+ models.add(d.modelID);
27
+ }
28
+ });
29
+
30
+ const encodedTitle = encodeURIComponent(
31
+ Base64.encode(
32
+ // Convert to ASCII
33
+ encodeURIComponent(
34
+ // Truncate to fit S3's max key size
35
+ data.info.title.substring(0, 700),
36
+ )
37
+ )
38
+ );
39
+
40
+ const modelsArray = Array.from(models);
41
+ let modelParam;
42
+ if (modelsArray.length === 1) {
43
+ modelParam = modelsArray[0];
44
+ }
45
+ else if (modelsArray.length === 2) {
46
+ modelParam = encodeURIComponent(`${modelsArray[0]} & ${modelsArray[1]}`);
47
+ }
48
+ else {
49
+ modelParam = encodeURIComponent(`${modelsArray[0]} & ${modelsArray.length - 1} others`);
50
+ }
51
+
52
+ const ogImage = `${config.socialCard}/neocode-share/${encodedTitle}.png?model=${modelParam}&version=${version}&id=${id}`;
53
+ ---
54
+ <StarlightPage
55
+ hasSidebar={false}
56
+ frontmatter={{
57
+ title: data.info.title,
58
+ pagefind: false,
59
+ template: "splash",
60
+ tableOfContents: false,
61
+ head: [
62
+ {
63
+ tag: "meta",
64
+ attrs: {
65
+ name: "description",
66
+ content: "neocode - The AI coding agent built for the terminal.",
67
+ },
68
+ },
69
+ {
70
+ tag: "meta",
71
+ attrs: {
72
+ name: "robots",
73
+ content: "noindex, nofollow, noarchive, nosnippet",
74
+ }
75
+ },
76
+ {
77
+ tag: "meta",
78
+ attrs: {
79
+ property: "og:image",
80
+ content: ogImage,
81
+ },
82
+ },
83
+ {
84
+ tag: "meta",
85
+ attrs: {
86
+ name: "twitter:image",
87
+ content: ogImage,
88
+ },
89
+ },
90
+ ],
91
+ }}
92
+ >
93
+ <Share
94
+ id={id}
95
+ api={apiUrl}
96
+ info={data.info}
97
+ messages={data.messages}
98
+ client:only="solid"
99
+ />
100
+ </StarlightPage>
101
+
102
+ <style is:global>
103
+ body > .page > .main-frame .main-pane > main > .content-panel:first-of-type {
104
+ display: none;
105
+ }
106
+ body > .page > .main-frame .main-pane > main {
107
+ padding: 0;
108
+ }
109
+ body > .page > .main-frame .main-pane > main > .content-panel + .content-panel {
110
+ border-top: none !important;
111
+ padding: 0;
112
+ }
113
+ </style>