shinkai-apps

Shinkai is a two click install AI manager (Ollama compatible for Windows, Mac and Linux). It lets you download/use AI models, RAG, and performs actions for you with tooling (very soon).

OTHER License

Stars
105
Committers
5

https://github.com/dcSpark/shinkai-apps/assets/46382556/010114fb-0ed4-449a-9f27-a266b22b7bdb

Documentation

General Documentation: https://docs.shinkai.com

More In Depth Codebase Documentation (Mutable.ai): https://wiki.mutable.ai/dcSpark/shinkai-apps

Projects

Apps

  • shinkai-visor: Shinkai Visor is a chrome extension to interact with shinkai-node.
  • shinkai-desktop: Shinkai Desktop is a desktop app to interact with shinkai-node.

Libs

  • shinkai-message-ts: Typescript library that implements the features and networking layer to enable systems to interact with shinkai-nodes.
  • shinkai-node-state: Typescript library which using @tanstack/react-query enables apps to interact with shinkai-node managing the state, caching and evictions.
  • shinkai-ui: React UI library to build shinkai apps.

Getting started

To get started first clone this repo:

$ git clone https://github.com/dcSpark/shinkai-apps

Download side binaries:

Macos

ARCH="aarch64-apple-darwin" \
OLLAMA_VERSION="v0.3.12" \
SHINKAI_NODE_VERSION="v0.8.9" \
npx ts-node ./ci-scripts/download-side-binaries.ts

Linux

ARCH="x86_64-unknown-linux-gnu" \
OLLAMA_VERSION="v0.3.12"\
SHINKAI_NODE_VERSION="v0.8.9" \
npx ts-node ./ci-scripts/download-side-binaries.ts

Windows

$ENV:OLLAMA_VERSION="v0.3.12"
$ENV:SHINKAI_NODE_VERSION="v0.8.9"
$ENV:ARCH="x86_64-pc-windows-msvc"
npx ts-node ./ci-scripts/download-side-binaries.ts

Run one of the projects

Once you have done that simply use npm to compile/serve it yourself:

cd shinkai-apps
nvm use
npm ci
npx nx serve {project-name} # IE: npx nx serve shinkai-desktop

Project specific configurations

  • shinkai-visor: As this is a Chrome Extension, after build, developers needs to load it in chrome:

    1. Open Chrome.
    2. Navigate to chrome://extensions.
    3. Enable Developer mode.
    4. Click Load unpacked.
    5. Select the ./dist/apps/shinkai-visor folder which contains the output of the building process using commands like npx nx serve shinkai-visor.
  • shinkai-desktop: For development and building purposes

    • Run as a Desktop App using Vite:
      Run npx nx serve:tauri shinkai-desktop and it will automatically launch the Shinkai Desktop application.
    • Run as a Web App:
      Run npx nx serve shinkai-desktop and open a browser and navigate to http://localhost:1420.

Useful Commands

Every command, if it's needed, build projects and it's dependencies according to the project dependency tree inferred from imports between them.

  • Run a single task

    Command: npx nx [target] [project-name]

    Params:

    • target: build | serve | lint | test | e2e

    IE:

    • npx nx build shinkai-visor
    • npx nx lint shinkai-message-ts
    • npx nx e2e shinkai-visor
    • npx nx serve shinkai-desktop
  • Run many tasks

    Command: npx nx run-many --target=[target]

    Params:

    • target: build | serve | lint | test | e2e

    IE:

    • npx nx run-many --target=build
    • npx nx run-many --target=lint
    • npx nx run-many --target=test
    • npx nx run-many --target=e2e
    • npx nx run-many --target=serve
  • Run on affected projects

    Command: npx nx affected --target=[target]

    Params:

    • target: build | serve | lint | test | e2e

    IE:

    • npx nx affected --target=build

When you build a project, NX builds a cache (to make it faster), if you want to skip it just add the parameter --skip-nx-cache to the previous commands.

Dev conventions

Monorepo

To orchestrate all the tasks, dependencies and hierarchy between different projects, this repository uses NX as a monorepo tooling.

Third party dependencies

All projects share the same base of dependencies defined ./package.json file found in the root of the repository. Nested package json files are used just to override or extends base attributes.

UI Libraries

To build the UI there are 3 core libraries:

  • radix to have base unstyled components.
  • shadcn to obtain ready to use components.
  • tailwindcss to implement css customizations, structures, layouts and helpers.

State management

To implement state management there are two different libraries: