Skip to content
sanjaibalajeePublic

About

macos orchestrator

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

monday

in-progress macos orchestrator

built with rust for macos automation through mcp protocol and http api

features

  • mcp protocol server (works with claude desktop)
  • http rest api
  • 13 skills: music control, system ops, browser automation
  • message-based architecture
  • capability permissions
  • async execution with timeouts
  • skill chaining (unique - not in system)

skill chaining

monday supports chaining multiple skills in sequence, something system doesn't have. execute workflows like:

{
  "chain": [
    {"skill": "music.play", "params": {"query": "lofi"}},
    {"skill": "system.volume", "params": {"level": 30}},
    {"skill": "system.notify", "params": {"title": "ready", "message": "music started"}}
  ]
}

each skill's output can feed into the next skill's input.

install

requires rust 1.70+

git clone https://github.com/sanjaibalajee/monday.git
cd monday
./scripts/setup.sh

run

http mode:

cd engine
cargo run --release

mcp mode:

cd engine
cargo run --release -- --mcp

claude desktop setup

add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "monday": {
      "command": "/path/to/monday/engine/target/release/monday-engine",
      "args": ["--mcp"]
    }
  }
}

http api examples

list skills:

curl -H "Authorization: Bearer YOUR_TOKEN" \
  http://localhost:7777/skills

execute skill:

curl -X POST http://localhost:7777/execute \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "skill": "music.play",
    "params": {"query": "beatles"}
  }'

chain skills:

curl -X POST http://localhost:7777/chain \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "chain": [
      {"skill": "browser.open", "params": {"url": "https://youtube.com"}},
      {"skill": "system.notify", "params": {"title": "opened", "message": "youtube ready"}}
    ]
  }'

available skills

music (6):

  • music.play - search and play track
  • music.pause - pause playback
  • music.next - next track
  • music.previous - previous track
  • music.current - get current track info
  • music.volume - set music volume

system (4):

  • system.notify - send notification
  • system.screenshot - take screenshot
  • system.clipboard - read clipboard
  • system.volume - set system volume

browser (3):

  • browser.open - open url
  • browser.current_url - get current safari url
  • browser.new_tab - open new tab

configuration

edit config/monday.toml:

[engine]
max_concurrent = 10
timeout_seconds = 30

[security]
auth_token = "your-token-here"
capability_level = "standard"  # unrestricted | standard | strict | minimal

project structure

monday/
├── engine/          # rust engine
│   └── src/
│       ├── core/    # message, result, capability types
│       ├── skills/  # skill implementations
│       ├── orchestrator/  # execution orchestrator
│       └── auth/    # authentication
├── config/          # configuration files
└── scripts/         # build scripts

adding skills

create new skill in engine/src/skills/:

use crate::core::{Capability, ExecutionResult, Message};
use crate::skills::{Skill, SkillCategory, SkillSchema, ParameterType};
use async_trait::async_trait;

struct MySkill;

#[async_trait]
impl Skill for MySkill {
    fn id(&self) -> &str { "category.action" }
    fn name(&self) -> &str { "My Skill" }
    fn description(&self) -> &str { "does something" }
    fn capabilities(&self) -> Vec<Capability> { vec![] }
    fn category(&self) -> SkillCategory { SkillCategory::Custom }
    fn schema(&self) -> SkillSchema { SkillSchema::new() }

    async fn execute(&self, message: Message) -> anyhow::Result<ExecutionResult> {
        Ok(ExecutionResult::success("done"))
    }
}

register in engine/src/orchestrator/mod.rs:

registry.register(Arc::new(MySkill))?;

About

macos orchestrator

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages