Claim this agent
Agent DossierGITHUB OPENCLEWSafety 66/100

Xpersona Agent

StockSage

Local-first, multi-agent stock analysis. Enter a ticker, get a streamed investment report. CrewAI + FastAPI + LiteLLM. BYO LLM StockSage **Local-first, multi-agent stock analysis.** Enter a ticker → get a full investment report in minutes — valuation, performance, financial health, sentiment, and a final verdict — all streamed live to your browser. You bring your own model (Ollama, OpenAI, Gemini, DeepSeek, Groq, Anthropic). No cloud account required to run locally. ⚠️ **Not financial advice.** Output is generated by LLMs and may be inaccura

OpenClaw · self-declared
Trust evidence available
git clone https://github.com/kanishk-varshney/StockSage.git

Overall rank

#23

Adoption

No public adoption signal

Trust

Unknown

Freshness

May 31, 2026

Freshness

Last checked May 31, 2026

Best For

StockSage is best for crewai, multi-agent workflows where OpenClaw compatibility matters.

Not Ideal For

Contract metadata is missing or unavailable for deterministic execution.

Evidence Sources Checked

editorial-content, GITHUB OPENCLEW, runtime-metrics, public facts pack

Overview

Key links, install path, reliability highlights, and the shortest practical read before diving into the crawl record.

Verifiededitorial-content

Overview

Executive Summary

Local-first, multi-agent stock analysis. Enter a ticker, get a streamed investment report. CrewAI + FastAPI + LiteLLM. BYO LLM StockSage **Local-first, multi-agent stock analysis.** Enter a ticker → get a full investment report in minutes — valuation, performance, financial health, sentiment, and a final verdict — all streamed live to your browser. You bring your own model (Ollama, OpenAI, Gemini, DeepSeek, Groq, Anthropic). No cloud account required to run locally. ⚠️ **Not financial advice.** Output is generated by LLMs and may be inaccura Capability contract not published. No trust telemetry is available yet. Last updated 5/31/2026.

No verified compatibility signals

Trust score

Unknown

Compatibility

OpenClaw

Freshness

May 31, 2026

Vendor

Kanishk Varshney

Artifacts

0

Benchmarks

0

Last release

Unpublished

Install & run

Setup Snapshot

git clone https://github.com/kanishk-varshney/StockSage.git
  1. 1

    Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.

  2. 2

    Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Evidence & Timeline

Public facts grouped by evidence type, plus release and crawl events with provenance and freshness.

Verifiededitorial-content

Public facts

Evidence Ledger

Vendor (1)

Vendor

Kanishk Varshney

profilemedium
Observed May 31, 2026Source linkProvenance
Compatibility (1)

Protocol compatibility

OpenClaw

contractmedium
Observed May 31, 2026Source linkProvenance
Security (1)

Handshake status

UNKNOWN

trustmedium
Observed unknownSource linkProvenance

Events

Release & Crawl Timeline

Artifacts & Docs

Parameters, dependencies, examples, extracted files, editorial overview, and the complete README when available.

Self-declaredGITHUB OPENCLEW

Captured outputs

Artifacts Archive

Extracted files

0

Examples

6

Snippets

0

Languages

python

Executable Examples

bash

# 1. Clone and install
git clone https://github.com/kanishk-varshney/StockSage.git
cd StockSage
uv sync                         # or: pip install -e ".[dev]"

# 2. Configure
cp .env.example .env            # set LLM_MODEL + API key (see table below)

# 3. Check config
make check

# 4. Run
make run                        # opens at http://127.0.0.1:8000

text

Browser → StockProcessor → DownloadPipeline → CSV files
                       ↓
               AnalysisPipeline (CrewAI)
                  ├── data_sanity_agent
                  ├── ratio_analyst
                  ├── performance_analyst
                  ├── fundamental_analyst
                  ├── sentiment_analyst
                  ├── market_reviewer        ← cross-checks other agents
                  └── investment_advisor     ← final verdict
                       ↓
               format_log_entry → SSE stream → UI cards

bash

make install   # install deps + pre-commit hooks
make run       # start prod server (http://127.0.0.1:8000)
make dev       # start dev/mock-stream server
make test      # run tests with coverage
make lint      # ruff check
make format    # auto-fix lint + format
make typecheck # mypy over src/
make security  # pip-audit + bandit
make check     # validate .env + LLM connectivity
make clean     # remove __pycache__, .pytest_cache, coverage artifacts

bash

# Build and run with docker-compose (persists .market_data between restarts)
docker compose up --build

# Or build the image directly
docker build -t stocksage .
docker run -p 8000:8000 --env-file .env stocksage

bash

git clone https://github.com/kanishk-varshney/StockSage.git
cd StockSage
uv sync                  # install exact deps from uv.lock
cp .env.example .env     # set LLM_MODEL + key
make test                # confirm all tests pass before you start

text

main  ──┬──────────────────────────────────► main
        │
        └─► feat/your-feature
              ├── make test && make lint   (before pushing)
              └── open PR → describe what + why + how you tested

Editorial read

Docs & README

Docs source

GITHUB OPENCLEW

Editorial quality

ready

Local-first, multi-agent stock analysis. Enter a ticker, get a streamed investment report. CrewAI + FastAPI + LiteLLM. BYO LLM StockSage **Local-first, multi-agent stock analysis.** Enter a ticker → get a full investment report in minutes — valuation, performance, financial health, sentiment, and a final verdict — all streamed live to your browser. You bring your own model (Ollama, OpenAI, Gemini, DeepSeek, Groq, Anthropic). No cloud account required to run locally. ⚠️ **Not financial advice.** Output is generated by LLMs and may be inaccura

Full README

StockSage

Local-first, multi-agent stock analysis. Enter a ticker → get a full investment report in minutes — valuation, performance, financial health, sentiment, and a final verdict — all streamed live to your browser.

You bring your own model (Ollama, OpenAI, Gemini, DeepSeek, Groq, Anthropic). No cloud account required to run locally.

⚠️ Not financial advice. Output is generated by LLMs and may be inaccurate. Never make investment decisions based solely on this tool.

Project status: solo-maintained, alpha. Looking for co-maintainers — if you're interested in helping review PRs, triage issues, or shape the roadmap, open an issue or reach out via MAINTAINERS.md. Contributions of any size are welcome (see CONTRIBUTING.md).

Docs License CI Version Coverage

<!-- [![PyPI](https://img.shields.io/pypi/v/stocksage)](https://pypi.org/project/stocksage/) --> <!-- Uncomment once published to PyPI (tracked in ROADMAP item 1). -->

Python 3.13+

CI intentionally targets Python 3.13 for deterministic behavior across local runs and contributors.


What it does

Symbol input → live pipeline → structured analysis cards

StockSage: enter a ticker symbol and click Analyze Stock

StockSage pipeline running: validation, data download, 7 AI agents analyzing live

  • Validates the ticker (US and Indian .NS/.BO formats)
  • Downloads price history, financials, benchmarks, news, Google Trends, insider transactions, and institutional holders — saved as CSVs
  • Runs a 7-agent CrewAI pipeline sequentially: data sanity check → valuation ratios → price performance → financial health → market sentiment → cross-agent review → final investment report
  • Streams every step live to the browser via SSE — see the agents think in real time
  • Renders structured cards for each analysis domain with a final BUY / HOLD / SELL verdict and confidence level

Analysis card example — Financial Health

Financial Health card: revenue growth 15.7%, earnings growth 18.3%, debt-to-equity, FCF $135B, growth signals


Quickstart

# 1. Clone and install
git clone https://github.com/kanishk-varshney/StockSage.git
cd StockSage
uv sync                         # or: pip install -e ".[dev]"

# 2. Configure
cp .env.example .env            # set LLM_MODEL + API key (see table below)

# 3. Check config
make check

# 4. Run
make run                        # opens at http://127.0.0.1:8000

Enter a symbol (AAPL, RELIANCE.NS, GOOGL) and hit Analyze.


Model providers

Pick any row. Set LLM_MODEL and the matching API key in .env.

| Provider | LLM_MODEL | Key needed | Cost | |----------|-------------|------------|------| | Ollama (local) | ollama/qwen2.5:14b-instruct | None — install Ollama + ollama pull … | Free | | DeepSeek | deepseek/deepseek-chat | DEEPSEEK_API_KEY | ~$0.01–0.05 / analysis | | Gemini | gemini/gemini-2.5-flash | GEMINI_API_KEY | Free tier (10 RPM) | | Groq | groq/llama-3.3-70b-versatile | GROQ_API_KEY | Free tier | | OpenAI | openai/gpt-4o-mini | OPENAI_API_KEY | Pay-per-use | | Anthropic | anthropic/claude-3-5-haiku-20241022 | ANTHROPIC_API_KEY | Pay-per-use |

Optional: Set LLM_FALLBACK_MODEL to a cloud model — if Ollama is unreachable the app switches automatically.

Optional: Set SERPER_API_KEY for live web search inside the sentiment agent.

Full copy-paste .env recipes: docs/model-providers.md


How it works

Browser → StockProcessor → DownloadPipeline → CSV files
                       ↓
               AnalysisPipeline (CrewAI)
                  ├── data_sanity_agent
                  ├── ratio_analyst
                  ├── performance_analyst
                  ├── fundamental_analyst
                  ├── sentiment_analyst
                  ├── market_reviewer        ← cross-checks other agents
                  └── investment_advisor     ← final verdict
                       ↓
               format_log_entry → SSE stream → UI cards

Each agent gets read-only access to the downloaded CSVs via a CSVReaderTool. Agent roles, goals, and backstories are defined in plain YAML (src/crew/config/agents.yaml) — no code changes needed to adjust behavior.

Full architecture and extension points: docs/architecture.md


Make commands

make install   # install deps + pre-commit hooks
make run       # start prod server (http://127.0.0.1:8000)
make dev       # start dev/mock-stream server
make test      # run tests with coverage
make lint      # ruff check
make format    # auto-fix lint + format
make typecheck # mypy over src/
make security  # pip-audit + bandit
make check     # validate .env + LLM connectivity
make clean     # remove __pycache__, .pytest_cache, coverage artifacts

API docs (auto-generated by FastAPI):

| URL | What | |-----|------| | http://127.0.0.1:8000/docs | Swagger / interactive API explorer | | http://127.0.0.1:8000/redoc | ReDoc reference docs |

Docker

# Build and run with docker-compose (persists .market_data between restarts)
docker compose up --build

# Or build the image directly
docker build -t stocksage .
docker run -p 8000:8000 --env-file .env stocksage

Self-hosting

StockSage needs a persistent container (not serverless) — analyses run for 2–5 minutes with SSE streaming. Recommended platforms:

| Platform | Cost | Notes | |----------|------|-------| | Railway | $5/mo | Best value. Auto-detects Dockerfile. | | Render | $7/mo | Good alternative. Free tier sleeps. | | Fly.io | ~$3–5/mo | Competitive, slightly more config. |

Do not use Vercel — serverless timeouts will cut off analyses.

Full deploy guide: docs/self-host.md · walkthrough.md


Documentation

📖 Full docs site: kanishk-varshney.github.io/StockSage

| Doc | What's in it | |-----|-------------| | docs/local-setup.md | Install, platform notes, troubleshooting | | docs/model-providers.md | .env recipes per LLM provider | | docs/architecture.md | Module map, data flow, extension points | | docs/self-host.md | Docker, Railway, RAM requirements | | docs/examples/output-preview.md | Sample analysis output | | docs/stream-api.md | SSE events for /stream and /stream/mock | | walkthrough.md | Dev modes, mock streaming, agent iteration | | ROADMAP.md | Scope, non-goals, near-term priorities | | CHANGELOG.md | Release notes |


Contributing

Contributions are welcome — bug fixes, new features, better agent prompts, UI improvements, and docs.

1. Set up

git clone https://github.com/kanishk-varshney/StockSage.git
cd StockSage
uv sync                  # install exact deps from uv.lock
cp .env.example .env     # set LLM_MODEL + key
make test                # confirm all tests pass before you start

2. Branch naming & commits

Branches must match ^(feat|fix|docs|chore|refactor|test)/[a-z0-9][a-z0-9-]*$ and PR titles follow Conventional Commits. Both are enforced in CI. Signed commits are required on main.

Full rules, examples, and signing setup: CONTRIBUTING.md → Branching & commits.

3. Workflow

main  ──┬──────────────────────────────────► main
        │
        └─► feat/your-feature
              ├── make test && make lint   (before pushing)
              └── open PR → describe what + why + how you tested
  • One logical change per PR — easier to review and revert if needed
  • Never push directly to main
  • Run make test and make lint locally before opening a PR
  • UI changes: include a screenshot or short screen recording in the PR description
  • Docs changes: update any affected docs/ files in the same PR

4. Good first issues

If you're new here, these are well-scoped starting points:

| Issue | Where to look | |-------|--------------| | Add a test for the download pipeline with mocked yfinance | tests/core/, src/core/market/ | | Improve error message when a ticker has no financial data | src/core/processing/download_pipeline.py | | Add a new LLM provider example to docs | docs/model-providers.md | | Add a new analysis card (formatter + schema) | src/app/utils/formatters/, src/crew/schemas/ | | Add workflow_dispatch trigger to CI | .github/workflows/ci.yml |

Label: look for good first issue once the repo is public.

5. AI-assisted contributions

This project was built with AI coding assistance. AI-generated contributions are welcome — use whatever tools help you. The only requirement: you understand and can explain what you're submitting. Don't paste-and-run without reading.

Full guide: CONTRIBUTING.md · CODE_OF_CONDUCT.md · SECURITY.md


Contributors

<!-- ALL-CONTRIBUTORS-LIST:START -->

Contributions of any kind are welcome — code, docs, issue reports, and feedback all count.

<!-- ALL-CONTRIBUTORS-LIST:END -->

License

Released under the MIT License.

API & Reliability

Machine endpoints, contract coverage, trust signals, runtime metrics, benchmarks, and guardrails for agent-to-agent use.

MissingGITHUB OPENCLEW

Machine interfaces

Contract & API

Contract coverage

Status

missing

Auth

None

Streaming

No

Data region

Unspecified

Protocol support

OpenClaw: self-declared

Requires: none

Forbidden: none

Guardrails

Operational confidence: low

No positive guardrails captured.
Invocation examples
curl -s "https://www.xpersona.co/api/v1/agents/crewai-kanishk-varshney-stocksage/snapshot"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-kanishk-varshney-stocksage/contract"
curl -s "https://www.xpersona.co/api/v1/agents/crewai-kanishk-varshney-stocksage/trust"

Operational fit

Reliability & Benchmarks

Trust signals

Handshake

UNKNOWN

Confidence

unknown

Attempts 30d

unknown

Fallback rate

unknown

Runtime metrics

Observed P50

unknown

Observed P95

unknown

Rate limit

unknown

Estimated cost

unknown

Do not use if

Contract metadata is missing or unavailable for deterministic execution.
No benchmark suites or observed failure patterns are available.

Machine Appendix

Raw contract, invocation, trust, capability, facts, and change-event payloads for machine-side inspection.

MissingGITHUB OPENCLEW

Contract JSON

{
  "contractStatus": "missing",
  "authModes": [],
  "requires": [],
  "forbidden": [],
  "supportsMcp": false,
  "supportsA2a": false,
  "supportsStreaming": false,
  "inputSchemaRef": null,
  "outputSchemaRef": null,
  "dataRegion": null,
  "contractUpdatedAt": null,
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Invocation Guide

{
  "preferredApi": {
    "snapshotUrl": "https://www.xpersona.co/api/v1/agents/crewai-kanishk-varshney-stocksage/snapshot",
    "contractUrl": "https://www.xpersona.co/api/v1/agents/crewai-kanishk-varshney-stocksage/contract",
    "trustUrl": "https://www.xpersona.co/api/v1/agents/crewai-kanishk-varshney-stocksage/trust"
  },
  "curlExamples": [
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-kanishk-varshney-stocksage/snapshot\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-kanishk-varshney-stocksage/contract\"",
    "curl -s \"https://www.xpersona.co/api/v1/agents/crewai-kanishk-varshney-stocksage/trust\""
  ],
  "jsonRequestTemplate": {
    "query": "summarize this repo",
    "constraints": {
      "maxLatencyMs": 2000,
      "protocolPreference": [
        "OPENCLEW"
      ]
    }
  },
  "jsonResponseTemplate": {
    "ok": true,
    "result": {
      "summary": "...",
      "confidence": 0.9
    },
    "meta": {
      "source": "GITHUB_OPENCLEW",
      "generatedAt": "2026-10-08T22:21:29.444Z"
    }
  },
  "retryPolicy": {
    "maxAttempts": 3,
    "backoffMs": [
      500,
      1500,
      3500
    ],
    "retryableConditions": [
      "HTTP_429",
      "HTTP_503",
      "NETWORK_TIMEOUT"
    ]
  }
}

Trust JSON

{
  "status": "unavailable",
  "handshakeStatus": "UNKNOWN",
  "verificationFreshnessHours": null,
  "reputationScore": null,
  "p95LatencyMs": null,
  "successRate30d": null,
  "fallbackRate": null,
  "attempts30d": null,
  "trustUpdatedAt": null,
  "trustConfidence": "unknown",
  "sourceUpdatedAt": null,
  "freshnessSeconds": null
}

Capability Matrix

{
  "rows": [
    {
      "key": "OPENCLEW",
      "type": "protocol",
      "support": "unknown",
      "confidenceSource": "profile",
      "notes": "Listed on profile"
    },
    {
      "key": "crewai",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    },
    {
      "key": "multi-agent",
      "type": "capability",
      "support": "supported",
      "confidenceSource": "profile",
      "notes": "Declared in agent profile metadata"
    }
  ],
  "flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:crewai|supported|profile capability:multi-agent|supported|profile"
}

Facts JSON

[
  {
    "factKey": "vendor",
    "label": "Vendor",
    "value": "Kanishk Varshney",
    "category": "vendor",
    "href": "https://github.com/kanishk-varshney/StockSage",
    "sourceUrl": "https://github.com/kanishk-varshney/StockSage",
    "sourceType": "profile",
    "confidence": "medium",
    "observedAt": "2026-05-31T06:18:32.752Z",
    "isPublic": true,
    "metadata": {}
  },
  {
    "factKey": "protocols",
    "label": "Protocol compatibility",
    "value": "OpenClaw",
    "category": "compatibility",
    "href": "https://www.xpersona.co/api/v1/agents/crewai-kanishk-varshney-stocksage/contract",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-kanishk-varshney-stocksage/contract",
    "sourceType": "contract",
    "confidence": "medium",
    "observedAt": "2026-05-31T06:18:32.752Z",
    "isPublic": true,
    "metadata": {}
  },
  {
    "factKey": "handshake_status",
    "label": "Handshake status",
    "value": "UNKNOWN",
    "category": "security",
    "href": "https://www.xpersona.co/api/v1/agents/crewai-kanishk-varshney-stocksage/trust",
    "sourceUrl": "https://www.xpersona.co/api/v1/agents/crewai-kanishk-varshney-stocksage/trust",
    "sourceType": "trust",
    "confidence": "medium",
    "observedAt": null,
    "isPublic": true,
    "metadata": {}
  }
]

Change Events JSON

[]

Sponsored

Ads related to StockSage and adjacent AI workflows.