Skip to content

Feat/monorepo#1

Merged
fatalerrorist merged 9 commits into
mainfrom
feat/monorepo
Jun 30, 2026
Merged

Feat/monorepo#1
fatalerrorist merged 9 commits into
mainfrom
feat/monorepo

Conversation

@fatalerrorist

Copy link
Copy Markdown
Contributor

No description provided.

fatalerrorist and others added 9 commits June 30, 2026 10:17
Set up the workspace that hosts the full Solarch stack as apps/web + apps/server:
pnpm workspaces, a Turborepo task pipeline, a shared tsconfig base, and unified
.gitignore / .editorconfig / .nvmrc. Node >=20.19, pnpm 10, a single lockfile.
Import the canvas web app (Vite + React 19) as apps/web and the graph backend
(NestJS + Neo4j) as apps/server. Clean import — no prior private history.

- web: drop the Linux-only @rolldown native binding so installs are cross-platform
- server: resolve the @solarch/cli fill engine from the published npm package
  (require.resolve), with a sibling solarch-tools checkout as a dev fallback
- server: make the listen host configurable (HOST env) for containerized runs
`docker compose up --build` brings up Neo4j, the server, and a Caddy front that
serves the SPA and reverse-proxies /api (single origin so the Clerk session is
valid for both). The server image pre-fetches the local embedding model and
bootstraps the graph DB (schema, vector index, pattern seed) idempotently on boot.
Add CI (build + server unit tests as the gate; lint informational), issue/PR
templates, SECURITY and CODE_OF_CONDUCT, and docs/{self-hosting,architecture}.
Flip the README Self-Hosting section from "coming soon" to working instructions
and update CONTRIBUTING with the monorepo dev flow.
…q, OpenRouter, Ollama

Rewrite the LLM factory as a provider registry. Alongside the existing DeepSeek and Bedrock,
add first-class OpenAI, Anthropic, Google Gemini, Mistral, Groq, Ollama (local/offline), an
OpenRouter gateway, and a generic OpenAI-compatible escape hatch (xAI, Together, vLLM, ...).

The frontend is provider-agnostic, so this is server-only: env selects the provider
(LLM_GENERATION_PROVIDER / LLM_CHAT_PROVIDER) and ai.service drives any of them via the shared
bindTools / tool_calls interface. ai.service now passes a logical tier (agent/instruct) instead
of a DeepSeek model name, so each provider resolves its own model. DeepSeek's json_object /
thinking quirks stay scoped to its builder. env-check reports the active provider's missing key.
Also adds the BILLING_ENABLED env (used by the next commit).
When BILLING_ENABLED=false, all metering/gating is bypassed (consume/refund no-op; the
canGenerate/canCodegen/projectCap asserts pass; getState reports the top plan). The self-host
docker-compose sets it false by default, so running your own instance with your own API key is
unlimited and needs no Polar config. The SaaS keeps it true (the schema default).
An interactive setup wizard (Linux/macOS bash + Windows PowerShell, no Node needed — only
Docker) that asks for an AI provider + API key, Clerk keys, and a database password, generates
the guest-token secret, writes a fresh .env (mode 600, billing disabled), and optionally starts
the stack. Secrets are read hidden and never echoed or logged.
Add docs/ai-providers.md (how AI is used, the provider table with tool-calling support, how to
switch, the self-host unlimited switch, local Ollama). Expand .env.example with every provider
key + BILLING_ENABLED, and point the README / self-hosting guide at the ./install.sh wizard.
… README

Remove SaaS auth/billing (Clerk, Polar, guest), wire LocalAuthGuard and API keys,
require explicit LLM provider config, and English-only runtime surface. Add full
docs/ guide set, CI grep gates, deploy cleanup, and README that leads with
app.solarch.dev while documenting docker self-host.

Co-authored-by: Cursor <cursoragent@cursor.com>
@fatalerrorist fatalerrorist merged commit cab5e8a into main Jun 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant