Javis OS
Javis OS는 기업가를 돕는 에이전시 AI로, 업무를 지원하고 함께 성장합니다
각 기간·연결에 서면 근거와 DCMA 14점 평가, Primavera P6·MS Project 내보내기로 건설 일정 작성·검증
Build and check construction schedules with a written basis for every duration and link, the DCMA 14-Point Assessment, and native Primavera P6 and MS Project export.
비즈니스TypeScript · JavaScriptGitHub @Hoshmand-AI온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗AI construction scheduling that asks before it builds. Built by Hoshmand AI.
RunF9 works in three stages: build a schedule, analyze it, then monitor it.
| Capability | Where |
|---|---|
| Elicitation. It works out what is missing and asks targeted questions, ordered by how much each answer can move the finish date. Follow-up questions depend on earlier answers, contradictions are flagged, and "don't know" or "can't share" answers become explicit assumptions with visible contingency. | src/lib/planning/elicitation.ts |
| Grounding. Durations and logic come from regional permit and regulation catalogs (10 regions, 50 permits, 20 regulations), long-lead equipment lead times (27 items), activity templates for 9 facility types, and the firm's own completed projects (actual vs. planned). | src/lib/knowledge/*, src/lib/planning/history.ts |
| Evaluation. Each plan gets a DCMA 14-point score, benchmarks against the firm's actual outcomes, risk-adjusted P50/P80 finish dates, a check that every grounded requirement is covered, recorded expert review, and a leave-one-out backtest against the firm's completed projects. | src/lib/planning/evaluation.ts |
Private data. Every firm is an organization, and every query is scoped by org_id. Firm history only ever reads that firm's own schedules. | src/lib/db.ts |
Any file format. Imports P6 XER and P6 XML (including calendars, constraints and WBS; the same project in either format gives identical CPM results), MS Project XML, Excel/CSV (messy headers are handled, and a P6 Excel import/export workbook's logic is read from its TASKPRED sheet) and PDF. Nothing is dropped silently: every import and export carries an exception report of what was not mapped, converted or defaulted (src/lib/parsers/exceptions.ts). Activity names and calendars are normalized to shared meanings (for example "SOG", "F/R/P footings" and "Hang/Tape/Finish GWB" each map to a standard category). Exports MS Project XML, CSV and a Basis of Schedule narrative. | src/lib/parsers/*, src/lib/semantic/taxonomy.ts, src/lib/export/* |
| Self-checking inputs. Flags weekend or holiday work, out-of-sequence progress, invalid dates, dangling logic and other data issues. The scheduler answers each one inline. | src/lib/analysis/input-checks.ts |
Secure / air-gapped use. Runs with no model, with an on-prem model, or with a cloud model through a provider-agnostic AI gateway (default cloud provider: Anthropic Claude via ANTHROPIC_API_KEY; OpenAI is an approved alternate, selected with RUNF9_AI_PROVIDER=openai). Cloud AI calls send request-relevant content to the selected provider. In air-gapped mode it refuses any model host that is not private. Withheld answers are never sent to a model; withheld constraints become placeholders with reserved time. Small models get narrow, JSON-only tasks that are validated and retried. | src/lib/llm/provider.ts, src/lib/llm/gateway.ts, src/lib/planning/ai-questions.ts |
| Project documents. Contracts, scheduling specifications and owner requirements are indexed per project (Postgres full-text search, scoped in SQL to the firm, project and workspace). Ask AI and reports can answer from them with verified citations like [Spec §1.3.4 p.3]; document text is treated as untrusted data, passages that read like prompt injection are never sent to a model, CUI passages never reach a cloud model, and candidate scheduling requirements (max duration, update frequency, float, NTP, completion, LDs) are suggested for people to confirm. | src/lib/rag/*, docs/privacy/PROJECT-DOCUMENTS.md |
| Human control. Every activity and link shows why it exists and where that came from. Overrides require a reason, report their impact on the finish date and critical path, survive regeneration, and are recorded in the audit trail and the narrative. | src/lib/planning/overrides.ts |
The scheduling core is deterministic TypeScript and runs without any model:
Next.js 16 (App Router, React 19), TypeScript strict, Tailwind v3, Postgres (pg, raw SQL, versioned migrations in src/lib/migrations.ts applied automatically), server-side sessions (signed httpOnly cookie), Vitest, Playwright + axe-core.
Roles (owner/admin/scheduler/reviewer/viewer), workspaces with ethical walls between client matters, invitations, two-step verification, single sign-on with OpenID Connect or SAML 2.0, SCIM 2.0 user provisioning, revocable sessions, rate limits and lockout, a hash-chained append-only audit log, retention and privacy controls, plan entitlements, and Monte Carlo schedule risk analysis.
api({ permission }) or publicApi() from src/lib/server/api.ts (the SCIM 2.0 endpoints under /api/scim/v2 use scimApi(), which accepts only an organization SCIM token). A test fails the build otherwise.npm install
cp .env.example .env.local # set DATABASE_URL, JWT_SECRET, and optionally AI settings
npm run dev
npm run typecheck
npm test # 410+ unit tests (incl. route guard, security, CPM performance budgets, export/import round trips)
BASE_URL=http://localhost:3000 node scripts/e2e-smoke.mjs # end-to-end against a running server
# Security & governance suite (use DATABASE_URL for the audit-immutability checks; OIDC_ISSUER for SSO,
# with `PORT=4010 node scripts/mock-oidc.mjs` running and the app started with RUNF9_ALLOW_INSECURE_OIDC=1)
# RUNF9_EMAIL_OUTBOX + RUNF9_ALLOW_INSECURE_WEBHOOKS=1 on the server enable the email and webhook checks
BASE_URL=… DATABASE_URL=… OIDC_ISSUER=http://localhost:4010 RUNF9_EMAIL_OUTBOX=/tmp/outbox WEBHOOK_RECEIVER_PORT=4020 node scripts/e2e-security.mjs
BASE_URL=… DATABASE_URL=… WEBHOOK_RECEIVER_PORT=4020 node scripts/e2e-tenant-isolation.mjs # org B vs every object of org A
BASE_URL=… DATABASE_URL=… node scripts/e2e-scim.mjs # SAML sign-in and SCIM provisioning (server with RUNF9_ALLOW_INSECURE_OIDC=1)
BASE_URL=… node scripts/e2e-rag.mjs # project documents: isolation, injection, citations, deletion
RAG_TEST_DATABASE_URL=… npx vitest run src/lib/rag/rag.db.test.ts # retrieval SQL against a real Postgres
BASE_URL=… node scripts/a11y-check.mjs # WCAG 2.2 AA (axe-core) on the main screens
# The suites above create their own firms: run that server with RUNF9_SIGNUP=open. The private beta gate is
# checked against a server in the default invite-only mode with [email protected]:
BASE_URL=… DATABASE_URL=… [email protected] node scripts/e2e-beta.mjs
DATABASE_URL=… node scripts/backup.mjs backups && ADMIN_DATABASE_URL=… node scripts/restore-drill.mjs backups/*.dump
RunF9 is in private beta: sign-up and sign-in are by invitation unless the instance re-opens self sign-up.
| Variable | Purpose |
|---|---|
RUNF9_SIGNUP | Unset (default) or invite_only: sign-up needs an organization invitation or a beta invitation (SSO/SCIM provisioning into an organization and the first account on an empty instance still work), and sign-in needs beta access. open: anyone may sign up and the sign-in gate is off. |
RUNF9_PLATFORM_ADMINS | Comma-separated platform operator emails (case-insensitive). Operators always pass the gate and use Beta access (/dashboard/platform, from the account menu) to invite a new firm (single-use, 14-day link; accepting it creates the firm's organization), revoke invitations, and revoke or restore a person's beta access. Everyone else gets 404 there. |
RUNF9_ACCESS_REQUEST_EMAIL | Address behind the "Request access" links on the landing and sign-in pages (hidden on sign-in when unset). |
Accounts that existed before the gate shipped were grandfathered (migration 18). Organization admins keep inviting their own members as before. See src/lib/server/signup-policy.ts and src/lib/server/beta.ts.
API keys, signed webhooks and the operator settings for email (RESEND_API_KEY/POSTMARK_TOKEN, EMAIL_FROM) and security alerts (RUNF9_ALERT_WEBHOOK_URL) are described in docs/API.md.
RUNF9_AIRGAPPED=true \
LLM_BASE_URL=http://gpu01.enclave.internal:11434/v1 LLM_MODEL=llama3.1:8b \
DATABASE_URL=postgres://[email protected]/runf9 PGSSLMODE=disable \
npm start
Fonts are bundled at build time, so at runtime the app makes no external network calls other than to the configured model host.
For a container deployment (non-root image, Docker Compose with PostgreSQL 17, backups, upgrades, TLS and hardening, every setting) see docs/operations/ON-PREM-INSTALL.md. npm run sbom writes a CycloneDX 1.5 SBOM from package-lock.json without network access. How the application maps to NIST SP 800-171 is in docs/security/NIST-800-171-MAPPING.md.
src/lib/
planning/ types (shared contract), calendar, cpm, elicitation, ai-questions, generator,
overrides, history, evaluation, service
knowledge/ regions (permits, regulations, climate), long-lead, templates, applicability
semantic/ taxonomy (activity + calendar normalization)
analysis/ dcma, input-checks
standards/ versioned rules engine: GAO Schedule Assessment Guide profile, DCMA 14-point adapter,
RunF9 Composite (threshold conflicts reported, never blended); runs stored in standards_runs
parsers/ xer, xml, excel/csv, pdf, index
export/ msp-xml, csv, narrative (Basis of Schedule)
llm/ gateway (provider-agnostic contract + model registry), provider (cloud / local / offline,
air-gap + CUI guard, quotas, audit), adapters: anthropic (default cloud), openai, local
rag/ project documents: extraction, chunking, injection screening, scoped retrieval,
grounding, citation checks, requirement extraction
src/app/
dashboard/plan Build: interview → schedule → evaluation & review → audit
dashboard/quality DCMA + the tool's questions about uploaded data; Standards tab (framework picker)
dashboard/history Firm data: private history, tagging, backtest
api/plans/[id]/... generate, edit, review, export, publish, suggest
Reference ranges for permits, regulations and lead times are planning defaults. Verify them with the Authority Having Jurisdiction and suppliers before baselining.