Upstream Cial — pull mirror of https://github.com/techforces-ai/Cial.git, syncs every 10m
Find a file
Eliot MAURICE bde7a06d6d feat(core-ui): Claude Code icon in harness dropdown, drop credentials badge
- ConfigPicker harness dropdown rows now render the Claude Code mark
  as a leading icon (PickerRow gained an optional `icon` prop).
- Removed the Anthropic credentials status pill from the composer
  chrome per request. Deleted the AnthropicStatusBadge component and
  its now-dead plumbing: the anthropicState/anthropicStatus props
  threaded ConfigPicker ← SessionView ← AppShell, and AppShell's
  useAnthropicStatus consumption. The hook + anthropic-status lib stay
  (still used by the harness settings page).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-14 19:18:24 +00:00
.claude Lot of fixes 2026-05-05 18:30:27 +02:00
.vscode Add: all fixes 2026-05-01 16:03:49 +02:00
core feat(core-ui): Claude Code icon in harness dropdown, drop credentials badge 2026-05-14 19:18:24 +00:00
docs chore: finalize cial-app split 2026-05-06 11:38:43 +00:00
platform chore: checkpoint in-progress PTY harness + platform routing work 2026-05-14 19:01:31 +00:00
scripts feat(app): user-facing UI + repo-split prep 2026-05-06 10:17:07 +00:00
.editorconfig phase(1): scaffold all 10 workspace packages 2026-04-26 09:33:57 +00:00
.env.example phase(L1): docker compose + Postgres + Better-Auth owner signup 2026-04-26 11:17:53 +00:00
.gitignore feat(app): user-facing UI + repo-split prep 2026-05-06 10:17:07 +00:00
.nvmrc phase(1): scaffold all 10 workspace packages 2026-04-26 09:33:57 +00:00
.prettierignore phase(1): scaffold all 10 workspace packages 2026-04-26 09:33:57 +00:00
.prettierrc.json phase(1): scaffold all 10 workspace packages 2026-04-26 09:33:57 +00:00
BUGS LIST.md chore: checkpoint in-progress PTY harness + platform routing work 2026-05-14 19:01:31 +00:00
eslint.config.js phase(1): scaffold all 10 workspace packages 2026-04-26 09:33:57 +00:00
LICENSE phase(1): scaffold all 10 workspace packages 2026-04-26 09:33:57 +00:00
package.json refactor(layout): consolidate workspace under /cial — core/, platform/, app/ 2026-04-29 13:04:45 +00:00
PHASE-5.md refactor(layout): consolidate workspace under /cial — core/, platform/, app/ 2026-04-29 13:04:45 +00:00
PHASE-6.md refactor(layout): consolidate workspace under /cial — core/, platform/, app/ 2026-04-29 13:04:45 +00:00
PLAN-LOCAL.md refactor(layout): consolidate workspace under /cial — core/, platform/, app/ 2026-04-29 13:04:45 +00:00
PLAN.md refactor(layout): consolidate workspace under /cial — core/, platform/, app/ 2026-04-29 13:04:45 +00:00
pnpm-lock.yaml chore: checkpoint in-progress PTY harness + platform routing work 2026-05-14 19:01:31 +00:00
pnpm-workspace.yaml chore: remove app/, now lives in techforces-ai/cial-app (#1) 2026-05-06 13:36:18 +02:00
README.md refactor(layout): consolidate workspace under /cial — core/, platform/, app/ 2026-04-29 13:04:45 +00:00
tsconfig.base.json phase(1): scaffold all 10 workspace packages 2026-04-26 09:33:57 +00:00
turbo.json phase(1): scaffold all 10 workspace packages 2026-04-26 09:33:57 +00:00

Cial

Closed Core. Editable Platform. One container per tenant. Multi-tenant App layer.

See PLAN.md for the build plan and /app/data/cial-production-infrastructure.md for the architecture rationale.


Repository layout

cial/                  ← repo root, mounted at /cial inside the tenant container
├─ core/               CLOSED — the harness shipped as a Docker image to every tenant
│   ├─ back/           Express + WS · AI sessions · auth · git engine · vault · DB proxy
│   ├─ front/          Next.js · the rescue UI served at /.cial/*
│   ├─ ui/             @cial/core-ui  — shared React components
│   ├─ sdk/            @cial/sdk      — Platform code talks to Core through this
│   ├─ protocol/       @cial/protocol — shared TS types + Zod schemas
│   ├─ edge/           @cial/edge     — edge proxy + supervisor (PID 1)
│   ├─ scripts/        dev-tenant.mjs · smoke.mjs · smoke-process.mjs
│   └─ docker/         Multi-stage Dockerfile · two Linux users (cial + agent)
│
├─ platform/           OPEN — starter cloned into the tenant container, agent-editable
│   ├─ front/          Next.js · the editable user-owned frontend
│   └─ back/           Node · the editable user-owned backend
│
├─ app/                CLOSED — multi-tenant ops layer (lives OUTSIDE the tenant container)
│   ├─ api/            Next.js · owner signup, billing, admin
│   ├─ orchestrator/   Fly Machines provisioning
│   ├─ router/         Subdomain → tenant Machine ID
│   ├─ scheduler/      Central cron / trigger fabric
│   └─ docker/         Dockerfile for App itself
│
├─ docs/               Architecture, ops, self-edit refs (start at file-structure.md)
└─ .claude/            Project skills (cial:self-edit, cial:build, cial:restart)

See docs/file-structure.md for the canonical, runtime-accurate map of paths inside the container.


Stack

  • Node 22 · pnpm 9 · turbo 2
  • TypeScript 5.7 strict · NodeNext
  • Express 4 (Core Back, Platform Back, App orchestrator)
  • Next.js 16 with Turbopack (Core Front, Platform Front, App api)
  • better-sqlite3 (per-tenant DB) · Postgres + Drizzle (App DB)
  • Better-Auth · Zod · pino
  • ESLint 9 (flat) · Prettier

Common commands

pnpm install              # install all workspace deps
pnpm dev                  # run everything in parallel
pnpm build                # build everything
pnpm typecheck            # tsc --noEmit across packages
pnpm lint                 # eslint
pnpm format               # prettier --write
pnpm smoke                # boot all 5 services on isolated ports + probe

Per-package:

pnpm --filter @cial/back dev
pnpm --filter @cial/platform-front build

Architecture conventions (Express services)

  • Modular layout: src/modules/<feature>/{routes,service,repository,schemas,types}.ts
  • Routes never touch the database
  • Services never touch Express (req/res)
  • Repositories never touch services (data access only)
  • Validation at the edge with Zod
  • Dependency injection by hand at src/index.ts
  • Centralized error middleware (last app.use)
  • Structured logs via pino · no console.log
  • Graceful shutdown on SIGTERM/SIGINT

Smoke harness

pnpm smoke boots every service on isolated high ports (1800018100), polls each one until it responds, runs an HTTP probe matrix (health + a 501-stub envelope check on Core Back), then tears everything down. Exits 0 on success.

Service Port Probe
@cial/back 18080 /healthz → 200, /vault → 501 envelope
@cial/platform-back 18081 /health → 200
@cial/app-api 18100 /api/health → 200
@cial/front 18001 /.cial → 200
@cial/platform-front 18000 / → 200

Status

Scaffolding only. See PLAN.md for the phased implementation plan.