MCPcopy Index your code
hub / github.com/chiriapp/chiri

github.com/chiriapp/chiri @app-v0.9.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release app-v0.9.2 ↗ · + Follow
2,033 symbols 6,052 edges 469 files 48 documented · 2%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README
<img src="https://github.com/chiriapp/chiri/raw/app-v0.9.2/public/icon.png" width="100" />
<h1>Chiri</h1>

🍃 Cross-platform CalDAV-compatible task management app.

<a href="#download">Download</a>
·
<a href="#support">Donate</a>
·
<a href="#compatibility">Compatibility</a>
·
<a href="#code-signing">Code signing</a>
·
<a href="#license">License</a>
·
<a href="#privacy">Privacy</a>
·
<a href="#security">Security</a>

GitHub Repo stars  Total downloads  GitHub Sponsors donation link
 Liberapay donation link  OpenCollective donation link  Patreon donation link

A screenshot of Chiri, a cross-platform CalDAV compatible task management app. The sidebar shows the "RustiCal (chloe)" account with the "Albums to listen to" calendar selected. The tasks are music albums that I plan on listening to, ranging from "Revengeseekerz by Jane Remover" and "Hearth Room by Frost Children" to "girl EDM by Ninajirachi" and "10,000 gecs by 100 gecs".

[!IMPORTANT]
Though the app is functional, it is currently still in active development so you might encounter bugs here and there.
If you do, file a bug report and let me know.

Download

You can download pre-built binaries of the application for each platform below.

Windows

Method 1: via .msi (UAC)

This method installs Chiri to the Program Files directory. Requires UAC.


Method 2: via .exe (Portable)

Pick this if you don't have UAC permissions.


Method 3: via Scoop

scoop bucket add chiri https://github.com/chiriapp/chiri-scoop

scoop install chiri/chiri

macOS

Method 1: via .dmg

Pick the button for your Mac system architecture.


Method 2: via Homebrew

brew install --cask chiri

Method 3: via nix-darwin

From nixpkgs

Use nixpkgs

# flake.nix
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    darwin = {
      url = "github:LnL7/nix-darwin";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };
  outputs = { darwin, ... }: {
    darwinConfigurations.your-macbook = darwin.lib.darwinSystem {
      system = "aarch64-darwin"; # Or "x86_64-darwin"
      modules = [
        ({ pkgs, ... }: {
          environment.systemPackages = [
            pkgs.chiri
          ];
        })
      ];
    };
  };
}

From this repo

On macOS, default uses the signed/notarized bin package to avoid woes with Gatekeeper. Use source to build from source.

Track this repo

# flake.nix
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    darwin = {
      url = "github:LnL7/nix-darwin";
      inputs.nixpkgs.follows = "nixpkgs";
    };
    chiri = {
      url = "github:chiriapp/chiri";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };
  outputs = { darwin, chiri, ... }: {
    darwinConfigurations.your-macbook = darwin.lib.darwinSystem {
      system = "aarch64-darwin"; # Or "x86_64-darwin"
      modules = [
        ({ pkgs, ... }: {
          environment.systemPackages = [
            chiri.packages.${pkgs.system}.default
            # Or: chiri.packages.${pkgs.system}.source
          ];
        })
      ];
    };
  };
}

Linux

Debian (.deb)


Fedora (.rpm)


Arch Linux

Chiri is available on the AUR (Arch User Repository) in two variants:

Building from source

yay -S chiri

Pre-built binary

yay -S chiri-bin

NixOS

Chiri is available from nixpkgs, and this repository also exposes a flake if you want to track master.

From nixpkgs

environment.systemPackages = [
  pkgs.chiri
];

From this repo

NixOS flake example

# flake.nix
{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    chiri = {
      url = "github:chiriapp/chiri";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };
  outputs = { nixpkgs, chiri, ... }: {
    nixosConfigurations.your-hostname = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux"; # Or "aarch64-linux"
      modules = [
        ({ pkgs, ... }: {
          environment.systemPackages = [
            chiri.packages.${pkgs.system}.default
            # Or: chiri.packages.${pkgs.system}.source
          ];
        })
        # ... etc
      ];
    };
  };
}

Home Manager

nix { pkgs, inputs, ... }: { home.packages = [ inputs.chiri.packages.${pkgs.system}.default # Or: inputs.chiri.packages.${pkgs.system}.source ]; }

Support

If you found Chiri useful, please consider donating!

I work on Chiri during my free time as a student, so every amount, however small, helps with rent and food costs. Thank you :)

Compatibility

See COMPATIBILITY.md for compatibility with CalDAV servers and more.

Code signing

Free code signing on Windows is graciously provided by SignPath.io, certificate by the SignPath Foundation.

See CODE_SIGNING.md for the full code signing policy.

License

Chiri is licensed under the zlib/libpng license.

Privacy

See PRIVACY.md for details on what data Chiri processes and how.

Security

Found a security issue? Please report it privately. See SECURITY.md for details.

Extension points exported contracts — how you extend this code

MenuCalendar (Interface)
* creates and sets the macOS application menu * only called on macOS
src/utils/menu.ts
NtfyProviderSubscription (Interface)
* Active local ntfy subscription state.
src/lib/push/ntfyProvider.ts
SortConfig (Interface)
(no doc)
src/types/sort.ts
OfflineBannerProps (Interface)
(no doc)
src/components/OfflineBanner.tsx
NotificationContextValue (Interface)
(no doc)
src/context/notificationContext.ts
PushRequest (Interface)
(no doc)
src/tests/integration/webdav-push.test.ts
CalDAVWarning (Interface)
(no doc)
src/constants/caldav.tsx
UseAppFileDropOptions (Interface)
(no doc)
src/hooks/useAppFileDrop.ts

Core symbols most depended-on inside this repo

error
called by 147
src/lib/logger.ts
makeTask
called by 144
src/tests/fixtures.ts
setState
called by 83
src/context/settingsContext.ts
new
called by 83
src-tauri/src/notifications/state.rs
warn
called by 80
src/lib/logger.ts
info
called by 78
src/lib/logger.ts
load
called by 77
src/lib/store/index.ts
debug
called by 73
src/lib/logger.ts

Shape

Function 1,574
Interface 285
Method 135
Class 37
Enum 2

Languages

TypeScript89%
Rust11%

Modules by API surface

src/lib/database/index.ts72 symbols
src/lib/push/index.ts40 symbols
src/lib/ical/vtodo.ts30 symbols
src/lib/store/tasks.ts29 symbols
src/lib/push/ntfyProvider.ts29 symbols
src/hooks/queries/useUIState.ts29 symbols
src/lib/store/sync.ts27 symbols
src/lib/tauriHttp.ts22 symbols
src/lib/caldav/index.ts21 symbols
src/hooks/ui/useDatePickerKeyboardNavigation.ts21 symbols
src/lib/logger.ts20 symbols
src/lib/database/tasks.ts20 symbols

For agents

$ claude mcp add chiri \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page