‹ Reports
The Dispatch

GitHub Repo Analysis: janhq/jan


Executive Summary

The "Jan" project is an open-source, offline alternative to ChatGPT, managed by janhq. It supports multiple AI engines and runs on diverse hardware platforms, including NVIDIA GPUs and Apple M-series chips. The project shows a high level of activity with regular updates, indicating a robust and evolving software solution.

Recent Activity

Team Members and Their Contributions

Risks

Of Note

Quantified Commit Activity Over 14 Days

Developer Avatar Branches PRs Commits Files Changes
Faisal Amir 2 2/2/0 25 112 4001
Van Pham 2 9/9/0 10 9 436
Hoang Ha 2 5/5/0 8 8 238
Louis 1 3/3/0 3 18 228
hiento09 1 7/6/1 5 4 211
NamH 1 1/1/0 1 1 11
eckartal 1 1/1/0 1 1 8
Hien To 1 0/0/0 1 2 5
Mohammed Aldakhil 1 1/1/0 1 1 3
None (Realmbird) 0 1/0/0 0 0 0
Nathan (thunhuanh) 0 1/0/0 0 0 0
Matas Minelga (ashirviskas) 0 1/0/0 0 0 0

PRs: created by that dev and opened/merged/closed-unmerged during the period

Quantified Reports

Quantify commits



Quantified Commit Activity Over 14 Days

Developer Avatar Branches PRs Commits Files Changes
Faisal Amir 2 2/2/0 25 112 4001
Van Pham 2 9/9/0 10 9 436
Hoang Ha 2 5/5/0 8 8 238
Louis 1 3/3/0 3 18 228
hiento09 1 7/6/1 5 4 211
NamH 1 1/1/0 1 1 11
eckartal 1 1/1/0 1 1 8
Hien To 1 0/0/0 1 2 5
Mohammed Aldakhil 1 1/1/0 1 1 3
None (Realmbird) 0 1/0/0 0 0 0
Nathan (thunhuanh) 0 1/0/0 0 0 0
Matas Minelga (ashirviskas) 0 1/0/0 0 0 0

PRs: created by that dev and opened/merged/closed-unmerged during the period

Detailed Reports

Report On: Fetch commits



Project Overview

The software project in question, known as "Jan," is an open-source alternative to ChatGPT that operates entirely offline on a user's computer. The project is managed by the organization "janhq" and is designed to run on various hardware platforms, including NVIDIA GPUs and Apple M-series chips. Jan supports multiple engines like llama.cpp and TensorRT-LLM, enhancing its versatility and performance across different systems.

The project's repository on GitHub shows a high level of activity with numerous commits and updates being pushed regularly. The development trajectory of Jan appears robust, with consistent improvements and expansions in its capabilities. The project maintains a wide array of branches, indicating a structured approach to feature development, testing, and releases.

Team Members and Recent Activities

Van Pham (Van-QA)

  • Recent Commits: Focused on updating package dependencies and version bumps.
  • Files Worked On: Mainly package.json and version.txt files across various directories.
  • Collaborations: Co-authored several commits, indicating collaboration with team members like Hien To.
  • Patterns: Van Pham frequently handles dependency management and version control, crucial for maintaining the project's stability.

Faisal Amir (urmauur)

  • Recent Commits: Worked extensively on UI enhancements and bug fixes related to chat functionalities.
  • Files Worked On: Broad range including ChatMessage.atom.ts, useDeleteThread.ts, and various UI components.
  • Collaborations: Several co-authored commits suggest active collaboration with other developers.
  • Patterns: Shows a strong focus on improving user interface elements and enhancing user interaction experiences.

Hoang Ha (hahuyhoang411)

  • Recent Commits: Primarily involved in updating model configurations and adding new models.
  • Files Worked On: Frequently updates package.json and model JSON files within the resources/models directory.
  • Collaborations: Engages in tasks that seem to require coordination with other team members managing model data.
  • Patterns: Hoang Ha appears to specialize in managing and configuring AI models, an essential part of the Jan project.

Hien To (hiento09)

  • Recent Commits: Focuses on CI/CD workflows, code signing, and build configurations.
  • Files Worked On: Includes GitHub action workflows and electron configuration files.
  • Collaborations: Co-authors commits with other developers, indicating involvement in integrating and testing new changes.
  • Patterns: Plays a critical role in automating processes and ensuring code quality through continuous integration services.

Mohammed Aldakhil (Marco-9456)

  • Recent Commits: Contributed to updating documentation such as the README.md file.
  • Files Worked On: Mainly involved with documentation files.
  • Collaborations: Limited collaboration noted in recent activities.
  • Patterns: Focuses on improving documentation, which is vital for both internal developers and external users.

NamH (namchuai)

  • Recent Commits: Addressed several bug fixes related to application settings and model configurations.
  • Files Worked On: Worked on various TypeScript files related to settings and configuration modals.
  • Collaborations: Some commits are co-authored, showing teamwork in bug fixing and feature enhancements.
  • Patterns: NamH seems to handle critical fixes that enhance the stability and usability of the Jan application.

Conclusions

The development team behind Jan is highly active with clear specialization areas among its members. This structured approach allows efficient handling of different aspects of the project such as UI design, backend management, documentation, and automated processes. Regular updates and collaborative efforts among team members contribute to the robust development trajectory of Jan, ensuring it remains a reliable and effective tool for users seeking an offline AI solution.

Report On: Fetch issues



Recent Activity Analysis

The recent activity in the janhq/jan repository shows a significant number of issues being opened, indicating active development and user engagement. The issues range from feature requests, bug reports, to enhancements for better functionality and user experience.

Notable Issues

  1. Critical Bugs:

    • Issue #2954 and #2953 are related to token limitations and errors in model interactions, which could severely impact user experience and model performance.
    • Issue #2944 regarding an internal server error when using the local API server suggests critical backend problems that need immediate attention.
  2. Feature Requests:

    • Issue #2956 and #2951 both request better organization features for threads and chats, indicating a user need for more sophisticated management tools within the app.
    • Issue #2934 about adding NVIDIA API support post-rework shows ongoing efforts to enhance compatibility and performance.
  3. Recurring Themes:

    • Several issues relate to improving navigation and management within the app, suggesting that users are looking for more intuitive and efficient ways to handle their data and interactions.
    • Compatibility and integration with external models or APIs (like NVIDIA) are also a recurring theme, pointing towards an expansion in the app’s capabilities and user base.

Issue Details

Most Recently Created Issues:

  • #2956: better navigation (Priority: High)
    • Status: Open
    • Created: 0 days ago
  • #2955: Fix overriding ctx over 2048 (Priority: Medium)
    • Status: Open
    • Created: 0 days ago

Most Recently Updated Issues:

  • #2954: bug: HuggingFace model downloads creates JSON file that is missing <|eot_id|> (Priority: High)
    • Status: Open
    • Updated: 0 days ago
  • #2953: bug: Limited to only 2048 tokens on Phi-3 medium 128k (Priority: High)
    • Status: Open
    • Updated: 0 days ago

These issues highlight critical areas needing attention for functionality improvements and bug fixes to enhance user experience and system performance.

Report On: Fetch pull requests



Analysis of Open Pull Requests

Notable Open PRs

  1. PR #2955: Fix overriding ctx over 2048

    • Summary: Fixes an issue where ctx is capped at 2048 in some cases.
    • Concern: The PR is marked as untested, which could introduce risks if merged without proper validation.
    • Related Issue: #2953
  2. PR #2934: Added NVIDIA API to new jan after jan rework

    • Summary: Adds support for Nvidia NIMs remote API.
    • Status: Draft and seems to be incomplete as it mentions closing issues but does not specify which ones.
  3. PR #2908: add time weighted retrieval

    • Summary: Adds Time-weighted Retrieval functionality.
    • Related Issue: Closes #2010
    • Concern: Documentation updates and follow-up issues are unchecked, indicating potential incomplete documentation.
  4. PR #2877: feat: Desktop Revamp

    • Summary: A massive overhaul of the desktop UI addressing multiple issues.
    • Related Issues: Fixes numerous UI-related issues (#2721, #2775, etc.).
    • Concern: The PR is extensive with many commits and file changes, increasing the risk of conflicts or overlooked bugs.
  5. PR #2882: Nvidia extension

    • Summary: Adds an Nvidia extension but is marked as a draft and notes that it is not 100% working due to API errors.
  6. PR #2839: chore: remove scroll to bottom library

    • Summary: Removes a library causing warnings but introduces potential issues with auto-scrolling in modals and logs.
  7. PR #2827: Feat - DRAFT - Support plain text

    • Summary: Attempts to add support for plaintext files but fails during development.
    • Status: Open and appears to be a work in progress with known issues.
  8. PR #2301: feat: onboarding

    • Summary: Implements an onboarding process for new users.
    • Status: Draft and has been open for a long time (78 days), suggesting it may have been deprioritized or abandoned.

Closed PRs Analysis

  • Recent notable closed PRs include:
    • #2946: feat: Support Theme system was merged recently and involved significant changes to theme handling.
    • Multiple version bumps and dependency updates indicate ongoing maintenance and incremental improvements, such as #2940: Bump cortex to 0.4.9.
    • Large merges like #2948: Release/0.4.14 to main show regular pushing of development changes to the main branch, indicating active project progression.

Recommendations

  • For open PRs like #2955, ensure testing is completed before merging to avoid introducing new bugs into the production code.
  • PRs such as #2877 with extensive changes should undergo thorough review and testing, possibly split into smaller parts for easier management.
  • Draft PRs like #2934 and #2882 need clear completion criteria and should be either prioritized for completion or closed if no longer relevant.
  • Monitor the impact of recently merged large changes (e.g., theme system support) closely to catch any unintended consequences early.

Overall, the project shows healthy development activity with regular updates and attention to both new features and maintenance. However, the presence of long-standing open drafts could benefit from re-evaluation to ensure resources are focused effectively.

Report On: Fetch Files For Assessment



Analysis of Source Code Files

web/package.json

  • Purpose: Manages project metadata, scripts, dependencies, and devDependencies for a web application using Next.js.
  • Scripts: Standard development (dev), build (build), and start (start) scripts are present. Linting and formatting scripts are well-defined.
  • Dependencies:
    • Uses a mix of UI libraries like @headlessui/react, @heroicons/react, and tailwindcss suggesting a modern React UI setup.
    • Dependency on next@14.2.3 is explicitly mentioned, which aligns with the update note.
    • Local links to other packages (@janhq/core, @janhq/uikit) indicate a monorepo or closely linked local development environment.
  • DevDependencies:
    • Includes necessary types for TypeScript support and ESLint configurations for Next.js.
    • Build and test tools like jest, typescript, and rollup plugins are appropriately versioned.

web/helpers/atoms/ChatMessage.atom.ts

  • Purpose: Manages state atoms related to chat messages using Jotai, indicating a state management pattern for React components.
  • Functions:
    • Defines multiple atoms for handling chat messages, thread updates, and message deletions.
    • Utilizes functional updates for complex state logic which is a good practice in atomic state management.
  • Code Quality:
    • Good use of TypeScript for type safety.
    • Functions are well-documented with comments explaining the purpose of each atom.

web/hooks/useDeleteThread.ts

  • Purpose: Custom React hook for deleting chat threads, integrating filesystem operations and extension interactions.
  • Complexity:
    • High complexity due to direct filesystem interactions and use of external extension capabilities.
    • Handles both UI state updates and backend operations which might be better separated into different concerns.
  • Error Handling:
    • Basic error handling is present but could be expanded to provide more robust feedback to the user interface.

web/screens/Chat/MessageToolbar/index.tsx

  • Purpose: Provides a UI component for message actions like edit, delete, regenerate, and copy within a chat application.
  • React Patterns:
    • Uses hooks such as useCallback for optimizing re-rendering performance.
    • Proper use of external custom hooks (useSendChatMessage) to abstract complex logic away from the component.
  • UI Components:
    • Conditional rendering based on message status and content type indicates thoughtful UI considerations.

extensions/inference-nitro-extension/package.json

  • Purpose: Manages dependencies and scripts for an inference engine extension, likely used in AI or machine learning contexts.
  • Scripts:
    • Includes platform-specific scripts for downloading binary dependencies, which is crucial for ensuring correct execution environments.
  • Dependencies:
    • Mix of local (@janhq/core) and public dependencies. Use of specific versions suggests careful compatibility management.

extensions/inference-nitro-extension/resources/models/aya-23-35b/model.json

extensions/inference-nitro-extension/resources/models/aya-23-8b/model.json

  • Purpose: Configuration files for specific AI models detailing parameters like temperature, token limits, and model paths.
  • Model Configuration:
    • Both files provide detailed settings that are crucial for the correct operation of AI models in production environments.

extensions/inference-nitro-extension/rollup.config.ts

  • Purpose: Configuration file for Rollup to bundle JavaScript code for the extension.
  • Configuration Details:
    • Extensive use of plugins to handle different file types (JSON, TypeScript) and to replace environment variables dynamically.
    • Multiple entry points suggest a complex build setup that might target different environments or runtime scenarios.

electron/sign.js

  • Purpose: Script for signing code using Azure's signing tool, crucial for ensuring the integrity and origin of the software in distribution.
  • *...

Overall, the codebase demonstrates modern JavaScript practices with a focus on modularity and maintainability. The use of TypeScript across various parts enhances type safety and developer productivity. However, some areas like error handling in asynchronous operations could be further improved.